diff --git a/.gitea/workflows/deploy-portal-live.yml b/.gitea/workflows/deploy-portal-live.yml new file mode 100644 index 00000000..0ca42392 --- /dev/null +++ b/.gitea/workflows/deploy-portal-live.yml @@ -0,0 +1,31 @@ +name: Deploy Sankofa Portal Live + +on: + workflow_dispatch: + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run repo validation gate + run: | + bash scripts/verify/run-all-validation.sh --skip-genesis + + deploy: + needs: validate + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Trigger portal-live deployment + run: | + SHA="$(git rev-parse HEAD)" + BRANCH="$(git rev-parse --abbrev-ref HEAD)" + curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \ + -H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \ + -H "Content-Type: application/json" \ + -d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"portal-live\"}" diff --git a/.gitea/workflows/deploy-to-phoenix.yml b/.gitea/workflows/deploy-to-phoenix.yml index 10689873..50d7cdf2 100644 --- a/.gitea/workflows/deploy-to-phoenix.yml +++ b/.gitea/workflows/deploy-to-phoenix.yml @@ -3,9 +3,21 @@ name: Deploy to Phoenix on: push: branches: [main, master] + workflow_dispatch: jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run repo validation gate + run: | + bash scripts/verify/run-all-validation.sh --skip-genesis + deploy: + needs: validate runs-on: ubuntu-latest steps: - name: Checkout code @@ -13,8 +25,9 @@ jobs: - name: Trigger Phoenix deployment run: | + SHA="$(git rev-parse HEAD)" + BRANCH="$(git rev-parse --abbrev-ref HEAD)" curl -sSf -X POST "${{ secrets.PHOENIX_DEPLOY_URL }}" \ -H "Authorization: Bearer ${{ secrets.PHOENIX_DEPLOY_TOKEN }}" \ -H "Content-Type: application/json" \ - -d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${{ gitea.sha }}\",\"branch\":\"${{ gitea.ref_name }}\"}" - continue-on-error: true + -d "{\"repo\":\"${{ gitea.repository }}\",\"sha\":\"${SHA}\",\"branch\":\"${BRANCH}\",\"target\":\"default\"}" diff --git a/.gitmodules b/.gitmodules index 2d660735..e678abfc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -64,3 +64,7 @@ [submodule "MEV_Bot"] path = MEV_Bot url = https://gitea.d-bis.org/d-bis/MEV_Bot.git +[submodule "atomic-swap-dapp"] + path = atomic-swap-dapp + url = /home/intlc/projects/atomic-swap-dapp.git + # Local bootstrap remote for initial scaffolding; replace with canonical hosted remote before team-wide clone use. diff --git a/atomic-swap-dapp b/atomic-swap-dapp new file mode 160000 index 00000000..d56767e9 --- /dev/null +++ b/atomic-swap-dapp @@ -0,0 +1 @@ +Subproject commit d56767e9b4561cf6b9eedf30ce9223f125253ea3 diff --git a/config/aggregator-route-matrix.csv b/config/aggregator-route-matrix.csv index 389ede7c..296f8392 100644 --- a/config/aggregator-route-matrix.csv +++ b/config/aggregator-route-matrix.csv @@ -20,7 +20,5 @@ liveBridgeRoute,138-WETH-25-ccip,live,bridge,138,25,WETH,0xC02aaA39b223FE8D0A0e5 liveBridgeRoute,138-WETH-42220-ccip,live,bridge,138,42220,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,CCIP,0xcacfd227A040002e49e2e01626363071324f820a,LiFi,,,, liveBridgeRoute,138-WETH-651940-alltra,live,bridge,138,651940,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,,ALT,0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc,LiFi,,,, liveBridgeRoute,138-WETH10-1-ccip,live,bridge,138,1,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,,CCIP,0xe0E93247376aa097dB308B92e6Ba36bA015535D0,LiFi,,,, -blockedOrPlannedRoute,138-compliant-stable-to-weth-bridgeable,blocked,swap-bridge-swap,138,1,cUSDT|cUSDC|cEURT,,,,,,,,,,,"No live public cUSDT/WETH, cUSDC/WETH, or cEURT/WETH pool on Chain 138." blockedOrPlannedRoute,651940-public-dex-routes,planned,swap,651940,651940,,,,,,,,,,,,Uniswap V2/V3 and DODO are env placeholders only; no pool addresses are documented in-repo. -blockedOrPlannedRoute,cw-edge-pools-public-chains,planned,swap,1,43114,,,,,,,,,,,,"cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools." -blockedOrPlannedRoute,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,Wemix bridge is pending funding and deployment. +blockedOrPlannedRoute,138-weth-1111-ccip,planned,bridge,138,1111,,,,,,,,,,,,"Wemix bridge contracts are deployed and destinations are wired, but the 1111 bridge contracts still hold zero LINK and the lane has not been proven by a successful test transfer." diff --git a/config/aggregator-route-matrix.json b/config/aggregator-route-matrix.json index 7ef1580f..4ef5f98f 100644 --- a/config/aggregator-route-matrix.json +++ b/config/aggregator-route-matrix.json @@ -1,102 +1,87 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Canonical route matrix for 1inch/0x/LiFi-style adapter ingestion. Captures live Chain 138 public DEX routes, live bridge lanes, and planned-but-not-live routes that should be filtered out by executors.", - "version": "1.0.0", - "updated": "2026-03-27", + "description": "Planner-v2-generated aggregator route visibility matrix for Chain 138 and approved bridge lanes.", + "version": "2.0.0", + "updated": "2026-04-21T22:30:18.877Z", "homeChainId": 138, "metadata": { "generatedFrom": [ - "docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md", - "docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md", - "config/routing-registry.json", - "config/token-mapping-multichain.json", - "cross-chain-pmm-lps/config/deployment-status.json" + "services/token-aggregation/src/services/route-graph-builder.ts", + "services/token-aggregation/src/config/provider-capabilities.ts", + "services/token-aggregation/src/config/cross-chain-bridges.ts" ], "verification": { - "verifiedAt": "2026-03-27", - "verifiedBy": "scripts/verify/check-pmm-pool-balances-chain138.sh", + "verifiedAt": "2026-04-21T22:30:18.878Z", + "verifiedBy": "services/token-aggregation planner-v2 generator", "rpc": "http://192.168.11.211:8545" }, "adapterNotes": [ - "Executors should ingest only entries with status=live.", - "Entries with status=planned or blocked are included to make missing routes explicit and prevent false discovery.", - "Chain 138 has live DODO PMM pools but no native 1inch/0x support in this repo; adapter layers must map these routes into their own quote/execution abstractions." + "This file is generated from planner-v2 graph and provider capability truth.", + "Partner payload generation should prefer planner-v2 outputs over this visibility artifact when route inputs are available.", + "Only live routes should be considered executable candidates." ] }, "chains": { + "1": { + "name": "Ethereum Mainnet" + }, "138": { - "name": "SMOM-DBIS-138 (DeFi Oracle Meta)", - "rpc": "https://rpc-core.d-bis.org", - "nativeDexes": [ - { - "dexId": "dodo_pmm_chain138", - "type": "dodo_pmm", - "integrationAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "providerAddress": "0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381", - "status": "live" - } - ] + "name": "Chain 138" }, "651940": { - "name": "ALL Mainnet (Alltra)", - "nativeDexes": [ - { - "dexId": "allmainnet_uniswap_v2", - "type": "uniswap_v2", - "status": "planned" - }, - { - "dexId": "allmainnet_uniswap_v3", - "type": "uniswap_v3", - "status": "planned" - }, - { - "dexId": "allmainnet_dodo", - "type": "dodo_pmm", - "status": "planned" - } - ] + "name": "ALL Mainnet" } }, "tokens": { - "138": { - "cUSDT": { - "address": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "decimals": 6 - }, - "cUSDC": { - "address": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", - "decimals": 6 - }, - "USDT": { - "address": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", - "decimals": 6 - }, - "USDC": { - "address": "0x71D6687F38b93CCad569Fa6352c876eea967201b", - "decimals": 6 - }, - "cXAUC": { - "address": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "decimals": 6 - }, - "cEURT": { - "address": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "decimals": 6 - }, - "WETH": { - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "decimals": 18 - }, - "WETH10": { - "address": "0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f", - "decimals": 18 - } + "WETH": { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "decimals": 18, + "kind": "wrapped" + }, + "WETH10": { + "address": "0xf4bb2e28688e89fcce3c0580d37d36a7672e8a9f", + "decimals": 18, + "kind": "wrapped" + }, + "USDT": { + "address": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "decimals": 6, + "kind": "stable" + }, + "USDC": { + "address": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "decimals": 6, + "kind": "stable" + }, + "cUSDT": { + "address": "0x93e66202a11b1772e55407b32b44e5cd8eda7f22", + "decimals": 6, + "kind": "compliant" + }, + "cUSDC": { + "address": "0xf22258f57794cc8e06237084b353ab30fffa640b", + "decimals": 6, + "kind": "compliant" + }, + "cBTC": { + "address": "0xe94260c555ac1d9d3cc9e1632883452ebdf0082e", + "decimals": 8, + "kind": "monetary_unit" + }, + "cEURT": { + "address": "0xdf4b71c61e5912712c1bdd451416b9ac26949d72", + "decimals": 6, + "kind": "compliant" + }, + "cXAUC": { + "address": "0x290e52a8819a4fbd0714e517225429aa2b70ec6b", + "decimals": 6, + "kind": "commodity" } }, "liveSwapRoutes": [ { - "routeId": "138-cUSDT-cUSDC-direct", + "routeId": "chain-138-swap-dodo-v3-weth10-usdt-0x6550a3a5", "status": "live", "aggregatorFamilies": [ "1inch", @@ -105,72 +90,42 @@ ], "fromChainId": 138, "toChainId": 138, - "tokenInSymbol": "cUSDT", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutSymbol": "cUSDC", - "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", - "routeType": "swap", - "hopCount": 1, - "legs": [ - { - "kind": "swap", - "protocol": "dodo_pmm", - "executor": "DODOPMMIntegration", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xff8d3b8fDF7B112759F076B69f4271D4209C0849", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", - "reserves": { - "cUSDT": "10000000.000000", - "cUSDC": "10000000.000000" - } - } - ], - "tags": [ - "stable", - "direct", - "public" - ] - }, - { - "routeId": "138-cUSDT-USDT-direct", - "status": "live", - "aggregatorFamilies": [ - "1inch", - "0x", - "LiFi" - ], - "fromChainId": 138, - "toChainId": 138, - "tokenInSymbol": "cUSDT", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", + "tokenInSymbol": "WETH10", + "tokenInAddress": "0xf4bb2e28688e89fcce3c0580d37d36a7672e8a9f", "tokenOutSymbol": "USDT", - "tokenOutAddress": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", "routeType": "swap", "hopCount": 1, + "label": "DODO V3 / D3MM WETH10 -> USDT", + "intermediateSymbols": [], "legs": [ { "kind": "swap", - "protocol": "dodo_pmm", - "executor": "DODOPMMIntegration", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0x6fc60DEDc92a2047062294488539992710b99D71", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutAddress": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", + "protocol": "dodo_v3", + "executor": "DODO V3 / D3MM", + "executorAddress": "0xc9a11abb7c63d88546be24d58a6d95e3762cb843", + "poolAddress": "0x6550a3a59070061a262a893a1d6f3f490affdbda", + "tokenInAddress": "0xf4bb2e28688e89fcce3c0580d37d36a7672e8a9f", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", "reserves": { - "cUSDT": "10000000.000000", - "USDT": "10000000.000000" + "reserveIn": "1962869492785022013", + "reserveOut": "5078833460" } } ], "tags": [ - "stable", - "official-mirror", - "public" + "planner-v2-generated", + "dodo_v3" + ], + "notes": [ + "Generated from live planner route graph.", + "DODO v3 / D3MM Chain 138 pilot venue.", + "Canonical private pilot pool 0x6550a3a59070061a262a893a1d6f3f490affdbda executes through D3Proxy 0xc9a11abb7c63d88546be24d58a6d95e3762cb843.", + "Planner-v2 exposure and EnhancedSwapRouterV2 internal execution-plan calldata are live for the canonical pilot pair." ] }, { - "routeId": "138-cUSDC-USDC-direct", + "routeId": "chain-138-swap-dodo-v3-usdt-weth10-0x6550a3a5", "status": "live", "aggregatorFamilies": [ "1inch", @@ -179,189 +134,165 @@ ], "fromChainId": 138, "toChainId": 138, - "tokenInSymbol": "cUSDC", - "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenInSymbol": "USDT", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutSymbol": "WETH10", + "tokenOutAddress": "0xf4bb2e28688e89fcce3c0580d37d36a7672e8a9f", + "routeType": "swap", + "hopCount": 1, + "label": "DODO V3 / D3MM USDT -> WETH10", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "dodo_v3", + "executor": "DODO V3 / D3MM", + "executorAddress": "0xc9a11abb7c63d88546be24d58a6d95e3762cb843", + "poolAddress": "0x6550a3a59070061a262a893a1d6f3f490affdbda", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutAddress": "0xf4bb2e28688e89fcce3c0580d37d36a7672e8a9f", + "reserves": { + "reserveIn": "5078833460", + "reserveOut": "1962869492785022013" + } + } + ], + "tags": [ + "planner-v2-generated", + "dodo_v3" + ], + "notes": [ + "Generated from live planner route graph.", + "DODO v3 / D3MM Chain 138 pilot venue.", + "Canonical private pilot pool 0x6550a3a59070061a262a893a1d6f3f490affdbda executes through D3Proxy 0xc9a11abb7c63d88546be24d58a6d95e3762cb843.", + "Planner-v2 exposure and EnhancedSwapRouterV2 internal execution-plan calldata are live for the canonical pilot pair." + ] + }, + { + "routeId": "chain-138-swap-uniswap-v3-weth-usdt", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "WETH", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutSymbol": "USDT", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "routeType": "swap", + "hopCount": 1, + "label": "Uniswap V3 WETH -> USDT", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "uniswap_v3", + "executor": "Uniswap V3", + "executorAddress": "0xde9cd8ee2811e6e64a41d5f68be315d33995975e", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "reserves": { + "reserveIn": "49114042175602566111", + "reserveOut": "107740000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "uniswap_v3" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 upstream-native Uniswap v3 WETH/USDT venue." + ] + }, + { + "routeId": "chain-138-swap-uniswap-v3-usdt-weth", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDT", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutSymbol": "WETH", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "routeType": "swap", + "hopCount": 1, + "label": "Uniswap V3 USDT -> WETH", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "uniswap_v3", + "executor": "Uniswap V3", + "executorAddress": "0xde9cd8ee2811e6e64a41d5f68be315d33995975e", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "reserves": { + "reserveIn": "107740000000", + "reserveOut": "49114042175602566111" + } + } + ], + "tags": [ + "planner-v2-generated", + "uniswap_v3" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 upstream-native Uniswap v3 WETH/USDT venue." + ] + }, + { + "routeId": "chain-138-swap-uniswap-v3-weth-usdc", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "WETH", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "tokenOutSymbol": "USDC", - "tokenOutAddress": "0x71D6687F38b93CCad569Fa6352c876eea967201b", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", "routeType": "swap", "hopCount": 1, + "label": "Uniswap V3 WETH -> USDC", + "intermediateSymbols": [], "legs": [ { "kind": "swap", - "protocol": "dodo_pmm", - "executor": "DODOPMMIntegration", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0x0309178ae30302D83c76d6Dd402a684eF3160eec", - "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", - "tokenOutAddress": "0x71D6687F38b93CCad569Fa6352c876eea967201b", + "protocol": "uniswap_v3", + "executor": "Uniswap V3", + "executorAddress": "0xde9cd8ee2811e6e64a41d5f68be315d33995975e", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", "reserves": { - "cUSDC": "10000000.000000", - "USDC": "10000000.000000" + "reserveIn": "49999999999999991304", + "reserveOut": "105830000000" } } ], "tags": [ - "stable", - "official-mirror", - "public" - ] - }, - { - "routeId": "138-cUSDT-cXAUC-direct", - "status": "live", - "aggregatorFamilies": [ - "1inch", - "0x", - "LiFi" - ], - "fromChainId": 138, - "toChainId": 138, - "tokenInSymbol": "cUSDT", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutSymbol": "cXAUC", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "routeType": "swap", - "hopCount": 1, - "legs": [ - { - "kind": "swap", - "protocol": "dodo_pmm", - "executor": "DODOPMMIntegration", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "reserves": { - "cUSDT": "2666965.000000", - "cXAUC": "519.477000" - } - } - ], - "tags": [ - "xau-hub", - "public" - ] - }, - { - "routeId": "138-cUSDC-cXAUC-direct", - "status": "live", - "aggregatorFamilies": [ - "1inch", - "0x", - "LiFi" - ], - "fromChainId": 138, - "toChainId": 138, - "tokenInSymbol": "cUSDC", - "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", - "tokenOutSymbol": "cXAUC", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "routeType": "swap", - "hopCount": 1, - "legs": [ - { - "kind": "swap", - "protocol": "dodo_pmm", - "executor": "DODOPMMIntegration", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa", - "tokenInAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "reserves": { - "cUSDC": "1000000.000000", - "cXAUC": "194.782554" - } - } - ], - "tags": [ - "xau-hub", - "public" - ] - }, - { - "routeId": "138-cEURT-cXAUC-direct", - "status": "live", - "aggregatorFamilies": [ - "1inch", - "0x", - "LiFi" - ], - "fromChainId": 138, - "toChainId": 138, - "tokenInSymbol": "cEURT", - "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "tokenOutSymbol": "cXAUC", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "routeType": "swap", - "hopCount": 1, - "legs": [ - { - "kind": "swap", - "protocol": "dodo_pmm", - "executor": "DODOPMMIntegration", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf", - "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "reserves": { - "cEURT": "1000000.000000", - "cXAUC": "225.577676" - } - } - ], - "tags": [ - "xau-hub", - "public" - ] - }, - { - "routeId": "138-cEURT-cUSDT-via-cXAUC", - "status": "live", - "aggregatorFamilies": [ - "1inch", - "0x", - "LiFi" - ], - "fromChainId": 138, - "toChainId": 138, - "tokenInSymbol": "cEURT", - "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "tokenOutSymbol": "cUSDT", - "tokenOutAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "routeType": "swap", - "hopCount": 2, - "intermediateSymbols": [ - "cXAUC" - ], - "legs": [ - { - "kind": "swap", - "protocol": "dodo_pmm", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf", - "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b" - }, - { - "kind": "swap", - "protocol": "dodo_pmm", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0", - "tokenInAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "tokenOutAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22" - } - ], - "tags": [ - "multihop", - "xau-hub", - "public" + "planner-v2-generated", + "uniswap_v3" ], "notes": [ - "Inferred from two live public pools." + "Generated from live planner route graph.", + "Chain 138 upstream-native Uniswap v3 WETH/USDC venue." ] }, { - "routeId": "138-cEURT-cUSDC-via-cXAUC", + "routeId": "chain-138-swap-uniswap-v3-usdc-weth", "status": "live", "aggregatorFamilies": [ "1inch", @@ -370,44 +301,39 @@ ], "fromChainId": 138, "toChainId": 138, - "tokenInSymbol": "cEURT", - "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "tokenOutSymbol": "cUSDC", - "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenInSymbol": "USDC", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutSymbol": "WETH", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "routeType": "swap", - "hopCount": 2, - "intermediateSymbols": [ - "cXAUC" - ], + "hopCount": 1, + "label": "Uniswap V3 USDC -> WETH", + "intermediateSymbols": [], "legs": [ { "kind": "swap", - "protocol": "dodo_pmm", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf", - "tokenInAddress": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b" - }, - { - "kind": "swap", - "protocol": "dodo_pmm", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa", - "tokenInAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b" + "protocol": "uniswap_v3", + "executor": "Uniswap V3", + "executorAddress": "0xde9cd8ee2811e6e64a41d5f68be315d33995975e", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "reserves": { + "reserveIn": "105830000000", + "reserveOut": "49999999999999991304" + } } ], "tags": [ - "multihop", - "xau-hub", - "public" + "planner-v2-generated", + "uniswap_v3" ], "notes": [ - "Inferred from two live public pools." + "Generated from live planner route graph.", + "Chain 138 upstream-native Uniswap v3 WETH/USDC venue." ] }, { - "routeId": "138-cUSDT-cUSDC-via-cXAUC", + "routeId": "chain-138-swap-balancer-weth-usdt", "status": "live", "aggregatorFamilies": [ "1inch", @@ -416,263 +342,508 @@ ], "fromChainId": 138, "toChainId": 138, - "tokenInSymbol": "cUSDT", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutSymbol": "cUSDC", - "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b", + "tokenInSymbol": "WETH", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutSymbol": "USDT", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", "routeType": "swap", - "hopCount": 2, - "intermediateSymbols": [ - "cXAUC" - ], + "hopCount": 1, + "label": "Balancer WETH -> USDT", + "intermediateSymbols": [], "legs": [ { "kind": "swap", - "protocol": "dodo_pmm", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0", - "tokenInAddress": "0x93E66202A11B1772E55407B32B44e5Cd8eda7f22", - "tokenOutAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b" - }, - { - "kind": "swap", - "protocol": "dodo_pmm", - "executorAddress": "0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d", - "poolAddress": "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa", - "tokenInAddress": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "tokenOutAddress": "0xf22258f57794CC8E06237084b353Ab30fFfa640b" + "protocol": "balancer", + "executor": "Balancer", + "executorAddress": "0x96423d7c1727698d8a25ebfb88131e9422d1a3c3", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "reserves": { + "reserveIn": "100000000000000000000", + "reserveOut": "210000000000" + } } ], "tags": [ - "multihop", - "xau-hub", - "public", - "alternate" + "planner-v2-generated", + "balancer" ], "notes": [ - "Alternate path to the deeper direct cUSDT/cUSDC pool." + "Generated from live planner route graph.", + "Chain 138 pilot-compatible Balancer USDT/WETH venue." + ] + }, + { + "routeId": "chain-138-swap-balancer-usdt-weth", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDT", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutSymbol": "WETH", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "routeType": "swap", + "hopCount": 1, + "label": "Balancer USDT -> WETH", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "balancer", + "executor": "Balancer", + "executorAddress": "0x96423d7c1727698d8a25ebfb88131e9422d1a3c3", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "reserves": { + "reserveIn": "210000000000", + "reserveOut": "100000000000000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "balancer" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible Balancer USDT/WETH venue." + ] + }, + { + "routeId": "chain-138-swap-balancer-weth-usdc", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "WETH", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutSymbol": "USDC", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "routeType": "swap", + "hopCount": 1, + "label": "Balancer WETH -> USDC", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "balancer", + "executor": "Balancer", + "executorAddress": "0x96423d7c1727698d8a25ebfb88131e9422d1a3c3", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "reserves": { + "reserveIn": "100000000000000000000", + "reserveOut": "210000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "balancer" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible Balancer USDC/WETH venue." + ] + }, + { + "routeId": "chain-138-swap-balancer-usdc-weth", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDC", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutSymbol": "WETH", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "routeType": "swap", + "hopCount": 1, + "label": "Balancer USDC -> WETH", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "balancer", + "executor": "Balancer", + "executorAddress": "0x96423d7c1727698d8a25ebfb88131e9422d1a3c3", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "reserves": { + "reserveIn": "210000000000", + "reserveOut": "100000000000000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "balancer" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible Balancer USDC/WETH venue." + ] + }, + { + "routeId": "chain-138-swap-curve-usdt-usdc", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDT", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutSymbol": "USDC", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "routeType": "swap", + "hopCount": 1, + "label": "Curve USDT -> USDC", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "curve", + "executor": "Curve", + "executorAddress": "0xe440ec15805be4c7babcd17a63b8c8a08a492e0f", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "reserves": { + "reserveIn": "500000000000", + "reserveOut": "500000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "curve" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible Curve 3Pool stable/stable venue." + ] + }, + { + "routeId": "chain-138-swap-curve-usdc-usdt", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDC", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutSymbol": "USDT", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "routeType": "swap", + "hopCount": 1, + "label": "Curve USDC -> USDT", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "curve", + "executor": "Curve", + "executorAddress": "0xe440ec15805be4c7babcd17a63b8c8a08a492e0f", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "reserves": { + "reserveIn": "500000000000", + "reserveOut": "500000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "curve" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible Curve 3Pool stable/stable venue." + ] + }, + { + "routeId": "chain-138-swap-one-inch-weth-usdt", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "WETH", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutSymbol": "USDT", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "routeType": "swap", + "hopCount": 1, + "label": "1inch WETH -> USDT", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "one_inch", + "executor": "1inch", + "executorAddress": "0x500b84b1bc6f59c1898a5fe538ea20a758757a4f", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "reserves": { + "reserveIn": "100000000000000000000", + "reserveOut": "210000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "one_inch" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible 1inch router lane." + ] + }, + { + "routeId": "chain-138-swap-one-inch-usdt-weth", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDT", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutSymbol": "WETH", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "routeType": "swap", + "hopCount": 1, + "label": "1inch USDT -> WETH", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "one_inch", + "executor": "1inch", + "executorAddress": "0x500b84b1bc6f59c1898a5fe538ea20a758757a4f", + "tokenInAddress": "0x004b63a7b5b0e06f6bb6adb4a5f9f590bf3182d1", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "reserves": { + "reserveIn": "210000000000", + "reserveOut": "100000000000000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "one_inch" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible 1inch router lane." + ] + }, + { + "routeId": "chain-138-swap-one-inch-weth-usdc", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "WETH", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutSymbol": "USDC", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "routeType": "swap", + "hopCount": 1, + "label": "1inch WETH -> USDC", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "one_inch", + "executor": "1inch", + "executorAddress": "0x500b84b1bc6f59c1898a5fe538ea20a758757a4f", + "tokenInAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "tokenOutAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "reserves": { + "reserveIn": "100000000000000000000", + "reserveOut": "210000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "one_inch" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible 1inch router lane." + ] + }, + { + "routeId": "chain-138-swap-one-inch-usdc-weth", + "status": "live", + "aggregatorFamilies": [ + "1inch", + "0x", + "LiFi" + ], + "fromChainId": 138, + "toChainId": 138, + "tokenInSymbol": "USDC", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutSymbol": "WETH", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "routeType": "swap", + "hopCount": 1, + "label": "1inch USDC -> WETH", + "intermediateSymbols": [], + "legs": [ + { + "kind": "swap", + "protocol": "one_inch", + "executor": "1inch", + "executorAddress": "0x500b84b1bc6f59c1898a5fe538ea20a758757a4f", + "tokenInAddress": "0x71d6687f38b93ccad569fa6352c876eea967201b", + "tokenOutAddress": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "reserves": { + "reserveIn": "210000000000", + "reserveOut": "100000000000000000000" + } + } + ], + "tags": [ + "planner-v2-generated", + "one_inch" + ], + "notes": [ + "Generated from live planner route graph.", + "Chain 138 pilot-compatible 1inch router lane." ] } ], "liveBridgeRoutes": [ { - "routeId": "138-WETH-1-ccip", + "routeId": "bridge-138-1-cusdt-universalccipbridge", "status": "live", "aggregatorFamilies": [ + "1inch", + "0x", "LiFi" ], "fromChainId": 138, "toChainId": 1, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "assetSymbol": "cUSDT", + "assetAddress": "0x93e66202a11b1772e55407b32b44e5cd8eda7f22", "routeType": "bridge", "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" + "bridgeAddress": "0xcd42e8ed79dc50599535d1de48d3dafa0be156f8", + "label": "UniversalCCIPBridge cUSDT 138 -> 1", + "tags": [ + "planner-v2-generated", + "bridge" + ], + "notes": [ + "Generated from bridge registry and planner visibility.", + "Registry route UniversalCCIPBridge" + ] }, { - "routeId": "138-WETH-56-ccip", + "routeId": "bridge-138-1-cusdc-universalccipbridge", "status": "live", "aggregatorFamilies": [ + "1inch", + "0x", "LiFi" ], "fromChainId": 138, - "toChainId": 56, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "toChainId": 1, + "assetSymbol": "cUSDC", + "assetAddress": "0xf22258f57794cc8e06237084b353ab30fffa640b", "routeType": "bridge", "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-137-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" + "bridgeAddress": "0xcd42e8ed79dc50599535d1de48d3dafa0be156f8", + "label": "UniversalCCIPBridge cUSDC 138 -> 1", + "tags": [ + "planner-v2-generated", + "bridge" ], - "fromChainId": 138, - "toChainId": 137, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" + "notes": [ + "Generated from bridge registry and planner visibility.", + "Registry route UniversalCCIPBridge" + ] }, { - "routeId": "138-WETH-10-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 10, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-42161-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 42161, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-43114-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 43114, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-8453-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 8453, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-100-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 100, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-25-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 25, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-42220-ccip", - "status": "live", - "aggregatorFamilies": [ - "LiFi" - ], - "fromChainId": 138, - "toChainId": 42220, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xcacfd227A040002e49e2e01626363071324f820a", - "label": "CCIPWETH9Bridge" - }, - { - "routeId": "138-WETH-651940-alltra", + "routeId": "bridge-138-651940-cusdt-alltraadapter", "status": "live", "aggregatorFamilies": [ + "1inch", + "0x", "LiFi" ], "fromChainId": 138, "toChainId": 651940, - "assetSymbol": "WETH", - "assetAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "assetSymbol": "cUSDT", + "assetAddress": "0x93e66202a11b1772e55407b32b44e5cd8eda7f22", "routeType": "bridge", "bridgeType": "ALT", - "bridgeAddress": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc", - "label": "AlltraAdapter" + "bridgeAddress": "0x66feba2fc9a0b47f26dd4284dad24f970436b8dc", + "label": "AlltraAdapter cUSDT 138 -> 651940", + "tags": [ + "planner-v2-generated", + "bridge" + ], + "notes": [ + "Generated from bridge registry and planner visibility.", + "Registry route AlltraAdapter" + ] }, { - "routeId": "138-WETH10-1-ccip", + "routeId": "bridge-138-651940-cusdc-alltraadapter", "status": "live", "aggregatorFamilies": [ + "1inch", + "0x", "LiFi" ], "fromChainId": 138, - "toChainId": 1, - "assetSymbol": "WETH10", - "assetAddress": "0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f", + "toChainId": 651940, + "assetSymbol": "cUSDC", + "assetAddress": "0xf22258f57794cc8e06237084b353ab30fffa640b", "routeType": "bridge", - "bridgeType": "CCIP", - "bridgeAddress": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0", - "label": "CCIPWETH10Bridge" + "bridgeType": "ALT", + "bridgeAddress": "0x66feba2fc9a0b47f26dd4284dad24f970436b8dc", + "label": "AlltraAdapter cUSDC 138 -> 651940", + "tags": [ + "planner-v2-generated", + "bridge" + ], + "notes": [ + "Generated from bridge registry and planner visibility.", + "Registry route AlltraAdapter" + ] } ], - "blockedOrPlannedRoutes": [ - { - "routeId": "138-compliant-stable-to-weth-bridgeable", - "status": "blocked", - "fromChainId": 138, - "toChainId": 1, - "tokenInSymbols": [ - "cUSDT", - "cUSDC", - "cEURT" - ], - "routeType": "swap-bridge-swap", - "reason": "No live public cUSDT/WETH, cUSDC/WETH, or cEURT/WETH pool on Chain 138." - }, - { - "routeId": "651940-public-dex-routes", - "status": "planned", - "fromChainId": 651940, - "toChainId": 651940, - "routeType": "swap", - "reason": "Uniswap V2/V3 and DODO are env placeholders only; no pool addresses are documented in-repo." - }, - { - "routeId": "cw-edge-pools-public-chains", - "status": "planned", - "fromChainId": 1, - "toChainId": 43114, - "routeType": "swap", - "reason": "cW* token addresses exist on several public chains, but deployment-status.json contains no PMM pools." - }, - { - "routeId": "138-weth-1111-ccip", - "status": "planned", - "fromChainId": 138, - "toChainId": 1111, - "routeType": "bridge", - "reason": "Wemix bridge is pending funding and deployment." - } - ] + "blockedOrPlannedRoutes": [] } diff --git a/config/allmainnet-non-dodo-protocol-surface.json b/config/allmainnet-non-dodo-protocol-surface.json new file mode 100644 index 00000000..8c19b824 --- /dev/null +++ b/config/allmainnet-non-dodo-protocol-surface.json @@ -0,0 +1,161 @@ +{ + "name": "ALL Mainnet Non-DODO Protocol Surface", + "version": "0.1.0", + "updated": "2026-04-21", + "chainId": 651940, + "network": "ALL Mainnet (Alltra)", + "status": "bridge_live_swap_inventory_pending", + "summary": { + "bridgeOnlyLive": true, + "sameChainSwapInventoryPublished": false, + "notes": [ + "The Chain 138 <-> 651940 AlltraAdapter bridge is live.", + "This file documents the known non-DODO Alltra protocol and token surface without asserting live routable pool inventory.", + "Promote protocols here into canonical route inventory only after real factory/router/pool addresses are committed and verified." + ] + }, + "documentedTokens": [ + { + "symbol": "AUSDT", + "address": "0x015B1897Ed5279930bC2Be46F661894d219292A6", + "decimals": 18, + "category": "stablecoin", + "status": "verified" + }, + { + "symbol": "USDT", + "address": "0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e", + "decimals": 18, + "category": "stablecoin", + "status": "verified" + }, + { + "symbol": "USDC", + "address": "0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881", + "decimals": 18, + "category": "stablecoin", + "status": "verified" + }, + { + "symbol": "WETH", + "address": "0x798F6762BB40d6801A593459d08F890603D3979C", + "decimals": 18, + "category": "wrapped-native", + "status": "verified" + }, + { + "symbol": "WALL", + "address": "0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4", + "decimals": 18, + "category": "wrapped-native", + "status": "verified" + }, + { + "symbol": "HYDX", + "address": "0x0d9793861AEB9244AD1B34375a83A6730F6AdD38", + "decimals": 18, + "category": "dex-token", + "status": "verified" + }, + { + "symbol": "HYBX", + "address": "0x1839f77eBed7F388c7035f7061B4B8Ef0E72317a", + "decimals": 8, + "category": "defi-token", + "status": "verified" + }, + { + "symbol": "CHT", + "address": "0xE59Bb804F4884FcEA183a4A67B1bb04f4a4567bc", + "decimals": 8, + "category": "defi-token", + "status": "verified" + }, + { + "symbol": "AUDA", + "address": "0x690740f055A41FA7669f5a379Bf71B0cDF353073", + "decimals": 18, + "category": "defi-token", + "status": "verified" + } + ], + "protocols": [ + { + "name": "AlltraDEX / EnhancedSwapRouter", + "family": "custom_router", + "status": "documented_inventory_pending", + "factoryAddress": null, + "routerAddress": null, + "notes": [ + "Documented in docs/11-references/ALL_MAINNET_ROUTING_ENGINE.md as the intended same-chain swap surface.", + "No committed canonical factory/router/pool inventory is currently published in-repo." + ] + }, + { + "name": "HYDX", + "family": "custom_router", + "status": "token_present_protocol_surface_pending", + "factoryAddress": null, + "routerAddress": null, + "envKeys": [ + "CHAIN_651940_HYDX_FACTORY", + "CHAIN_651940_HYDX_ROUTER", + "CHAIN_651940_HYDX_START_BLOCK", + "CHAIN_651940_HYDX_PAIR_CREATED_EVENT" + ], + "notes": [ + "The HYDX token is documented and verified on ALL Mainnet.", + "The repo expects factory/router discovery via env, but no canonical pool inventory is currently committed." + ] + }, + { + "name": "Uniswap V2", + "family": "uniswap_v2", + "status": "env_placeholder_only", + "factoryAddress": null, + "routerAddress": null, + "notes": [ + "Referenced in token-aggregation dex-factory config and docs as an env-driven surface.", + "Do not treat as routable until real factory/router/pair addresses are committed." + ] + }, + { + "name": "Uniswap V3", + "family": "uniswap_v3", + "status": "env_placeholder_only", + "factoryAddress": null, + "routerAddress": null, + "notes": [ + "Referenced in token-aggregation dex-factory config and docs as an env-driven surface.", + "Do not treat as routable until real factory/router/pool addresses are committed." + ] + }, + { + "name": "DODO PMM", + "family": "dodo_pmm", + "status": "env_placeholder_only", + "factoryAddress": null, + "routerAddress": null, + "notes": [ + "Mentioned in docs as placeholder-only for ALL Mainnet.", + "No committed DODO PMM pool inventory is currently published for chain 651940." + ] + } + ], + "bridgeSurface": { + "adapter": { + "name": "AlltraAdapter", + "address": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc", + "status": "live" + }, + "supportedBridgeAssets": [ + "cUSDC", + "cUSDT" + ] + }, + "nextTasks": [ + "Publish real same-chain pool inventory before promoting ALL Mainnet beyond bridge-live inventory.", + "Commit canonical factory/router metadata once HYDX or AlltraDEX routing addresses are confirmed.", + "Add pool-level addresses and verification artifacts before enabling public route generation from this protocol surface." + ] +} diff --git a/config/extraction/mainnet-cwusdc-usdc-support-policy.json b/config/extraction/mainnet-cwusdc-usdc-support-policy.json index e87ef9b0..bc67399f 100644 --- a/config/extraction/mainnet-cwusdc-usdc-support-policy.json +++ b/config/extraction/mainnet-cwusdc-usdc-support-policy.json @@ -34,20 +34,22 @@ "managedCycle": { "defaultHarvestSurplus": true, "defaultGasHoldbackTargetRaw": 0, + "maxAutomatedFlashQuoteAmountRaw": 2964298, "quoteAmountByDeviationBps": [ { "minDeviationBps": 150, - "flashQuoteAmountRaw": 250000000 + "flashQuoteAmountRaw": 2964298 }, { "minDeviationBps": 75, - "flashQuoteAmountRaw": 100000000 + "flashQuoteAmountRaw": 1482149 } ] }, "notes": [ "The public Uniswap V2 pair is for visible routing and discovery, not for hard parity guarantees on its own.", "When the public pair drifts beyond the intervention corridor, use the managed DODO quote-push stack as the first automated defense path.", - "Do not trust POOL_CWUSDC_USDC_MAINNET from dotenv blindly; this policy is the canonical defended venue binding." + "Do not trust POOL_CWUSDC_USDC_MAINNET from dotenv blindly; this policy is the canonical defended venue binding.", + "Automation is capped to the currently tested safe tranche until the defended lane is explicitly re-sized from fresh liquidity measurements." ] } diff --git a/config/routing-registry.json b/config/routing-registry.json index 47f1b833..31852e33 100644 --- a/config/routing-registry.json +++ b/config/routing-registry.json @@ -35,10 +35,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0xc9901ce2Ddb6490FAA183645147a87496d8b20B6", "bridgeChainId": 1, - "label": "CCIPWETH9Bridge", - "note": "Set to MAINNET_CCIP_WETH9_BRIDGE from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -54,10 +53,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4", "bridgeChainId": 56, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_BSC from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -73,10 +71,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0xF7736443f02913e7e0773052103296CfE1637448", "bridgeChainId": 137, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_POLYGON from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -92,10 +89,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0x6e94e53F73893b2a6784Df663920D31043A6dE07", "bridgeChainId": 10, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_OPTIMISM from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -111,10 +107,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0x937824f2516fa58f25aeAb92E7BFf7D74F463B4c", "bridgeChainId": 42161, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_ARBITRUM from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -130,10 +125,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4", "bridgeChainId": 43114, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_AVALANCHE from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -149,10 +143,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0x24293CA562aE1100E60a4640FF49bd656cFf93B4", "bridgeChainId": 8453, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_BASE from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -168,10 +161,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0xc8656F24488cb90c452058da92d1a25BA464eaAE", "bridgeChainId": 100, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_GNOSIS from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -187,10 +179,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0x3Cc23d086fCcbAe1e5f3FE2bA4A263E1D27d8Cab", "bridgeChainId": 25, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_CRONOS from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -206,10 +197,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0xAb57BF30F1354CA0590af22D8974c7f24DB2DbD7", "bridgeChainId": 42220, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_CELO from .env" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, @@ -225,10 +215,9 @@ "toChain": 138, "asset": "WETH", "pathType": "CCIP", - "bridgeAddress": "0x0000000000000000000000000000000000000000", + "bridgeAddress": "0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04", "bridgeChainId": 1111, - "label": "CCIPWETH9Bridge", - "note": "Set to CCIPWETH9_BRIDGE_WEMIX from .env when deployed" + "label": "CCIPWETH9Bridge" }, { "fromChain": 138, diff --git a/config/solana-gru-bridge-lineup.json b/config/solana-gru-bridge-lineup.json index 64eb68d8..ec7cb6db 100644 --- a/config/solana-gru-bridge-lineup.json +++ b/config/solana-gru-bridge-lineup.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "description": "Operator lineup: Chain 138 canonical GRU assets → Solana SPL bridge targets (cW* / WETH). Populate solanaMint when mints exist. Source addresses: docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md §2.", + "description": "Operator lineup: Chain 138 canonical GRU assets plus live-confirmed Solana corridor evidence → Solana SPL bridge targets (cW* / WETH). Populate solanaMint when mints exist. Source addresses: docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md §2.", "version": "1.0.0", - "updated": "2026-04-18", - "status": "lineup_defined_relay_and_mints_outstanding", + "updated": "2026-04-19", + "status": "partial_live_causdt_lane_confirmed_lineup_and_mints_still_outstanding", "references": { "canonicalCrosscheck": "docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md", "tokenMapping": "config/token-mapping-multichain.json", @@ -19,12 +19,39 @@ "cluster": "mainnet-beta", "hubStablesNote": "Resolve SPL USDC (primary) and USDT mints for edge liquidity; not EVM hub addresses — see cross-chain-pmm-lps/config/chains.json nonEvm.Solana" }, + "liveBridgeEvidence": { + "chain138Symbol": "cAUSDT", + "solanaSymbol": "cWAUSDT", + "chain138Address": "0x5fdDF65733e3d590463F68f93Cf16E8c04081271", + "solanaAdapter": "0x8244a5c27C0eA32fb8cB324131a04dC9F4E433f7", + "evidenceDate": "2026-04-16", + "mintedRaw": "22000000", + "bridgedRaw": "9000000", + "bridgeRequestId": "0x69035dfb7c0af5447da6104a8c09aa6bac7b19695517441014dda3c687d4550d", + "finalStatus": 2, + "finalStatusLabel": "Confirmed", + "transactions": { + "mint": "0x8d18b8df7024418bf167cc80d11e0425b0c81507ace13326973951f3dfd0f6f8", + "bridge": "0x4f6368754a5b55a43f8dae4e645bf67e9cf6c9c64bfdadb4625508c351d64319", + "confirm": "0x6cce9a740d170278c95e494052e1b031b394d1d807df05ba3bad55030a36fc68" + }, + "notes": "Confirmed live Chain 138 -> Solana send/confirm for the AUSDT corridor. Full canonical Solana SPL mint inventory is still being populated." + }, "bridgeModel": { "sourceRole": "canonical c* (and WETH) on Chain 138", "destinationRole": "SPL mints for bridge-wrapped symbols per token-mapping nonEvmNetworks.Solana.assetRepresentationModel", "naming": "c* on 138 → cW* on Solana for fiat-stable GRU assets; WETH remains WETH (wrapped ETH representation on Solana)" }, "assets": [ + { + "chain138Symbol": "cAUSDT", + "solanaSymbol": "cWAUSDT", + "decimals": 6, + "chain138Address": "0x5fdDF65733e3d590463F68f93Cf16E8c04081271", + "solanaMint": null, + "deploymentStatus": "confirmed_live_send_confirm_mint_address_pending", + "evidenceRef": "liveBridgeEvidence" + }, { "chain138Symbol": "WETH", "solanaSymbol": "WETH", diff --git a/config/token-mapping-multichain.json b/config/token-mapping-multichain.json index 663d4369..fff56fc9 100644 --- a/config/token-mapping-multichain.json +++ b/config/token-mapping-multichain.json @@ -1,8 +1,8 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", "description": "Multi-chain token mapping: Chain 138↔651940 (ALL Mainnet) and 651940↔1,56,137,100,43114,8453,42161,10,25,42220,1111. Single source of truth for bridge/LP tooling. Verify canonical addresses per chain: see docs/07-ccip/EXPLORER_TOKENS_CANONICAL_MAPPING.md.", - "version": "1.1.0", - "updated": "2026-02-27", + "version": "1.2.0", + "updated": "2026-04-19", "cToCwSymbolMapping": { "cUSDT": "cWUSDT", "cUSDC": "cWUSDC", @@ -26,10 +26,10 @@ "137": "Polygon", "138": "SMOM-DBIS-138 (DeFi Oracle Meta)", "1111": "Wemix", - "42793": "Etherlink", "8453": "Base", "42161": "Arbitrum One", "42220": "Celo", + "42793": "Etherlink", "43114": "Avalanche C-Chain", "651940": "ALL Mainnet (Alltra)" }, @@ -442,70 +442,70 @@ "key": "Compliant_EURC_cW", "name": "cEURC→cWEURC", "addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a", - "addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66", + "addressTo": "0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef", "notes": "138 cEURC → Gnosis cWEURC; set when deployed" }, { "key": "Compliant_EURT_cW", "name": "cEURT→cWEURT", "addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427", + "addressTo": "0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9", "notes": "138 cEURT → cWEURT" }, { "key": "Compliant_GBPC_cW", "name": "cGBPC→cWGBPC", "addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2", - "addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036", + "addressTo": "0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4", "notes": "138 cGBPC → cWGBPC" }, { "key": "Compliant_GBPT_cW", "name": "cGBPT→cWGBPT", "addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c", - "addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd", + "addressTo": "0x9f6d2578003fe04e58a9819a4943732f2a203a61", "notes": "138 cGBPT → cWGBPT" }, { "key": "Compliant_AUDC_cW", "name": "cAUDC→cWAUDC", "addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D", - "addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29", + "addressTo": "0xddc4063f770f7c49d00b5a10fb552e922aa39b2c", "notes": "138 cAUDC → cWAUDC" }, { "key": "Compliant_JPYC_cW", "name": "cJPYC→cWJPYC", "addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770", - "addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68", + "addressTo": "0x145e8e8c49b6a021969dd9d2c01c8fea44374f61", "notes": "138 cJPYC → cWJPYC" }, { "key": "Compliant_CHFC_cW", "name": "cCHFC→cWCHFC", "addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885", - "addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B", + "addressTo": "0x46d90d7947f1139477c206c39268923b99cf09e4", "notes": "138 cCHFC → cWCHFC" }, { "key": "Compliant_CADC_cW", "name": "cCADC→cWCADC", "addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679", - "addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB", + "addressTo": "0xa7133c78e0ec74503a5941bcbd44257615b6b4f6", "notes": "138 cCADC → cWCADC" }, { "key": "Compliant_XAUC_cW", "name": "cXAUC→cWXAUC", "addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "addressTo": "0x328Cd365Bb35524297E68ED28c6fF2C9557d1363", + "addressTo": "0x23873b85cfeb343eb952618e8c9e9bfb7f6a0d45", "notes": "138 cXAUC → cWXAUC" }, { "key": "Compliant_XAUT_cW", "name": "cXAUT→cWXAUT", "addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", - "addressTo": "0x9e6044d730d4183bF7a666293d257d035Fba6d44", + "addressTo": "0xc6189d404dc60cae7b48e2190e44770a03193e5f", "notes": "138 cXAUT → cWXAUT" } ] @@ -554,70 +554,70 @@ "key": "Compliant_EURC_cW", "name": "cEURC→cWEURC", "addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a", - "addressTo": "0x61D642979eD75c1325f35b9275C5A7FE97F22451", + "addressTo": "0x84353ed1f0c7a703a17abad19b0db15bc9a5e3e5", "notes": "138 cEURC → Avalanche cWEURC; set when deployed" }, { "key": "Compliant_EURT_cW", "name": "cEURT→cWEURT", "addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "addressTo": "0x30751782486eed825187C1EAe5DE4b4baD428AaE", + "addressTo": "0xfc7d256e48253f7a7e08f0e55b9ff7039eb2524c", "notes": "138 cEURT → cWEURT" }, { "key": "Compliant_GBPC_cW", "name": "cGBPC→cWGBPC", "addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2", - "addressTo": "0xb0FA7ec4123C7c275B3a89d9239569707Ea3C66A", + "addressTo": "0xbdf0c4ea1d81e8e769b0f41389a2c733e3ff723e", "notes": "138 cGBPC → cWGBPC" }, { "key": "Compliant_GBPT_cW", "name": "cGBPT→cWGBPT", "addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c", - "addressTo": "0x6389a643e71F000FC4ce5a0d58fDC4a40AD68EBE", + "addressTo": "0x4611d3424e059392a52b957e508273bc761c80f2", "notes": "138 cGBPT → cWGBPT" }, { "key": "Compliant_AUDC_cW", "name": "cAUDC→cWAUDC", "addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D", - "addressTo": "0x528376e3a4bAAE78F7F4D0E9aDB75eFA9942373E", + "addressTo": "0x04e1e22b0d41e99f4275bd40a50480219bc9a223", "notes": "138 cAUDC → cWAUDC" }, { "key": "Compliant_JPYC_cW", "name": "cJPYC→cWJPYC", "addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770", - "addressTo": "0xCF9D867DA220c6B4756BeDC6888dDac3a0463AEa", + "addressTo": "0x3714b1a312e0916c7dcdc4edf480fc0339e59a59", "notes": "138 cJPYC → cWJPYC" }, { "key": "Compliant_CHFC_cW", "name": "cCHFC→cWCHFC", "addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885", - "addressTo": "0x4f6167e9aE79878f6Cd71330eAD7f68a45Ed29DC", + "addressTo": "0xc2fa05f12a75ac84ea778af9d6935ca807275e55", "notes": "138 cCHFC → cWCHFC" }, { "key": "Compliant_CADC_cW", "name": "cCADC→cWCADC", "addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679", - "addressTo": "0x1B051588A33A7d56ed46f7C5C78870175b44F9FA", + "addressTo": "0x1872e033b30f3ce0498847926857433e0146394e", "notes": "138 cCADC → cWCADC" }, { "key": "Compliant_XAUC_cW", "name": "cXAUC→cWXAUC", "addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "addressTo": "0x826d5F3e5713C76a1D13e41A76843A361090c896", + "addressTo": "0x4f95297c23d9f4a1032b1c6a2e553225cb175bee", "notes": "138 cXAUC → cWXAUC" }, { "key": "Compliant_XAUT_cW", "name": "cXAUT→cWXAUT", "addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", - "addressTo": "0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44", + "addressTo": "0xd2b4dbf2f6bd6704e066d752eec61fb0be953fd3", "notes": "138 cXAUT → cWXAUT" } ] @@ -666,70 +666,70 @@ "key": "Compliant_EURC_cW", "name": "cEURC→cWEURC", "addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a", - "addressTo": "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF", + "addressTo": "0xcb145ba9a370681e3545f60e55621ebf218b1031", "notes": "138 cEURC → Base cWEURC; set when deployed" }, { "key": "Compliant_EURT_cW", "name": "cEURT→cWEURT", "addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "addressTo": "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4", + "addressTo": "0x73e0cf8bf861d376b3a4c87c136f975027f045ff", "notes": "138 cEURT → cWEURT" }, { "key": "Compliant_GBPC_cW", "name": "cGBPC→cWGBPC", "addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2", - "addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66", + "addressTo": "0x2a0023ad5ce1ac6072b454575996dffb1bb11b16", "notes": "138 cGBPC → cWGBPC" }, { "key": "Compliant_GBPT_cW", "name": "cGBPT→cWGBPT", "addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c", - "addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427", + "addressTo": "0x22b98130ab4d9c355512b25ade4c35e75a4e7e89", "notes": "138 cGBPT → cWGBPT" }, { "key": "Compliant_AUDC_cW", "name": "cAUDC→cWAUDC", "addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D", - "addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036", + "addressTo": "0xa846aead3071df1b6439d5d813156ace7c2c1da1", "notes": "138 cAUDC → cWAUDC" }, { "key": "Compliant_JPYC_cW", "name": "cJPYC→cWJPYC", "addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770", - "addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd", + "addressTo": "0x29828e9ab2057cd3df3c9211455ae1f76e53d2af", "notes": "138 cJPYC → cWJPYC" }, { "key": "Compliant_CHFC_cW", "name": "cCHFC→cWCHFC", "addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885", - "addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29", + "addressTo": "0xc1535e88578d984f12eab55863376b8d8b9fb05a", "notes": "138 cCHFC → cWCHFC" }, { "key": "Compliant_CADC_cW", "name": "cCADC→cWCADC", "addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679", - "addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68", + "addressTo": "0xdc383c489533a4dd9a6bd3007386e25d5078b878", "notes": "138 cCADC → cWCADC" }, { "key": "Compliant_XAUC_cW", "name": "cXAUC→cWXAUC", "addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B", + "addressTo": "0x7e4b4682453bcce19ec903fb69153d3031986bc4", "notes": "138 cXAUC → cWXAUC" }, { "key": "Compliant_XAUT_cW", "name": "cXAUT→cWXAUT", "addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", - "addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB", + "addressTo": "0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c", "notes": "138 cXAUT → cWXAUT" } ] @@ -778,70 +778,70 @@ "key": "Compliant_EURC_cW", "name": "cEURC→cWEURC", "addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a", - "addressTo": "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4", + "addressTo": "0x2a0023ad5ce1ac6072b454575996dffb1bb11b16", "notes": "138 cEURC → Arbitrum cWEURC; set when deployed" }, { "key": "Compliant_EURT_cW", "name": "cEURT→cWEURT", "addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "addressTo": "0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66", + "addressTo": "0x22b98130ab4d9c355512b25ade4c35e75a4e7e89", "notes": "138 cEURT → cWEURT" }, { "key": "Compliant_GBPC_cW", "name": "cGBPC→cWGBPC", "addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2", - "addressTo": "0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427", + "addressTo": "0xa846aead3071df1b6439d5d813156ace7c2c1da1", "notes": "138 cGBPC → cWGBPC" }, { "key": "Compliant_GBPT_cW", "name": "cGBPT→cWGBPT", "addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c", - "addressTo": "0x948690147D2e50ffe50C5d38C14125aD6a9FA036", + "addressTo": "0x29828e9ab2057cd3df3c9211455ae1f76e53d2af", "notes": "138 cGBPT → cWGBPT" }, { "key": "Compliant_AUDC_cW", "name": "cAUDC→cWAUDC", "addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D", - "addressTo": "0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd", + "addressTo": "0xc1535e88578d984f12eab55863376b8d8b9fb05a", "notes": "138 cAUDC → cWAUDC" }, { "key": "Compliant_JPYC_cW", "name": "cJPYC→cWJPYC", "addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770", - "addressTo": "0xFb4B6Cc81211F7d886950158294A44C312abCA29", + "addressTo": "0xdc383c489533a4dd9a6bd3007386e25d5078b878", "notes": "138 cJPYC → cWJPYC" }, { "key": "Compliant_CHFC_cW", "name": "cCHFC→cWCHFC", "addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885", - "addressTo": "0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68", + "addressTo": "0x7e4b4682453bcce19ec903fb69153d3031986bc4", "notes": "138 cCHFC → cWCHFC" }, { "key": "Compliant_CADC_cW", "name": "cCADC→cWCADC", "addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679", - "addressTo": "0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B", + "addressTo": "0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c", "notes": "138 cCADC → cWCADC" }, { "key": "Compliant_XAUC_cW", "name": "cXAUC→cWXAUC", "addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "addressTo": "0xc9750828124D4c10e7a6f4B655cA8487bD3842EB", + "addressTo": "0xa7762b63c4871581885ad17c5714ebb286a7480b", "notes": "138 cXAUC → cWXAUC" }, { "key": "Compliant_XAUT_cW", "name": "cXAUT→cWXAUT", "addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", - "addressTo": "0x328Cd365Bb35524297E68ED28c6fF2C9557d1363", + "addressTo": "0x66568899ffe8f00b25dc470e878b65a478994e76", "notes": "138 cXAUT → cWXAUT" } ] @@ -890,70 +890,70 @@ "key": "Compliant_EURC_cW", "name": "cEURC→cWEURC", "addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a", - "addressTo": "0x2627177f33968128C7fb916F5B9E1f14cc550A80", + "addressTo": "0x4ab39b5bab7b463435209a9039bd40cf241f5a82", "notes": "138 cEURC → Optimism cWEURC; set when deployed" }, { "key": "Compliant_EURT_cW", "name": "cEURT→cWEURT", "addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "addressTo": "0x07dE1f489E1bfCE2c326066a9DFc10e731CBA0CB", + "addressTo": "0x6f521cd9fcf7884cd4e9486c7790e818638e09dd", "notes": "138 cEURT → cWEURT" }, { "key": "Compliant_GBPC_cW", "name": "cGBPC→cWGBPC", "addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2", - "addressTo": "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB", + "addressTo": "0x3f8c409c6072a2b6a4ff17071927ba70f80c725f", "notes": "138 cGBPC → cWGBPC" }, { "key": "Compliant_GBPT_cW", "name": "cGBPT→cWGBPT", "addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c", - "addressTo": "0x5355148C4740fcc3D7a96F05EdD89AB14851206b", + "addressTo": "0x456373d095d6b9260f01709f93fccf1d8aa14d11", "notes": "138 cGBPT → cWGBPT" }, { "key": "Compliant_AUDC_cW", "name": "cAUDC→cWAUDC", "addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D", - "addressTo": "0x50b073d0D1D2f002745cb9FC28a057d5be84911c", + "addressTo": "0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef", "notes": "138 cAUDC → cWAUDC" }, { "key": "Compliant_JPYC_cW", "name": "cJPYC→cWJPYC", "addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770", - "addressTo": "0x1ED9E491A5eCd53BeF21962A5FCE24880264F63f", + "addressTo": "0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9", "notes": "138 cJPYC → cWJPYC" }, { "key": "Compliant_CHFC_cW", "name": "cCHFC→cWCHFC", "addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885", - "addressTo": "0x8b6EE72001cAFcb21D56a6c4686D6Db951d499A6", + "addressTo": "0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4", "notes": "138 cCHFC → cWCHFC" }, { "key": "Compliant_CADC_cW", "name": "cCADC→cWCADC", "addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679", - "addressTo": "0xA6eFb8783C8ad2740ec880e46D4f7E608E893B1B", + "addressTo": "0x9f6d2578003fe04e58a9819a4943732f2a203a61", "notes": "138 cCADC → cWCADC" }, { "key": "Compliant_XAUC_cW", "name": "cXAUC→cWXAUC", "addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "addressTo": "0x7062f35567BBAb4d98dc33af03B0d14Df42294D5", + "addressTo": "0xddc4063f770f7c49d00b5a10fb552e922aa39b2c", "notes": "138 cXAUC → cWXAUC" }, { "key": "Compliant_XAUT_cW", "name": "cXAUT→cWXAUT", "addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", - "addressTo": "0x5fbCE65524211BC1bFb0309fd9EE09E786c6D097", + "addressTo": "0x145e8e8c49b6a021969dd9d2c01c8fea44374f61", "notes": "138 cXAUT → cWXAUT" } ] @@ -1002,70 +1002,70 @@ "key": "Compliant_EURC_cW", "name": "cEURC→cWEURC", "addressFrom": "0x8085961F9cF02b4d800A3c6d386D31da4B34266a", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0x7574d37F42528B47c88962931e48FC61608a4050", "notes": "138 cEURC → Cronos cWEURC; set when deployed" }, { "key": "Compliant_EURT_cW", "name": "cEURT→cWEURT", "addressFrom": "0xdf4b71c61E5912712C1Bdd451416B9aC26949d72", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0x9f833b4f1012F52eb3317b09922a79c6EdFca77D", "notes": "138 cEURT → cWEURT" }, { "key": "Compliant_GBPC_cW", "name": "cGBPC→cWGBPC", "addressFrom": "0x003960f16D9d34F2e98d62723B6721Fb92074aD2", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0xe5c65A76A541368d3061fe9E7A2140cABB903dbF", "notes": "138 cGBPC → cWGBPC" }, { "key": "Compliant_GBPT_cW", "name": "cGBPT→cWGBPT", "addressFrom": "0x350f54e4D23795f86A9c03988c7135357CCaD97c", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0xBb58fa16bAc8E789f09C14243adEE6480D8213A2", "notes": "138 cGBPT → cWGBPT" }, { "key": "Compliant_AUDC_cW", "name": "cAUDC→cWAUDC", "addressFrom": "0xD51482e567c03899eecE3CAe8a058161FD56069D", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0xff3084410A732231472Ee9f93F5855dA89CC5254", "notes": "138 cAUDC → cWAUDC" }, { "key": "Compliant_JPYC_cW", "name": "cJPYC→cWJPYC", "addressFrom": "0xEe269e1226a334182aace90056EE4ee5Cc8A6770", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0x52aD62B8bD01154e2A4E067F8Dc4144C9988d203", "notes": "138 cJPYC → cWJPYC" }, { "key": "Compliant_CHFC_cW", "name": "cCHFC→cWCHFC", "addressFrom": "0x873990849DDa5117d7C644f0aF24370797C03885", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0xB55F49D6316322d5caA96D34C6e4b1003BD3E670", "notes": "138 cCHFC → cWCHFC" }, { "key": "Compliant_CADC_cW", "name": "cCADC→cWCADC", "addressFrom": "0x54dBd40cF05e15906A2C21f600937e96787f5679", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0x32aD687F24F77bF8C86605c202c829163Ac5Ab36", "notes": "138 cCADC → cWCADC" }, { "key": "Compliant_XAUC_cW", "name": "cXAUC→cWXAUC", "addressFrom": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0xf1B771c95573113E993374c0c7cB2dc1a7908B12", "notes": "138 cXAUC → cWXAUC" }, { "key": "Compliant_XAUT_cW", "name": "cXAUT→cWXAUT", "addressFrom": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", - "addressTo": "0x0000000000000000000000000000000000000000", + "addressTo": "0xD517C0cF7013f988946A468c880Cc9F8e2A4BCbE", "notes": "138 cXAUT → cWXAUT" } ] diff --git a/cross-chain-pmm-lps b/cross-chain-pmm-lps index 5aa162e6..68647ff4 160000 --- a/cross-chain-pmm-lps +++ b/cross-chain-pmm-lps @@ -1 +1 @@ -Subproject commit 5aa162e6b325ed1ab5594eed2dad2f662762c815 +Subproject commit 68647ff4d4ec3760f2845df1cca4b8c21ae33bed diff --git a/cross-chain-pmm-lps-publish b/cross-chain-pmm-lps-publish new file mode 160000 index 00000000..d0c3692f --- /dev/null +++ b/cross-chain-pmm-lps-publish @@ -0,0 +1 @@ +Subproject commit d0c3692f64e8c9872ef9d67f752a8c5a2f70a7e5 diff --git a/dbis_core b/dbis_core index 468bc05b..97a1cb1b 160000 --- a/dbis_core +++ b/dbis_core @@ -1 +1 @@ -Subproject commit 468bc05b7868282d3a046ec7f6db9d20656561dc +Subproject commit 97a1cb1b96fb16eb5c2df4b36786d206f9584f1e diff --git a/docs/00-meta/NEXT_STEPS_FOR_YOU.md b/docs/00-meta/NEXT_STEPS_FOR_YOU.md index 4cf0b7cf..b586c2bb 100644 --- a/docs/00-meta/NEXT_STEPS_FOR_YOU.md +++ b/docs/00-meta/NEXT_STEPS_FOR_YOU.md @@ -27,7 +27,7 @@ ## 1. Submit Ledger Live request — ✅ Done -The Ledger Live integration request for **Chain 138 (Defi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledger’s response and follow their process (agreement + integration steps). +The Ledger Live integration request for **Chain 138 (DeFi Oracle Meta Mainnet)** has been submitted (Tally form). Await Ledger’s response and follow their process (agreement + integration steps). **Full guide:** [docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md](../04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md) diff --git a/docs/00-meta/OPERATOR_READY_CHECKLIST.md b/docs/00-meta/OPERATOR_READY_CHECKLIST.md index 22b9a000..26a3ddba 100644 --- a/docs/00-meta/OPERATOR_READY_CHECKLIST.md +++ b/docs/00-meta/OPERATOR_READY_CHECKLIST.md @@ -1,6 +1,6 @@ # Operator Ready Checklist — Copy-Paste Commands -**Last Updated:** 2026-03-28 +**Last Updated:** 2026-04-22 **Purpose:** Single page with exact commands to complete every pending todo. Run from **repo root** on a host with **LAN** access (and `smom-dbis-138/.env` with `PRIVATE_KEY`, `NPM_PASSWORD` where noted). **Do you have all necessary creds?** See [OPERATOR_CREDENTIALS_CHECKLIST.md](OPERATOR_CREDENTIALS_CHECKLIST.md) — per-task list of LAN, PRIVATE_KEY, NPM_PASSWORD, RPC_URL_138, SSH, LINK, gas, token balance. @@ -106,6 +106,20 @@ Single contract retry: `./scripts/verify/run-contract-verification-with-proxy.sh --- +## 4b. LAN: Proxmox fleet vzdump, retention, cluster check + +**Ref:** [STORAGE_GROWTH_AND_HEALTH.md](../04-configuration/STORAGE_GROWTH_AND_HEALTH.md) + +- **Check corosync / nodes after any `pve-cluster` change:** + `./scripts/maintenance/verify-pve-cluster-health.sh` + Expect: **Quorate: Yes** and all expected nodes **online** in the JSON. +- **Deploy weekly vzdump file retention (all PVE nodes):** + `./scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh` (optional `--dry-run`). **Env:** `VZDUMP_PRUNE_KEEP=2` (default) when re-deploying. +- **R630-01 daily all-running-CT backup** lives on the node as **`/usr/local/bin/proxmox-backup.sh`**, sourced from the repo: **`scripts/maintenance/proxmox-backup-all-running-ct.sh`**. Re-install after editing: `scp` + `chmod 755` (see file header for cron and **`VZDUMP_SKIP_VMIDS`** / **`VZDUMP_COMPRESS`**). +- **Stuck `vzdump` or snap:** stop via **Proxmox UI task stop** if possible. If a **`task` worker** blocks **`/etc/pve`**, only then consider **`systemctl restart pve-cluster`** on that node, then re-run `verify-pve-cluster-health.sh`. + +--- + ## 5. LAN: Run all operator tasks (backup + verify ± deploy ± create-vms) ```bash @@ -276,7 +290,7 @@ This is intentionally deferred with the rest of the Wemix path. If the chain is --- -## 10. DBIS Chain 138 — phased production path (matrix-driven) +## 10. DeFi Oracle Meta Mainnet (Chain 138) — phased production path (matrix-driven) **Ref:** [dbis_chain_138_technical_master_plan.md](../../dbis_chain_138_technical_master_plan.md), [DBIS_NODE_ROLE_MATRIX.md](../02-architecture/DBIS_NODE_ROLE_MATRIX.md) diff --git a/docs/00-meta/REMAINING_TASKS_AND_API_FEATURES.md b/docs/00-meta/REMAINING_TASKS_AND_API_FEATURES.md index 5d31c659..83e84590 100644 --- a/docs/00-meta/REMAINING_TASKS_AND_API_FEATURES.md +++ b/docs/00-meta/REMAINING_TASKS_AND_API_FEATURES.md @@ -75,8 +75,8 @@ | GET /health | ✅ Implemented | Returns { status, service } | | Gitea commit status | ✅ Implemented | pending/success/failure via GITEA_TOKEN | | HMAC webhook validation | ✅ Done | server.js: HMAC-SHA256 of raw body vs X-Gitea-Signature | -| Deploy completion callback | ✅ Done (stub) | setGiteaCommitStatus success on /api/deploy accept; replace when real deploy runs | -| Full deploy logic (Proxmox SSH) | ⏳ Planned | Next step doc | +| Deploy completion callback | ✅ Done | success/failure posted after real target command and optional health check | +| Full deploy logic (Proxmox SSH / target commands) | ✅ Done | `phoenix-deploy-api` resolves `deploy-targets.json` and executes mapped commands | | Sankofa Phoenix API (VMID 8600) integration | ⏳ Planned | Next step doc | ### OMNL Fineract API (omnl.hybxfinance.io) @@ -118,7 +118,7 @@ ## Completed in this pass (2026-02-10 / 2026-02-11) -- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); deploy completion callback (stub reports success). Full deploy logic and Sankofa integration remain planned. +- **Phoenix Deploy API:** HMAC-SHA256 webhook validation (X-Gitea-Signature); real target execution via `deploy-targets.json`; commit status updated after deploy success/failure; Sankofa API integration still planned. - **OMNL:** GL accounts (1000, 1050, 2000, 2100, 3000) created via `omnl-gl-accounts-create.sh`; ledger allocation T-001–T-008 posted via `omnl-ledger-post.sh`; discovery via `omnl-discovery.sh`; single-deposit helper `omnl-deposit-one.sh` (bulk = loop over discovery/CSV). See `scripts/omnl/README.md` and verification-evidence/OMNL_SCRIPTS_RUN_20260211.md. **Still require operator/LAN/creds or external systems:** W0 (NPMplus, sendCrossChain, backup), Mifos 5800 access, Explorer DB, W2/W3 deploy, dbis_core TS bulk fix. diff --git a/docs/00-meta/REMAINING_WORK_BREAKDOWN_AND_ANSWERS.md b/docs/00-meta/REMAINING_WORK_BREAKDOWN_AND_ANSWERS.md index 46b6213b..4d81304d 100644 --- a/docs/00-meta/REMAINING_WORK_BREAKDOWN_AND_ANSWERS.md +++ b/docs/00-meta/REMAINING_WORK_BREAKDOWN_AND_ANSWERS.md @@ -24,7 +24,7 @@ | Question | Answer | |----------|--------| -| **What is it?** | Chain 138 (Defi Oracle Meta Mainnet) added to Ledger Live’s supported networks so users see balances and send/receive on 138 in the app. | +| **What is it?** | Chain 138 (DeFi Oracle Meta Mainnet) added to Ledger Live’s supported networks so users see balances and send/receive on 138 in the app. | | **Prerequisites** | Form already submitted (Tally). Nothing else you can do until Ledger replies. | | **Who** | You (point of contact). After Ledger responds, you or dev follow their 8-step process. | | **Steps to complete** | 1. **Now:** Wait for Ledger’s reply to the Tally form. 2. **When they reply:** Sign any agreement they send; follow their “Adding your blockchain to Ledger Wallet” steps (currency registration, device app, explorer, etc.). 3. **If they ask for PR/code:** Push materials from `~/projects/LedgerLive`, share link. 4. **After chain is live in Ledger Live:** Run Step 8 manual test plan (sync, receive, balance, broadcast) from `~/projects/LedgerLive/step-08-manual-tests/test-plan.md`. | diff --git a/docs/00-meta/SUBMODULE_HYGIENE.md b/docs/00-meta/SUBMODULE_HYGIENE.md index 57c52d65..5ed6140e 100644 --- a/docs/00-meta/SUBMODULE_HYGIENE.md +++ b/docs/00-meta/SUBMODULE_HYGIENE.md @@ -52,6 +52,16 @@ git remote add origin https://gitea.d-bis.org/d-bis/explorer-monorepo.git --- +## atomic-swap-dapp bootstrap remote + +`atomic-swap-dapp` was scaffolded first as a standalone local repository and then mounted into the parent as a submodule. Its current `.gitmodules` URL may point at a local bare repository during bootstrap. + +That is acceptable for initial local development, but before other operators rely on the parent repo for cloning, replace the local URL with the canonical hosted remote and then commit the updated `.gitmodules` plus submodule pointer. + +See [ATOMIC_SWAP_DAPP_SUBMODULE.md](../03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md) for the submodule purpose and manifest-sync workflow. + +--- + ## gru-docs branch `gru-docs` may track **`docs-review-fixes`** (not `main`) while documentation review is open. The parent submodule pointer is intentional until upstream merges to `main` and the pointer is updated. diff --git a/docs/00-meta/TASK_CHECK_REPORT.md b/docs/00-meta/TASK_CHECK_REPORT.md index 53f7c5dd..b43e8e16 100644 --- a/docs/00-meta/TASK_CHECK_REPORT.md +++ b/docs/00-meta/TASK_CHECK_REPORT.md @@ -2,7 +2,7 @@ > Historical note (2026-03-26): this report preserves an earlier PMM status snapshot. The current canonical Chain 138 PMM stack is `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`. -**Date:** 2026-03-02 +**Date:** 2026-03-02 (counts refreshed 2026-04-21 for on-chain list) **Purpose:** For each remaining task, verify current state before marking complete or executing. Use this report to decide what still needs to be run by Operator/LAN vs what is already satisfied. --- @@ -11,7 +11,7 @@ | Check | Result | |-------|--------| -| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 59/59 on-chain (Chain 138), validation OK, reconcile-env printed | +| **run-completable-tasks-from-anywhere.sh** | Passed — config OK, 61/61 on-chain (Chain 138; per `check-contracts-on-chain-138.sh`), validation OK, reconcile-env printed | | **preflight-chain138-deploy.sh** | Passed — dotenv exists, RPC Core (chainId 138), nonce consistent, no stuck txs | --- @@ -23,7 +23,7 @@ | Item | Status | Notes | |------|--------|-------| | Phase 0 (prereqs) | Satisfied | Preflight passed; .env and RPC OK | -| Phase 1 (Chain 138 core) | Done | 59/59 contracts present | +| Phase 1 (Chain 138 core) | Done | 61/61 contracts present (current address list in check-contracts-on-chain-138.sh) | | Phase 2 (TransactionMirror + PMM pools) | Done | Mirror deployed; all three pools created (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) | | Phase 3 (Liquidity + DODOPMMProvider) | Partially done | DODOPMMProvider deployed at `0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`; corrected canonical stack aligned. **Remaining:** add liquidity (optional per doc) via `AddLiquidityPMMPoolsChain138.s.sol` or cast | | Phase 4–6 | Not run | Optional / other chains; Operator | diff --git a/docs/00-meta/TODO_TASK_LIST_MASTER.md b/docs/00-meta/TODO_TASK_LIST_MASTER.md index dd20f710..c3318d50 100644 --- a/docs/00-meta/TODO_TASK_LIST_MASTER.md +++ b/docs/00-meta/TODO_TASK_LIST_MASTER.md @@ -177,7 +177,7 @@ ## 12. DBIS RTGS / HYBX / Hyperledger E2E stack -**Purpose:** Track everything required for a true end-to-end RTGS stack across DBIS Chain 138, HYBX sidecars, OMNL / Fineract, and the external banking / interoperability integrations we currently have access to. +**Purpose:** Track everything required for a true end-to-end RTGS stack across DeFi Oracle Meta Mainnet (Chain 138), HYBX sidecars, OMNL / Fineract, and the external banking / interoperability integrations we currently have access to. ### 12.1 Participant / treasury / GL model diff --git a/docs/01-getting-started/METAMASK_QUICK_START_GUIDE.md b/docs/01-getting-started/METAMASK_QUICK_START_GUIDE.md index d8efa0eb..27766a2b 100644 --- a/docs/01-getting-started/METAMASK_QUICK_START_GUIDE.md +++ b/docs/01-getting-started/METAMASK_QUICK_START_GUIDE.md @@ -22,7 +22,7 @@ 2. Click network dropdown (top of MetaMask) 3. Click "Add Network" → "Add a network manually" 4. Enter the following: - - **Network Name**: `Defi Oracle Meta Mainnet` or `SMOM-DBIS-138` + - **Network Name**: `DeFi Oracle Meta Mainnet` or `SMOM-DBIS-138` - **RPC URL**: `https://rpc-http-pub.d-bis.org` ⚠️ **Important: Must be public endpoint** - **Chain ID**: `138` (must be decimal, not hex) - **Currency Symbol**: `ETH` diff --git a/docs/02-architecture/EXPECTED_WEB_CONTENT.md b/docs/02-architecture/EXPECTED_WEB_CONTENT.md index 6a195b40..50698db5 100644 --- a/docs/02-architecture/EXPECTED_WEB_CONTENT.md +++ b/docs/02-architecture/EXPECTED_WEB_CONTENT.md @@ -183,7 +183,7 @@ This document reconciles **expected intent**, **current deployment state**, and ## 8b. public-2138.defi-oracle.io & rpc.public-2138.defi-oracle.io (testnet) -**Role:** Public explorer UI and JSON-RPC for **Defi Oracle Meta Testnet** (chain ID **2138**, hex `0x85a`). Not the Chain 138 explorer (`explorer.d-bis.org`). +**Role:** Public explorer UI and JSON-RPC for **DeFi Oracle Meta Testnet** (chain ID **2138**, hex `0x85a`). Not the Chain 138 explorer (`explorer.d-bis.org`). ### Intended function - Explorer: `https://public-2138.defi-oracle.io` (per `pr-workspace/chains/_data/chains/eip155-2138.json`) diff --git a/docs/03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md b/docs/03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md index 505bffa7..718d4177 100644 --- a/docs/03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md +++ b/docs/03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md @@ -2,7 +2,7 @@ > Historical note (2026-03-26): this runbook originated during the earlier three-pool PMM phase. Current canonical Chain 138 PMM addresses are `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`. -**Purpose:** Add base/quote liquidity to the three DODO PMM pools on Chain 138 (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC). +**Purpose:** Add base/quote liquidity to the canonical DODO PMM pools on Chain 138, including the live stable/WETH pools. **Prerequisites:** - Deployer is **owner** of cUSDT and cUSDC contracts (to mint), or already has balance. @@ -37,17 +37,20 @@ Deployer must be the **owner** of both cUSDT and cUSDC contracts (onlyOwner can Add or set in `smom-dbis-138/.env`: ```bash -# Pool addresses (from PRE_DEPLOYMENT_CHECKLIST / create-all-pmm-pools-chain138.sh) -POOL_CUSDTCUSDC=0xff8d3b8fDF7B112759F076B69f4271D4209C0849 -POOL_CUSDTUSDT=0x6fc60DEDc92a2047062294488539992710b99D71 -POOL_CUSDCUSDC=0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263 +# Pool addresses +POOL_CUSDTCUSDC=0x9e89bAe009adf128782E19e8341996c596ac40dC +POOL_CUSDTUSDT=0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66 +POOL_CUSDCUSDC=0xc39B7D0F40838cbFb54649d327f49a6DAC964062 +POOL_CUSDTWETH=0xaE38a008Ba4Dbf8D9F141D03e9dC8f7Dbe0ce17c +POOL_CUSDCWETH=0xAAE68830a55767722618E869882c6Ed064Cc1eb2 +POOL_CEURTWETH=0x4a64c886cedF00db42ea5B946D6b304121ad9529 # Amounts in base units (6 decimals): 1M tokens = 1000000000000 ADD_LIQUIDITY_BASE_AMOUNT=1000000000000 ADD_LIQUIDITY_QUOTE_AMOUNT=1000000000000 ``` -Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, etc. +Optional per-pool overrides: `ADD_LIQUIDITY_CUSDTCUSDC_BASE`, `ADD_LIQUIDITY_CUSDTCUSDC_QUOTE`, `ADD_LIQUIDITY_CUSDTWETH_BASE`, `ADD_LIQUIDITY_CUSDTWETH_QUOTE`, `ADD_LIQUIDITY_CUSDCWETH_BASE`, `ADD_LIQUIDITY_CUSDCWETH_QUOTE`, `ADD_LIQUIDITY_CEURTWETH_BASE`, `ADD_LIQUIDITY_CEURTWETH_QUOTE`, etc. --- diff --git a/docs/03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md b/docs/03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md new file mode 100644 index 00000000..7375c36b --- /dev/null +++ b/docs/03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md @@ -0,0 +1,70 @@ +# Atomic Swap dApp Submodule + +**Last Updated:** 2026-04-19 +**Purpose:** Defines the dedicated submodule for an ecosystem-wide swap + bridge dApp that can orchestrate atomic swap flows across the supported networks and assets. + +--- + +## Location + +- Submodule path: `atomic-swap-dapp/` +- Parent registration: `.gitmodules` +- Current bootstrap remote: local bare repo at `/home/intlc/projects/atomic-swap-dapp.git` + +> Operational note: the current URL is a local bootstrap remote created to establish the submodule boundary and initial commit. Replace it with the canonical hosted remote before expecting other operators to clone it directly from the parent repo. + +--- + +## What the submodule contains + +- `README.md` — scope and usage +- `docs/ATOMIC_SWAP_EXECUTION_MODEL.md` — execution model for swap -> bridge -> destination swap flows +- `scripts/sync-ecosystem.mjs` — generates the dApp manifest from the parent repo's canonical machine-readable inventories +- `scripts/validate-manifest.mjs` — lightweight integrity check for the generated manifest +- `config/ecosystem-manifest.json` — generated coverage snapshot + +--- + +## Canonical parent sources + +The submodule intentionally derives coverage from the parent repo instead of maintaining a second source of truth: + +- `config/aggregator-route-matrix.json` +- `config/routing-registry.json` +- `token-lists/lists/dbis-138.tokenlist.json` +- `cross-chain-pmm-lps/config/chains.json` +- `cross-chain-pmm-lps/config/token-map.json` +- `cross-chain-pmm-lps/config/deployment-status.json` + +This lets the dApp surface: + +- Chain 138 live same-chain swap routes +- bridge lanes across the routed ecosystem +- cW* and anchor-asset inventory on the public-chain mesh +- non-EVM network metadata where interoperability is modeled separately + +--- + +## Working in the submodule + +From the parent repo root: + +```bash +cd atomic-swap-dapp +npm run sync:ecosystem +npm run validate:manifest +``` + +If the submodule is checked out outside the parent repo, set: + +```bash +export PROXMOX_REPO_ROOT=/path/to/proxmox +``` + +--- + +## Immediate next build steps + +1. Add the canonical hosted remote for the submodule and update `.gitmodules`. +2. Layer in a quote API and execution adapters for DODO PMM, CCIP, Alltra, and future non-EVM connectors. +3. Build UI surfaces on top of `config/ecosystem-manifest.json` so chain and asset coverage stays synced with repo-backed inventories. diff --git a/docs/03-deployment/CHAIN138_TO_SOLANA_GRU_TOKEN_DEPLOYMENT_LINEUP.md b/docs/03-deployment/CHAIN138_TO_SOLANA_GRU_TOKEN_DEPLOYMENT_LINEUP.md index ca0b4cae..94ec0141 100644 --- a/docs/03-deployment/CHAIN138_TO_SOLANA_GRU_TOKEN_DEPLOYMENT_LINEUP.md +++ b/docs/03-deployment/CHAIN138_TO_SOLANA_GRU_TOKEN_DEPLOYMENT_LINEUP.md @@ -1,9 +1,9 @@ # Chain 138 → Solana — GRU Token Deployment Lineup -**Last updated:** 2026-04-18 -**Current status:** `lineup_defined_relay_and_mints_outstanding` — see [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json). +**Last updated:** 2026-04-19 +**Current status:** `partial_live_causdt_lane_confirmed_lineup_and_mints_still_outstanding` — see [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json). -**Purpose:** Line up deployment of **all canonical GRU base-money assets** from Chain 138 to Solana as **bridge-backed SPL representations**, using the agreed model: **custom relay** (per `token-mapping-multichain.json` notes), **SPL mints**, **hub stables on Solana**, and **execution / edge liquidity** as a separate phase (CLMM + bot, CLOB MM, or future PMM-class program). +**Purpose:** Line up deployment of **all canonical GRU base-money assets** from Chain 138 to Solana as **bridge-backed SPL representations**, using the agreed model: **custom relay** (per `token-mapping-multichain.json` notes), **SPL mints**, **hub stables on Solana**, and **execution / edge liquidity** as a separate phase (CLMM + bot, CLOB MM, or future PMM-class program). The Solana lane now also has a confirmed live send/confirm for the **`cAUSDT -> cWAUSDT`** corridor, which serves as the first repo-recorded proof that the adapter path is functioning end-to-end. **Machine-readable manifest:** [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json) (fill `solanaMint` as mints exist). @@ -18,6 +18,25 @@ On Solana, fiat-stable GRU assets use the **`cW*`** symbol set per `config/token-mapping-multichain.json` → `nonEvmNetworks.Solana.approvedMirroredSymbols`. +### Live-confirmed Solana lane + +The broader canonical lineup is still in rollout, but the **AUSDT corridor is no longer only planned**: + +| Item | Value | +|------|-------| +| Chain 138 source token | `cAUSDT` | +| Solana destination symbol | `cWAUSDT` | +| Minted on Chain 138 | `22,000,000` raw units | +| Bridged to Solana | `9,000,000` raw units | +| Bridge request | `0x69035dfb7c0af5447da6104a8c09aa6bac7b19695517441014dda3c687d4550d` | +| Final status | `2` (`Confirmed`) | +| Solana adapter | `0x8244a5c27C0eA32fb8cB324131a04dC9F4E433f7` | +| Mint tx | `0x8d18b8df7024418bf167cc80d11e0425b0c81507ace13326973951f3dfd0f6f8` | +| Bridge tx | `0x4f6368754a5b55a43f8dae4e645bf67e9cf6c9c64bfdadb4625508c351d64319` | +| Confirm tx | `0x6cce9a740d170278c95e494052e1b031b394d1d807df05ba3bad55030a36fc68` | + +This confirms that the Solana adapter path is live for at least one GRU-style corridor even though the full canonical `c* -> cW*` lineup and SPL mint inventory remain incomplete. + --- ## 2. Repo anchors @@ -44,7 +63,7 @@ Create SPL tokens; record **`solanaMint`** per asset in `solana-gru-bridge-lineu ### Phase C — Relay implementation -Replace relay stub with production path; fund SOL signers; E2E both directions on mainnet-beta when ready. +Replace relay stub with production path; fund SOL signers; E2E both directions on mainnet-beta when ready. As of **2026-04-16**, the repo now has a confirmed live `cAUSDT -> cWAUSDT` send/confirm through the deployed Solana adapter, so this phase should be treated as **partially validated in production** rather than only stubbed. ### Phase D — Execution on Solana diff --git a/docs/03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md b/docs/03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md index 893b7569..9be2873a 100644 --- a/docs/03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md +++ b/docs/03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md @@ -1,7 +1,9 @@ # Chain 138 -> Wemix 1111 Bridge Completion Checklist -**Last Updated:** 2026-04-18 -**Purpose:** Strict operator checklist to move WEMIX `1111` from repo-deferred state into a live `138 -> 1111` bridge path for `WETH9` / `WETH10`, then prepare GRU v2 `cW*` assets for rollout. +**Last Updated:** 2026-04-20 +**Purpose:** Strict operator checklist to move WEMIX `1111` from repo-deferred state into a live bridge path, with an explicit split between: +- **inbound-only activation** for `138 -> 1111` +- **full bidirectional activation** for `138 <-> 1111` ## 1. Current Repo State @@ -9,12 +11,15 @@ |---|---| | Destination chain | `1111` / Wemix | | Destination selector | `5142893604156789321` | -| Activation state | `deferred` | +| Activation state | `planned_gas_scaffold` | | Bridge available | `false` | | Recorded `cW*` assets | `cWBTC` | -| Recorded anchor addresses | `USDC=0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | +| Recorded anchor addresses | `USDC=0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D` | -The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is the only part that is already in good shape; the missing bridge deployment and LINK funding are the actual blockers. +The repo currently shows WEMIX as **not yet live**. Native WEMIX gas and bridge deployment are already in good shape; the remaining blockers depend on the target mode: + +- **inbound-only activation**: proof transfer plus machine-readable promotion +- **full bidirectional activation**: proof transfer, machine-readable promotion, and outbound fee coverage on the WEMIX-side bridges ## 2. Exact Environment Surface @@ -24,8 +29,8 @@ The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is th | `LINK_TOKEN_WEMIX` | `0x80f1FcdC96B55e459BF52b998aBBE2c364935d69` | | `WETH9_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` | | `WETH10_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` | -| `CCIPWETH9_BRIDGE_WEMIX` | `(unset)` | -| `CCIPWETH10_BRIDGE_WEMIX` | `(unset)` | +| `CCIPWETH9_BRIDGE_WEMIX` | `0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04` | +| `CCIPWETH10_BRIDGE_WEMIX` | `0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08` | | `LINK_GAS_AVAILABLE_1111` | `0` | | `LINK_GAS_UNAVAILABLE_CHAIN_IDS` | `25,1111` | | `WEMIX_RPC` | `https://api.wemix.com` | @@ -33,9 +38,13 @@ The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is th | `CCIPWETH9_BRIDGE_CHAIN138` | `0xcacfd227A040002e49e2e01626363071324f820a` | | `CCIPWETH10_BRIDGE_CHAIN138` | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | -## 3. Completion Steps +## 3. Activation Paths -### Step 1: Preflight WEMIX +### Path A: Inbound-only activation on WEMIX + +Use this when the immediate goal is to make `138 -> 1111` receipt operational. + +#### Step A1: Preflight WEMIX ```bash cd smom-dbis-138 @@ -47,7 +56,9 @@ Success means: - deployer has native WEMIX gas - `CCIP_ROUTER_WEMIX`, `LINK_TOKEN_WEMIX`, `WETH9_WEMIX`, and `WETH10_WEMIX` are present -### Step 2: Deploy `CCIPWETH9Bridge` and `CCIPWETH10Bridge` on 1111 +#### Step A2: Confirm bridge deployments on 1111 + +Status: completed in the current operator environment. Both bridge addresses above return deployed bytecode on Wemix. ```bash cd smom-dbis-138 @@ -58,7 +69,7 @@ After deployment, persist the returned addresses into: - `CCIPWETH9_BRIDGE_WEMIX` - `CCIPWETH10_BRIDGE_WEMIX` -### Step 3: Wire destinations in both directions +#### Step A3: Confirm bidirectional wiring ```bash cd smom-dbis-138 @@ -71,7 +82,28 @@ Required result: - WEMIX WETH9 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH9_BRIDGE_CHAIN138` - WEMIX WETH10 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH10_BRIDGE_CHAIN138` -### Step 4: Fund LINK on the WEMIX bridges +Status: destination wiring is already present in the current environment. + +#### Step A4: Run proof transfer for `138 -> 1111` + +```bash +cast call "$CCIPWETH9_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC" +cast call "$CCIPWETH10_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC" +``` + +Then run a small test transfer for `WETH9` or `WETH10` from `138 -> 1111` and confirm receipt. + +Important note: +- the WEMIX-side bridges do **not** need LINK just to receive `138 -> 1111` messages +- CCIP fees are paid on the source-side `sendCrossChain(...)`, not on the destination-side `ccipReceive(...)` + +### Path B: Full bidirectional activation on WEMIX + +Use this when `1111 -> 138` or `1111 -> other-chain` sending must also be live. + +Path B includes all inbound-only steps above, plus the outbound fee steps below. + +#### Step B1: Fund outbound fee coverage on the WEMIX bridges ```bash cd smom-dbis-138 @@ -83,16 +115,15 @@ Target: - at least `10 LINK` on each bridge - `LINK_GAS_AVAILABLE_1111` becomes non-zero -### Step 5: Verify bridge readiness +Bridge-specific note: +- `CCIPWETH9Bridge` can alternatively be reconfigured to use native WEMIX for outbound fees by setting `feeToken = address(0)`. +- `CCIPWETH10Bridge` cannot use native-fee mode in the current implementation and still requires LINK for outbound sends. -```bash -cast call "$CCIPWETH9_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC" -cast call "$CCIPWETH10_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC" -``` +#### Step B2: Run proof transfer from `1111` -Then run a small test transfer for `WETH9` or `WETH10` from `138 -> 1111` and confirm receipt. +After outbound funding is available, run and record a small outbound test transfer from `1111`. -### Step 6: Prepare GRU v2 `cW*` assets for 1111 +## 4. Prepare GRU v2 `cW*` assets for 1111 This step is **after** the WETH bridge path is proven live. @@ -105,12 +136,23 @@ Before GRU v2 can be promoted on `1111`, the operator still needs to: - wire bridge or mint authority for those assets - only then enable DODO PMM / Uniswap V2 / other venue rollout on WEMIX -## 4. Promotion Conditions +## 5. Promotion Conditions -WEMIX `1111` can move out of deferred state only after all of the following are true: +### Promotion to inbound-only live + +WEMIX `1111` can move to inbound-only live only after all of the following are true: 1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` are deployed and stored in `.env`. 2. Chain `138` and chain `1111` each list the other as a valid bridge destination. -3. Both WEMIX bridges hold enough LINK for operational CCIP fees. -4. A small bridge test succeeds in both configuration and receipt. -5. The GRU v2 asset rollout plan for `1111` is explicitly wired, not just implied. +3. A small `138 -> 1111` bridge test succeeds in both configuration and receipt. + +### Promotion to full bidirectional live + +WEMIX `1111` can move to full bidirectional live only after all of the following are true: + +1. All inbound-only promotion conditions are satisfied. +2. The WEMIX outbound fee path is funded: + - `WETH9`: LINK or native WEMIX + - `WETH10`: LINK +3. A small outbound bridge test from `1111` succeeds in both configuration and receipt. +4. The GRU v2 asset rollout plan for `1111` is explicitly wired, not just implied. diff --git a/docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md b/docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md new file mode 100644 index 00000000..eab1153f --- /dev/null +++ b/docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md @@ -0,0 +1,159 @@ +# cW Public Network Prices + +- Generated: `2026-04-20T00:49:38Z` +- Deployment inventory: `/home/intlc/projects/proxmox/cross-chain-pmm-lps/config/deployment-status.json` +- Uniswap discovery snapshot: `/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json` +- Price convention: USD per 1 token. +- `not found` means the generator could not reach the token from a live USDC/USDT anchor using the current public-pair snapshot plus live PMM mid-price reads. + +| Chain | Token | Price (USD) | Derived From | Source | Notes | +|---|---|---:|---|---|---| +| `1` Ethereum Mainnet | `cWAUDC` | `0.65569108` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6c1bD4F43c5f330E50B61DE81066dA7C61a9b5b4; midPrice=0.65569107650773755 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.73441926` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE0F35b5736FDd0a2F4B618621b0A08F8D8A3f92A; midPrice=0.734419257773319959 | +| | `cWCHFC` | `1.10444563` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x776Ca556deD3245984F504F4bef8Eeec55C50190; midPrice=1.104445634708087841 | +| | `cWEURC` | `1.15145921` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0bC750F9c6DbDcd76B205695A356491b1B9ef098; midPrice=1.15145920590785613 | +| | `cWEURT` | `1.08000050` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x9cF3DeDAaC0984c530801b9b4881c8f99Bb329c3; midPrice=1.080000496800228528 | +| | `cWGBPC` | `1.29980755` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5488042dF882893a3e7074453E2005CaDE4101b0; midPrice=1.299807549490125931 | +| | `cWGBPT` | `1.27000012` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xA42566bb730AD6D551Db32d50c0877132fc07c32; midPrice=1.270000120650011461 | +| | `cWJPYC` | `0.00827694` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794; midPrice=0.008276940018827374 | +| | `cWUSDC` | `0.24519859` | `cWUSDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x69776fc607e9edA8042e320e7e43f54d06c68f0E; midPrice=0.245198594926143744 | +| | `cWUSDT` | `0.24377078` | `cWUSDT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2; midPrice=0.243770782727164331 | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xf6470219ce7749f8860dEABe9c347Ef2c1075E08; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x1D51a38C924382287d770AbB61deb9C39ACa96E9; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `10` Optimism | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x4B452800f6cD50326F14a6f089f4bB04e8079250; midPrice=0.66 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x19e1fdd037F1651AcEE11c5A5Aa246b85FA63f8e; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xA97D7dfB93CBf0C10243931d93FFEda745222ec6; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x78C6aC6D7CbFcd85A3291D656F2154979a92c00B; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x631DfC86A03cB05319d7165198f8099dacF78e56; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x79BE2b70A94E954d095f9F537FAf0741D15dfA31; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5D6b5d7CA165c39c350083255774DdBf1c858e12; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x68C1c8a945ddCF3482b73aC09b6B5D4177D564AF; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xCE25c324e41049D75abfB81c23257984A2A97a79; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xb3Ee650019d7F756ce0F79b69614Fa2761871775; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `25` Cronos | `cWAUDC` | `0.66000000` | `cWAUDC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x5b5fA8664FC1eb630b2D76deAf57Dd35ef326eAE; midPrice=0.66 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xFFe56BE4628f2863Cd7c38d3fFa70d6A3255FBD3; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x937E86f21007C15F28081DBD419ea39ef5bc87F2; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xbe68d6ae47049ce0EA5B6a82AB1c388f4023aec8; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xE3bb64f8F05dB65C9bb1103f5D7C445C402161Ec; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xDa60b22cDb3D3Ec67c309457Bd50C4e67D4611a4; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x1935d14D513E158D630488f2D20Cd28CFe23aAe6; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x97fD4E88490D8c4bcbe1930Cece12e8DD22529bE; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xAA450B4Cf4EEc28C440850665546D85C67b4B2A6; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x8B11f71C0ABF2f8031c47cFd20d22b2ab2799183; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `56` BSC (BNB Chain) | `cWAUDC` | `0.66000000` | `cWAUDC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x85E2C97a931D1e5Ed31F4D6cb4094fB036AE4ED4; midPrice=0.66 | +| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xE193bd2f602CaC833330c6835f934f3958a7785b; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x02F70D646B57439faF5dF1B16d2B174Ee2A9F373; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xaF1EA2c0105C90C819849FBFE931D61a11De4793; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x6b97090c974eCAf77dC4e390B044F87Ec71f5fA1; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x5e19913eDaAcaB436AbF635e58f2453323cB2CB3; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0x439C447b4FDa58fcAF587F0A042662A46029dC7c; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xBEceD3b25448F648a36Fa9dd6D17a68CB6e61f36; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xe9306557758c19cb8FbeEb4777dc7b14f251f67c; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xfB094EC50d932bCD004E4136EfB62119c0f576E1; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `100` Gnosis Chain | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xeb5A688dF70be2F790719872Be9Ecc5648aEE460; midPrice=1 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x45177D998F4022aeaa046C60e734aEf8c18aCb70; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x9ff24E16c5687330c271a52655971c7C2498FaC8; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8c8d6cc14111443Ef8572D58Df387a1E497b7C43; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB73e4C13757EE99540A1F0e973980E423987De19; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xf060E1B29FF714f5Ac89F8Bd3869cF300C5b387f; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3adB3fB8451727fDEBe3D00617170dAF3725F6B4; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xe11936EcE13B5f04156898a510B86493F2862042; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x02BE3C506FD5541c8225dB43C6FFC5a39ADd803E; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x7069d10A0E4496D0CEa08Ff27EaE9de0BB7D0d23; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `137` Polygon | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783; midPrice=1 | +| | `cWAUSDT` | `0.66666667` | `cWUSDC/USDC -> cWAUSDT/cWUSDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547; midPrice=1 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xc79da1E8B33E580d53C683923685B26FFC653650; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x30dAeF9a8Dd4aEc2949013Fe18b5Ab3C2505D825; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0c6F5D3d8d52cBC52849327F6eC6aE52C8497A8D; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x36aB6bef2B3335ebf6a762665978bf5e845FDEC0; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x7a95f67E31f271A6a83219d8368D963Ee2fC106B; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xC3645c7153b7B72556e322aA1E72D77536d9A3DE; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x09658d8d81aa8fa7a21eD973787638f245bc3fe0; midPrice=0.0067 | +| | `cWUSDC` | `1.00000000` | `cWUSDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547; midPrice=1 | +| | `cWUSDT` | `1.00000000` | `cWUSDT/USDT` | `dodo_pmm` | USDT anchored at 1 USD; DODO PMM 0xFCB0b0Ac36d67EDBA91100c75C27De945357CD62; midPrice=1 | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3c3b9Bd130fB3aBcC0E0CE6552795DD56BCCc55c; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x37D5587Bbe17571cDe96DAB7b2e7EA234C87f525; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `1111` Wemix | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | | | | | Activation state: `deferred`; RPC configured: `False` | +| `8453` Base | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE450F94Dc06036aa80055Db298948C6692819545; midPrice=0.66 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5E7448AA0e3172AEFE79439E14F7E59bc1C858E0; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x0673Fa737f813Af2e37A0ae2CBCf7E225498ed6a; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x72E6D93E9aF317321DF763a34068178c773FdA50; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x51c2C4Dd1fc54E20207D0732f12802B33e0E2251; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5b8B474659A5BA675E74Ef364CcF559C53071B5b; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xD035e0a6b82cDd9653261DC8259a3dbA1cF02C14; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x64D91B738026fE1577773F3F36063d16C834F042; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xb47776505B8E2bFC63197Cf2133857CD91e7abBb; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xE1C2bC36438B29E3b5092C0cB80531199874080D; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `42161` Arbitrum One | `cWAUDC` | `0.66000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x97f78713f5899a652d955B996BAb99E2CbbEcC5c; midPrice=0.66 | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6D3b55935F58b9433fc26743cd9E0F8963a4F6D8; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x88437Cd15CB6b07Fd8cC9830f1b8fFf50275e691; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x34c3Ae728a985Fd27f1887474bCf4e52847Cbb2c; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xEEE8C51107aE64824c4a08a502202fA3E6213702; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xFBa6D6d1471302Bf28CE7d94Be33f034b95d9AD0; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xDcA29dfa59C8faF90e4437DEAe74474F78735cDe; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB6eaF7cEB4A6e9Bc6A57fEb51011B6Bb01632C1F; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x41e67b8b5929e44C2b7A0D772E151FAD8D5303cd; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xB6b15Ba233C95d164504e24209C1fAc3304059C7; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `42220` Celo | `cWAUDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCHFC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWEURC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWEURT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWGBPC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWGBPT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWJPYC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | | | | | Activation state: `active`; RPC configured: `True` | +| `43114` Avalanche C-Chain | `cWAUDC` | `1.00000000` | `cWAUDC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x287edaBDA35195592d7CACe2C1A75eC66caF1D70; midPrice=1 | +| | `cWAUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWBTC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWCADC` | `0.74000000` | `cWCADC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x75Ec85467927512b01C9e0481Fb1902d2d7210dC; midPrice=0.74 | +| | `cWCHFC` | `1.11000000` | `cWCHFC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x3a224eae91ac813a03E15d0c37B641bC6c2237d7; midPrice=1.11 | +| | `cWEURC` | `1.08000000` | `cWEURC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xEE2742Fa6f70A40aB16c9b613c5cF6933bA92Cc3; midPrice=1.08 | +| | `cWEURT` | `1.08000000` | `cWEURT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x8507F3F3cB121072c1e3f2D912d269CA9829eEF8; midPrice=1.08 | +| | `cWGBPC` | `1.27000000` | `cWGBPC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x73542F7B1CBd4552Eb8FeFEB3D1884527424da58; midPrice=1.27 | +| | `cWGBPT` | `1.27000000` | `cWGBPT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0xa07dEe884555f2E9D04d0039FEF0b746987a8441; midPrice=1.27 | +| | `cWJPYC` | `0.00670000` | `cWJPYC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x6175D065c602dab71A03753987D1ebEc99eFcC2e; midPrice=0.0067 | +| | `cWUSDC` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDT` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWUSDW` | `not found` | `not found` | `not_found` | No live direct or bridged price path was found from USDC/USDT anchors. | +| | `cWXAUC` | `3200.00000000` | `cWXAUC/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x5d3a4A3Dae9FEcFe979A784F55d994c9a9fBeAfB; midPrice=3200 | +| | `cWXAUT` | `3200.00000000` | `cWXAUT/USDC` | `dodo_pmm` | USDC anchored at 1 USD; DODO PMM 0x1392bb9f23F938E6c1cDaAAE5c45d29BE5f8C828; midPrice=3200 | +| | | | | | Activation state: `active`; RPC configured: `True` | diff --git a/docs/03-deployment/CW_PUBLIC_NETWORK_REPEG_PLAN.md b/docs/03-deployment/CW_PUBLIC_NETWORK_REPEG_PLAN.md new file mode 100644 index 00000000..5e314fc5 --- /dev/null +++ b/docs/03-deployment/CW_PUBLIC_NETWORK_REPEG_PLAN.md @@ -0,0 +1,460 @@ +# cW Public Network Repeg Plan + +- Generated: `2026-04-20T00:49:46Z` +- Price report: `/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json` +- Deployment inventory: `/home/intlc/projects/proxmox/cross-chain-pmm-lps/config/deployment-status.json` +- Uniswap discovery: `/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json` +- Scope: current off-peg or unreadable public-network `cW*` pools only. +- PMM rule: if current price is below target, fund quote and buy base; if current price is above target, fund base and sell base. +- Uniswap rule: remove bad LP or ignore stale LP, then reseed at the target reserve ratio. + +## Off-Peg DODO PMM Pools + +| Chain | Pair | Pool | Current | Target | Deviation | Repair Path | +|---|---|---|---:|---:|---:|---| +| `1` Ethereum Mainnet | `cWEURC/USDC` | `0x0bC750F9c6DbDcd76B205695A356491b1B9ef098` | `1.15145921` | `1.08000000` | `+6.62%` | Fund base side and sell base into `cWEURC/USDC` until `getMidPrice()` returns target. | +| `1` Ethereum Mainnet | `cWGBPC/USDC` | `0x5488042dF882893a3e7074453E2005CaDE4101b0` | `1.29980755` | `1.27000000` | `+2.35%` | Fund base side and sell base into `cWGBPC/USDC` until `getMidPrice()` returns target. | +| `1` Ethereum Mainnet | `cWJPYC/USDC` | `0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794` | `0.00827694` | `0.00670000` | `+23.54%` | Fund base side and sell base into `cWJPYC/USDC` until `getMidPrice()` returns target. | +| `1` Ethereum Mainnet | `cWUSDC/USDC` | `0x69776fc607e9edA8042e320e7e43f54d06c68f0E` | `0.24519859` | `1.00000000` | `-75.48%` | Fund quote side and buy base through `cWUSDC/USDC` until `getMidPrice()` returns target. | +| `1` Ethereum Mainnet | `cWUSDT/USDC` | `0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2` | `0.24377078` | `1.00000000` | `-75.62%` | Fund quote side and buy base through `cWUSDT/USDC` until `getMidPrice()` returns target. | +| `100` Gnosis Chain | `cWAUDC/USDC` | `0xeb5A688dF70be2F790719872Be9Ecc5648aEE460` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. | +| `137` Polygon | `cWAUDC/USDC` | `0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. | +| `43114` Avalanche C-Chain | `cWAUDC/USDC` | `0x287edaBDA35195592d7CACe2C1A75eC66caF1D70` | `1.00000000` | `0.66000000` | `+51.52%` | Fund base side and sell base into `cWAUDC/USDC` until `getMidPrice()` returns target. | + +## Broken Uniswap Pairs + +| Chain | Pair | Pool | Current Ratio | Target | Deviation | Repair Path | +|---|---|---|---:|---:|---:|---| +| `56` BSC (BNB Chain) | `cWAUSDT/cWUSDC` | `0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. | +| `56` BSC (BNB Chain) | `cWAUSDT/cWUSDT` | `0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. | +| `137` Polygon | `cWAUSDT/cWUSDC` | `0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. | +| `137` Polygon | `cWAUSDT/cWUSDT` | `0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. | +| `42220` Celo | `cWAUSDT/cWUSDC` | `0xd3B55d6d7C08fDbF5F201e486992643cfF410d91` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. | +| `42220` Celo | `cWAUSDT/cWUSDT` | `0xEe9eEBf89C1424e63eFc888929E43a9423357D39` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. | +| `43114` Avalanche C-Chain | `cWAUSDT/cWUSDC` | `0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDC` through the chain router at target ratio `1` with balanced reserves. | +| `43114` Avalanche C-Chain | `cWAUSDT/cWUSDT` | `0x418322F48D857277ec4BCc96Bc1580aCCB7EA253` | `0.66666667` | `1.00000000` | `-33.33%` | Withdraw or ignore bad LP, then reseed `cWAUSDT/cWUSDT` through the chain router at target ratio `1` with balanced reserves. | + +## Unpriced Targets + +| Chain | Token | Target | Status | +|---|---|---:|---| +| `10` Optimism | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `10` Optimism | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `25` Cronos | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `25` Cronos | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `56` BSC (BNB Chain) | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `56` BSC (BNB Chain) | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `56` BSC (BNB Chain) | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `56` BSC (BNB Chain) | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot | +| `100` Gnosis Chain | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `100` Gnosis Chain | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `8453` Base | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `8453` Base | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `42161` Arbitrum One | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `42161` Arbitrum One | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWAUDC` | `0.66000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWCADC` | `0.74000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWCHFC` | `1.11000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWEURC` | `1.08000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWEURT` | `1.08000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWGBPC` | `1.27000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWGBPT` | `1.27000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWJPYC` | `0.00670000` | no live price path found from current public snapshot | +| `42220` Celo | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWXAUC` | `3200.00000000` | no live price path found from current public snapshot | +| `42220` Celo | `cWXAUT` | `3200.00000000` | no live price path found from current public snapshot | +| `43114` Avalanche C-Chain | `cWAUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `43114` Avalanche C-Chain | `cWUSDC` | `1.00000000` | no live price path found from current public snapshot | +| `43114` Avalanche C-Chain | `cWUSDT` | `1.00000000` | no live price path found from current public snapshot | +| `43114` Avalanche C-Chain | `cWUSDW` | `1.00000000` | no live price path found from current public snapshot | +### `1` Ethereum Mainnet `cWEURC/USDC` + +- Suggested funding side: `cWEURC` +- Suggested trade raw: `82716` +- Suggested trade units: `0.082716` +- Gap fraction: `0.066166` +- Deployer balance on funding side: `0.004987` `cWEURC` +- Deployer shortfall: `0.077729` `cWEURC` +- Covered: `False` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${ETHEREUM_MAINNET_RPC}" +export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84" +export POOL="0x0bC750F9c6DbDcd76B205695A356491b1B9ef098" +export BASE_TOKEN="0xD4aEAa8cD3fB41Dc8437FaC7639B6d91B60A5e8d" +export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +export BASE_IN_RAW=REPLACE_BASE_IN_RAW +export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW +cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `1` Ethereum Mainnet `cWGBPC/USDC` + +- Suggested funding side: `cWGBPC` +- Suggested trade raw: `2939` +- Suggested trade units: `0.002939` +- Gap fraction: `0.023471` +- Deployer balance on funding side: `0.000478` `cWGBPC` +- Deployer shortfall: `0.002461` `cWGBPC` +- Covered: `False` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${ETHEREUM_MAINNET_RPC}" +export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84" +export POOL="0x5488042dF882893a3e7074453E2005CaDE4101b0" +export BASE_TOKEN="0xc074007dc0bfb384b1cf6426a56287ed23fe4d52" +export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +export BASE_IN_RAW=REPLACE_BASE_IN_RAW +export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW +cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `1` Ethereum Mainnet `cWJPYC/USDC` + +- Suggested funding side: `cWJPYC` +- Suggested trade raw: `26502` +- Suggested trade units: `0.026502` +- Gap fraction: `0.235364` +- Deployer balance on funding side: `0` `cWJPYC` +- Deployer shortfall: `0.026502` `cWJPYC` +- Covered: `False` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${ETHEREUM_MAINNET_RPC}" +export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84" +export POOL="0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794" +export BASE_TOKEN="0x07EEd0D7dD40984e47B9D3a3bdded1c536435582" +export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +export BASE_IN_RAW=REPLACE_BASE_IN_RAW +export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW +cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `1` Ethereum Mainnet `cWUSDC/USDC` + +- Suggested funding side: `USDC` +- Suggested trade raw: `665998742` +- Suggested trade units: `665.998742` +- Gap fraction: `0.754801` +- Deployer balance on funding side: `52.51225` `USDC` +- Deployer shortfall: `613.486492` `USDC` +- Covered: `False` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${ETHEREUM_MAINNET_RPC}" +export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84" +export POOL="0x69776fc607e9edA8042e320e7e43f54d06c68f0E" +export BASE_TOKEN="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a" +export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW +export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW +cast send "$QUOTE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$QUOTE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `1` Ethereum Mainnet `cWUSDT/USDC` + +- Suggested funding side: `USDC` +- Suggested trade raw: `7071662` +- Suggested trade units: `7.071662` +- Gap fraction: `0.756229` +- Deployer balance on funding side: `52.51225` `USDC` +- Deployer shortfall: `0` `USDC` +- Covered: `True` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${ETHEREUM_MAINNET_RPC}" +export INTEGRATION="0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84" +export POOL="0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2" +export BASE_TOKEN="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE" +export QUOTE_TOKEN="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW +export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW +cast send "$QUOTE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$QUOTE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `100` Gnosis Chain `cWAUDC/USDC` + +- Suggested funding side: `cWAUDC` +- Suggested trade raw: `0` +- Suggested trade units: `0` +- Gap fraction: `0.515152` +- Deployer balance on funding side: `0` `cWAUDC` +- Deployer shortfall: `0` `cWAUDC` +- Covered: `True` +- Reserve snapshot: `baseRaw=0 quoteRaw=0` +- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${GNOSIS_RPC_URL}" +export INTEGRATION="0x5866c2CeAfcdB36375A731532B434c370885678a" +export POOL="0xeb5A688dF70be2F790719872Be9Ecc5648aEE460" +export BASE_TOKEN="0xddc4063f770f7c49d00b5a10fb552e922aa39b2c" +export QUOTE_TOKEN="0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83" +export BASE_IN_RAW=REPLACE_BASE_IN_RAW +export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW +cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `137` Polygon `cWAUDC/USDC` + +- Suggested funding side: `unknown` +- Suggested trade raw: `unknown` +- Suggested trade units: `unknown` +- Gap fraction: `unknown` +- Deployer balance on funding side: `unknown` `` +- Deployer shortfall: `unknown` `` +- Covered: `unknown` +- Sizing note: `Error: contract 0xc21223249ca28397b4b6541dffaecc539bff0c59 does not have any code` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${POLYGON_MAINNET_RPC}" +export INTEGRATION="0x84353eD1f0C7a703a17aBAd19b0dB15Bc9A5e3e5" +export POOL="0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783" +export BASE_TOKEN="0xFb4B6Cc81211F7d886950158294A44C312abCA29" +export QUOTE_TOKEN="0xc21223249CA28397B4B6541dfFaEcC539BfF0c59" +export BASE_IN_RAW=REPLACE_BASE_IN_RAW +export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW +cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `43114` Avalanche C-Chain `cWAUDC/USDC` + +- Suggested funding side: `cWAUDC` +- Suggested trade raw: `0` +- Suggested trade units: `0` +- Gap fraction: `0.515152` +- Deployer balance on funding side: `0` `cWAUDC` +- Deployer shortfall: `0` `cWAUDC` +- Covered: `True` +- Reserve snapshot: `baseRaw=0 quoteRaw=0` +- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${AVALANCHE_RPC_URL}" +export INTEGRATION="0xf1B771c95573113E993374c0c7cB2dc1a7908B12" +export POOL="0x287edaBDA35195592d7CACe2C1A75eC66caF1D70" +export BASE_TOKEN="0x04e1e22b0d41e99f4275bd40a50480219bc9a223" +export QUOTE_TOKEN="0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E" +export BASE_IN_RAW=REPLACE_BASE_IN_RAW +export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW +cast send "$BASE_TOKEN" 'approve(address,uint256)(bool)' "$INTEGRATION" "$BASE_IN_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$INTEGRATION" 'swapExactIn(address,address,uint256,uint256)' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `56` BSC (BNB Chain) `cWAUSDT/cWUSDC` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${BSC_RPC_URL}" +export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E" +export PAIR="0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8" +export TOKEN_A="0xe1a51Bc037a79AB36767561B147eb41780124934" +export TOKEN_B="0x5355148C4740fcc3D7a96F05EdD89AB14851206b" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `56` BSC (BNB Chain) `cWAUSDT/cWUSDT` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${BSC_RPC_URL}" +export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E" +export PAIR="0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523" +export TOKEN_A="0xe1a51Bc037a79AB36767561B147eb41780124934" +export TOKEN_B="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `137` Polygon `cWAUSDT/cWUSDC` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${POLYGON_MAINNET_RPC}" +export ROUTER="0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff" +export PAIR="0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c" +export TOKEN_A="0xf12e262F85107df26741726b074606CaFa24AAe7" +export TOKEN_B="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `137` Polygon `cWAUSDT/cWUSDT` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${POLYGON_MAINNET_RPC}" +export ROUTER="0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff" +export PAIR="0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E" +export TOKEN_A="0xf12e262F85107df26741726b074606CaFa24AAe7" +export TOKEN_B="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `42220` Celo `cWAUSDT/cWUSDC` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${CELO_RPC_URL}" +export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121" +export PAIR="0xd3B55d6d7C08fDbF5F201e486992643cfF410d91" +export TOKEN_A="0xC158b6cD3A3088C52F797D41f5Aa02825361629e" +export TOKEN_B="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `42220` Celo `cWAUSDT/cWUSDT` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${CELO_RPC_URL}" +export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121" +export PAIR="0xEe9eEBf89C1424e63eFc888929E43a9423357D39" +export TOKEN_A="0xC158b6cD3A3088C52F797D41f5Aa02825361629e" +export TOKEN_B="0x73376eB92c16977B126dB9112936A20Fa0De3442" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `43114` Avalanche C-Chain `cWAUSDT/cWUSDC` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${AVALANCHE_RPC_URL}" +export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4" +export PAIR="0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE" +export TOKEN_A="0xff3084410A732231472Ee9f93F5855dA89CC5254" +export TOKEN_B="0x0C242b513008Cd49C89078F5aFb237A3112251EB" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` + +### `43114` Avalanche C-Chain `cWAUSDT/cWUSDT` + +```bash +source smom-dbis-138/scripts/load-env.sh >/dev/null +export RPC_URL="${AVALANCHE_RPC_URL}" +export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4" +export PAIR="0x418322F48D857277ec4BCc96Bc1580aCCB7EA253" +export TOKEN_A="0xff3084410A732231472Ee9f93F5855dA89CC5254" +export TOKEN_B="0x8142BA530B08f3950128601F00DaaA678213DFdf" +export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW +export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW +export DEADLINE="$(( $(date +%s) + 3600 ))" +export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")" +# Optional: remove bad LP first if you control LP tokens for this pair. +cast send "$TOKEN_A" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_A_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$TOKEN_B" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_B_RAW" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +cast send "$ROUTER" 'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \ + "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \ + --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL" +``` diff --git a/docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md b/docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md new file mode 100644 index 00000000..3e8c4a0d --- /dev/null +++ b/docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md @@ -0,0 +1,60 @@ +# cW Token USD Pricing (Ethereum Mainnet) + +This runbook explains how to attach **USD context** to wrapped basket tokens (`cW*`) when block explorers show **balance** but **$0 value** (no listed market price). + +## Tooling + +From the repo root: + +```bash +./scripts/deployment/price-cw-token-mainnet.sh +./scripts/deployment/price-cw-token-mainnet.sh --json | jq . +``` + +The script sources `scripts/lib/load-project-env.sh` when present so addresses match your `smom-dbis-138/.env` (or overrides). + +**Dependencies:** `cast` (Foundry), `python3`, and `jq` (for `--json`). + +## What the script reports + +1. **Accounting assumption (1 cWUSDT ≈ 1 USD)** + Use only if your policy treats the wrapper as tracking the underlying stable 1:1. Appropriate for internal books and dashboards where you need a **single consistent mark** without relying on DEX liquidity. + +2. **DODO PMM integration — `getPoolPriceOrOracle` / `getPoolPrice`** + Reads `DODO_PMM_INTEGRATION_MAINNET` for the configured pool (`POOL_CWUSDT_USDC_MAINNET`). The integration returns a `uint256` scaled by **1e18** in the project docs when the oracle is aligned with “USD.” + **Important:** For stable/stable pools, the raw integration mid can disagree with **reserve-implied** prices depending on base/quote orientation and PMM parameters. Treat this as one signal, not the only mark. + +3. **Implied from vault reserves** + Uses `getPoolReserves` on the same integration for **base** and **quote** raw balances, then applies **token `decimals()`** for cWUSDT and **mainnet canonical USDC** (`USDC_MAINNET`, default `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48`). + Computes **USDC per 1 cWUSDT** when base/quote order matches the pool (cWUSDT vs USDC). This is a strong **sanity check** for deep stable pools; thin or imbalanced pools skew the ratio. + +4. **Chainlink ETH/USD (macro only)** + Optional reference to the standard ETH/USD feed (`CHAINLINK_ETH_USD_FEED`). This is **not** a direct cW* price; it is useful for macro context or cross-checking RPC health. + +## Environment overrides + +| Variable | Role | +|----------|------| +| `ETHEREUM_MAINNET_RPC` | Mainnet JSON-RPC endpoint | +| `DODO_PMM_INTEGRATION_MAINNET` | DODO PMM integration contract | +| `POOL_CWUSDT_USDC_MAINNET` | cWUSDT/USDC pool address | +| `CWUSDT_MAINNET` | cWUSDT token | +| `USDC_MAINNET` | Mainnet canonical USDC (do not substitute Chain 138 `OFFICIAL_USDC_ADDRESS` for this script) | +| `CHAINLINK_ETH_USD_FEED` | Chainlink ETH/USD aggregator | + +## Etherscan and “$0 value” + +Explorers derive the **Value** column from **external** price feeds (Etherscan relies heavily on **CoinGecko** / similar for Ethereum Mainnet ERC-20 USD). Custom `cW*` tokens usually have **no** listing for that contract on chain ID **1**, so **USD shows as zero** even when balances and pools are real. + +- **Internal / treasury marks:** use this script’s **accounting line**, **reserve-implied** USDC ratio, or policy—not Etherscan’s Value column. +- **Actually changing Etherscan’s Value:** requires **off-chain** listing so aggregators publish a USD price for the **Mainnet** contract. Step-by-step: [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](../04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) (CoinGecko/CMC submission ties to [CMC_COINGECKO_SUBMISSION_RUNBOOK.md](../04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md)). + +## Broader cW* price table + +A generated multi-chain table (mid prices from PMM where available) lives in: + +`docs/03-deployment/CW_PUBLIC_NETWORK_PRICES.md` + +## Extending to other tokens + +The shell script is parameterized by env vars for **cWUSDT** and its **USDC** pool. For other `cW*` assets, point `CWUSDT_MAINNET`, `POOL_*`, and (if needed) quote token at the correct mainnet addresses and re-run. For portfolio-level marks (CoinGecko, OTC, fund admin), use your **external** pricing process; this repo script stays **on-chain** and **policy-transparent**. diff --git a/docs/03-deployment/DBIS_PHASES_1_TO_3_PRODUCTION_GATE.md b/docs/03-deployment/DBIS_PHASES_1_TO_3_PRODUCTION_GATE.md index 8b16e396..0d32afd5 100644 --- a/docs/03-deployment/DBIS_PHASES_1_TO_3_PRODUCTION_GATE.md +++ b/docs/03-deployment/DBIS_PHASES_1_TO_3_PRODUCTION_GATE.md @@ -1,11 +1,11 @@ -# DBIS Chain 138 — Phases 1-3 Production Gate +# DeFi Oracle Meta Mainnet (Chain 138) — Phases 1-3 Production Gate **Last updated:** 2026-03-28 **Purpose:** Convert the DBIS master plan into an operational production gate. This document records which Phase 1-3 conditions are currently satisfied, which are partially satisfied, and which still block an honest production declaration. ## Overall status -**Current conclusion:** DBIS Chain 138 has a healthy Besu production base and a working Phase 3 liveness slice, but it is **not yet fully production-complete across the broader DBIS Hyperledger stack**. +**Current conclusion:** DeFi Oracle Meta Mainnet (Chain 138) has a healthy Besu production base and a working Phase 3 liveness slice, but it is **not yet fully production-complete across the broader DBIS Hyperledger stack**. ### What is genuinely production-capable now @@ -82,7 +82,7 @@ ## Production blockers -The following items still prevent a full “DBIS Chain 138 production complete” declaration: +The following items still prevent a full “DeFi Oracle Meta Mainnet (Chain 138) production complete” declaration: 1. `6201` is not a verified active secondary FireFly node and is currently treated as retired / standby until rebuilt. 2. Fabric `6000-6002` are not active peer/orderer workloads; current evidence showed placeholder CTs only, and they have now been stopped and retained as reserve inventory. diff --git a/docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md b/docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md index f076f17d..ec0cf07f 100644 --- a/docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md +++ b/docs/03-deployment/DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md @@ -64,7 +64,7 @@ The orchestrator: | **Chain 138** | If token-aggregation has no c*→WETH pool: fund deployer via **genesis alloc** or **validator transfer**. See [FUNDING_AND_DEPLOYMENT_CHECKLIST.md](FUNDING_AND_DEPLOYMENT_CHECKLIST.md). | | **Protocolink (public chains)** | Use the quote/output from `protocolink-swap-to-gas.cjs`. Build transaction via [Protocolink API](https://docs.protocolink.com/protocolink-api/overview) (estimate router data, build tx); sign with deployer key and submit. | | **Cronos (25)** | **Manual (multiple routes):** Protocolink does not support Cronos. Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/USDT/USDC → CRO; send to deployer on Cronos. Required ~15 CRO. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. | -| **Wemix (1111)** | **Manual (multiple routes):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Required ~0.4 WEMIX. List all routes: `./scripts/deployment/acquire-cro-and-wemix-gas.sh` or `--list`. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). | +| **Wemix (1111)** | **Manual (multiple routes, only if gas needs a top-up):** Use any aggregator from [config/cro-wemix-swap-routes.json](../../config/cro-wemix-swap-routes.json) (SwapSpace, ChangeNOW, SimpleSwap, StealthEX) to swap ETH/BNB/POL → WEMIX; send to deployer on chain 1111. Current blocker is no longer native gas by default; the live gap is LINK funding on the deployed WEMIX bridge contracts plus a proof transfer. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). | --- diff --git a/docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md b/docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md index 5e82e3a9..fe3a9f3d 100644 --- a/docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md +++ b/docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md @@ -1,19 +1,19 @@ # Mr. Promod Uniswap V2 Live Pair Discovery -- Generated: `2026-04-18T17:04:47Z` +- Generated: `2026-04-22T04:59:28Z` - Live pairs discovered: `19` -- Healthy live pairs: `7` +- Healthy live pairs: `10` - Write mode: `False` | Chain | Network | Env Ready | Live Pairs Found | Healthy Live Pairs | |---|---|---|---|---| -| `1` | Ethereum Mainnet | `True` | `cWUSDC/USDC`, `cWUSDT/cWUSDC` | — | +| `1` | Ethereum Mainnet | `True` | `cWUSDC/USDC`, `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `10` | Optimism | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `25` | Cronos | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `56` | BSC (BNB Chain) | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `100` | Gnosis Chain | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` | -| `137` | Polygon | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | — | +| `137` | Polygon | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `42220` | Celo | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` | -| `43114` | Avalanche C-Chain | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | — | +| `43114` | Avalanche C-Chain | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `8453` | Base | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` | | `42161` | Arbitrum One | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` | diff --git a/docs/03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md b/docs/03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md index a188ea4e..c7f19d9e 100644 --- a/docs/03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md +++ b/docs/03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md @@ -40,7 +40,7 @@ This checklist tracks **proxmox-repo automation** and **sibling repos** (`../com | RPC `192.168.11.221:8545` / `192.168.11.211:8545` | HTTP 201 | | SSH `root@192.168.11.10` / `.11` | OK (BatchMode) | | `./scripts/run-completable-tasks-from-anywhere.sh` | Exit 0 | -| `./scripts/verify/check-contracts-on-chain-138.sh` | 59/59 present | +| `./scripts/verify/check-contracts-on-chain-138.sh` | 61/61 present (per current script address list) | | `E2E_ACCEPT_502_INTERNAL=1 ./scripts/verify/verify-end-to-end-routing.sh` | 37 domains, 0 failed; report under `docs/04-configuration/verification-evidence/e2e-verification-20260325_165153/` | | `https://phoenix.sankofa.nexus/`, `https://sankofa.nexus/` | HTTP 200 | | `http://192.168.11.50:4000/health`, `:51:3000`, `:52:8080/health/ready` | No HTTP response from operator host (hosts ping; services may be down, firewalled, or not bound) — **re-check on Proxmox / in-container** | diff --git a/docs/03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md b/docs/03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md index 689947ae..20ee8c4b 100644 --- a/docs/03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md +++ b/docs/03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md @@ -2,12 +2,14 @@ > Historical note (2026-03-26): this status tracker includes earlier PMM-address snapshots. The current canonical Chain 138 PMM stack is `DODOPMMIntegration=0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` and `DODOPMMProvider=0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`. -**Last Updated:** 2026-03-04 +**Last Updated:** 2026-04-19 **Purpose:** Ordered list of remaining deployments to achieve **maximum effective execution across all networks** (13-chain hub model: Chain 138 + 12 edge/alt). Use after [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST](../00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) and [DEPLOYMENT_ORDER_OF_OPERATIONS](DEPLOYMENT_ORDER_OF_OPERATIONS.md). -**Routing context:** [routing-matrix-13x13.json](../../smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json) — 138↔Celo (42220) **B/SBS** (CCIP bridges deployed 2026-03-04); 138↔Wemix (1111) **Tabled** (see below). Full coverage = all 13 chains with bridge + liquidity where designed. +> Sync note (2026-04-19): this file is now aligned to the current generated deployment graph and audit output. Older sections below still preserve historical run context, but current truth for public-chain `cW*` deployment should be cross-checked against `cross-chain-pmm-lps/config/deployment-status.json`, `reports/status/cw-mesh-deployment-matrix-latest.json`, and `reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json`. See `reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_20260419.md`. -**Wemix (1111) tabled:** There is no in-repo route (aggregator/DEX integration) to swap ETH, BNB, or Polygon to WEMIX. Deployer needs ~0.4 WEMIX for gas to deploy CCIP bridges on Wemix. Until an automated route exists or WEMIX is acquired manually (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)), **all Wemix network deployments are tabled**. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). +**Routing context:** [routing-matrix-13x13.json](../../smom-dbis-138/real-robinhood/data/routing-matrix-13x13.json) — 138↔Celo (42220) remains in the completed set. Current repo-backed Wemix status is best described as deployed-and-wired but still incomplete until LINK funding and a proof transfer are recorded. Full coverage = all 13 chains with bridge + liquidity where designed. + +**Wemix (1111) narrowed blocker:** The deployer now has native WEMIX gas and the WEMIX bridge contracts are deployed and destination-wired. The remaining blocker is **LINK funding plus a successful proof transfer** on `1111`. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md) and [CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md](CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md). --- @@ -18,8 +20,8 @@ | A | A.1 Mint cUSDT/cUSDC (138) | ✅ Done (2026-03-04) | Minted via `mint-for-liquidity.sh` using `GAS_PRICE_138=500000000000`; cUSDT/cUSDC mints confirmed at blocks 2551250/2551251/2551253/2551254. | | A | A.2 Add liquidity PMM (138) | ⚠️ Historical snapshot (2026-03-04) | Earlier run referenced cUSDT/cUSDC pool `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8` on a superseded stack; use [LIQUIDITY_POOLS_MASTER_MAP.md](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) for current live pools. | | B | B.1 Celo CCIP bridges | ✅ Done | Deployed; 0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04 (WETH9), 0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08 (WETH10); .env updated; complete-config Celo→138 OK. | -| B | **B.2a Add Cronos (25)** | ⏳ Pending | Fund deployer with ~15 CRO ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); set CRONOS_RPC, CCIP_ROUTER_CRONOS, WETH9_CRONOS, WETH10_CRONOS in .env; run `deploy-bridges-config-ready-chains.sh cronos` then `complete-config-ready-chains.sh`. | -| B | B.2b Wemix CCIP bridges | 📋 Tabled | No route to acquire WEMIX from ETH/BNB/POLY in-repo; tabled until route exists or manual acquisition. Fund ~0.4 WEMIX ([acquire-cro-and-wemix-gas.sh](../../scripts/deployment/acquire-cro-and-wemix-gas.sh)); then `deploy-bridges-config-ready-chains.sh wemix` + complete-config. See [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md). | +| B | **B.2a Add Cronos (25)** | ⚠️ Historical line item | Keep only as historical context. Current generated deployment artifacts show Cronos in the active public-chain deployment set and in the complete wave-1 wrapped-mesh set. | +| B | B.2b Wemix CCIP bridges | ⏳ Funding/proof pending | Bridge contracts are deployed and destination wiring exists. Remaining work: fund LINK on `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX`, then run a small `138 -> 1111` proof transfer. | | B | **Gnosis CCIP bridges** | ✅ Done (2026-03-04) | Deployed: WETH9 `0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82`, WETH10 `0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44`; .env updated. | | B | B.3 Fund CCIP with LINK | ⏳ Blocked | `scripts/deployment/fund-ccip-bridges-with-link.sh` run (2026-03-04): many lanes failing with insufficient LINK or gas, Chain 138 Invalid params; top up LINK balances and gas on each chain before retry. | | C | C.1–C.2 cW* + edge pools | 📋 Runbook | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md). | @@ -48,9 +50,9 @@ |------|--------| | Chain 138 core + PMM | 59/59 contracts (check-contracts-on-chain-138.sh); DODOPMMIntegration + 3 pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC) created; DODOPMMProvider deployed. | | Chain 138 liquidity | **Re-verify required** — prior run reported cUSDT/cUSDC liquidity add; this checklist previously showed zero liquidity. Treat liquidity state as unknown until reconfirmed on-chain. | -| CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured (B/SBS). Celo CCIP bridges deployed 2026-03-04; Gnosis, Cronos config-ready; Wemix (1111) **Tabled** (no ETH/BNB/POLY→WEMIX route; see [WEMIX_ACQUISITION_TABLED.md](WEMIX_ACQUISITION_TABLED.md)). | +| CCIP 138 → 1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220 (Celo)** | Configured/live in current repo-backed status. Wemix (1111) is still the unresolved lane. | | Alltra 138 ↔ 651940 | ALT path live. | -| cW* on public chains | Addresses in .env / design; **deployment-status.json empty** — no cW* pool addresses. | +| cW* on public chains | No longer design-only. Current machine-readable deployment artifacts show active `cW*` inventory on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`; `1111` remains deferred. | | LINK for CCIP | Fund bridges per lane so cross-chain messages execute. | --- @@ -71,30 +73,30 @@ ## Phase B — Bridge coverage (all 13 chains) -**Goal:** Turn **TBD** into **B/SBS** for Celo and Wemix; ensure LINK-funded lanes so routes execute. +**Goal:** Keep only the truly incomplete bridge lanes and fee-funding gaps in view. Celo is already in the completed public-chain set; Wemix remains the unresolved lane in current repo-backed status. | Step | Action | Ref | |------|--------|-----| -| B.1 | **Celo (42220):** Deploy CCIP WETH9/WETH10 bridges on Celo; add 138↔Celo destinations on both sides; fund bridges with LINK. | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md). Preflight: `./scripts/deployment/preflight-config-ready-chains.sh celo`. Deploy: `./scripts/deployment/deploy-bridges-config-ready-chains.sh celo`; then `complete-config-ready-chains.sh`. | +| B.1 | **Celo (42220):** Treat as completed for deployment coverage. Remaining work, if any, is verification/publication hygiene rather than initial deployment. | [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) | | B.2 | **Wemix (1111):** Same as B.1 for Wemix. Confirm WETH/USDT/USDC addresses on scan.wemix.com; set in token-mapping and .env. | Same runbook; `deploy-bridges-config-ready-chains.sh wemix`. [REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST](../00-meta/REQUIRED_FIXES_GAPS_AND_DEPLOYMENTS_LIST.md) §2.2 (Wemix tokens). | | B.3 | **Fund all CCIP bridges with LINK** (138 and each destination). Run `./scripts/deployment/fund-ccip-bridges-with-link.sh` (dry-run first). | [CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING](../../smom-dbis-138/docs/deployment/CCIP_BRIDGE_DESTINATIONS_AND_LINK_FUNDING.md) | | B.4 | **(Optional)** LINK support on Mainnet relay for LINK transfers. | [RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK](../07-ccip/RELAY_BRIDGE_ADD_LINK_SUPPORT_RUNBOOK.md) | -**Outcome:** 138↔1, 56, 137, 10, 42161, 43114, 8453, 100, 25, **42220**, **1111** all B/SBS; 138↔651940 remains ALT. Routing matrix TBD cells removed. +**Outcome:** 138↔1, 56, 137, 10, 42161, 43114, 8453, 100, 25, and **42220** are in the current completed/active set. **1111** is still not there in the repo-backed graph. 138↔651940 remains ALT. --- ## Phase C — Public-chain cW* and edge pools -**Goal:** Enable swap-bridge-swap and arbitrage on **public chains** (cW* tokens + DODO/Uniswap edge pools per pool-matrix). +**Goal:** Track the remaining gaps after substantial public-chain `cW*` rollout already landed. | Step | Action | Ref | |------|--------|-----| -| C.1 | **Deploy or bridge cW* tokens** per chain (1, 56, 137, 10, 42161, 8453, 43114, 100, 25, 42220, 1111). Use cross-chain-pmm-lps token-map and deployment recipe; record addresses in deployment-status.json and .env. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) §3 | -| C.2 | **Create and fund PMM edge pools** (cW*/USDC, cW*/USDT, etc.) per [pool-matrix.json](../../cross-chain-pmm-lps/config/pool-matrix.json). Populate deployment-status.json with pool addresses. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [LIQUIDITY_POOLS_MASTER_MAP](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) § Public-chain cW* | +| C.1 | **Remaining token gaps:** focus on chains still deferred or undocumented, with Wemix first. The active set already includes `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [TOKEN_CONTRACT_DEPLOYMENTS_REMAINING](../11-references/TOKEN_CONTRACT_DEPLOYMENTS_REMAINING.md) §3 | +| C.2 | **Remaining pool gaps:** do not assume public-chain edge pools are globally missing. The current generated artifacts show meaningful PMM and wrapped-mesh rollout already present; work remaining is now per-chain/per-venue and should be taken from the latest mesh matrix and phase-completion artifacts. | [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK](PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md), [LIQUIDITY_POOLS_MASTER_MAP](../11-references/LIQUIDITY_POOLS_MASTER_MAP.md) § Public-chain cW* | | C.3 | **Stabilization bot / peg bands** (optional): Run bot and peg-band config from cross-chain-pmm-lps for cW* peg maintenance. | [cross-chain-pmm-lps/README.md](../../cross-chain-pmm-lps/README.md) | -**Outcome:** Each public chain has cW* and edge pools so SBS and arbitrage can execute on both 138 and edge. +**Outcome:** The active public-chain set is already materially populated; remaining work is to close the deferred or contradictory lanes and normalize proof of completion. --- diff --git a/docs/03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md b/docs/03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md index 59f34977..e3e210e5 100644 --- a/docs/03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md +++ b/docs/03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md @@ -21,7 +21,7 @@ ## On-chain verification (Chain 138) **Last run (2026-03-01):** `./scripts/verify/check-contracts-on-chain-138.sh` (use Core RPC URL or run from LAN). -**Result:** **59 present, 0 missing** (59 addresses per check-contracts-on-chain-138.sh; list expanded 2026-03-06). TransactionMirror: `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc`. Current canonical DODO cUSDT/cUSDC pool: `0xff8d3b8fDF7B112759F076B69f4271D4209C0849`. **DeployCompliantFiatTokens** was run 2026-02-27 (10 tokens: cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT); see [CHAIN138_TOKEN_ADDRESSES](../11-references/CHAIN138_TOKEN_ADDRESSES.md). +**Result:** **61 present, 0 missing** (61 addresses per check-contracts-on-chain-138.sh; list expanded through 2026-03-06 and later). TransactionMirror: `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc`. Current canonical DODO cUSDT/cUSDC pool: `0xff8d3b8fDF7B112759F076B69f4271D4209C0849`. **DeployCompliantFiatTokens** was run 2026-02-27 (10 tokens: cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT); see [CHAIN138_TOKEN_ADDRESSES](../11-references/CHAIN138_TOKEN_ADDRESSES.md). --- diff --git a/docs/03-deployment/WEMIX_ACQUISITION_TABLED.md b/docs/03-deployment/WEMIX_ACQUISITION_TABLED.md index 475cc3f4..2c06ba1a 100644 --- a/docs/03-deployment/WEMIX_ACQUISITION_TABLED.md +++ b/docs/03-deployment/WEMIX_ACQUISITION_TABLED.md @@ -1,22 +1,23 @@ # Wemix (1111) deployments — tabled **Last Updated:** 2026-03-06 -**Status:** All Wemix network deployments (CCIP bridges, config, LINK funding on 1111) are **tabled** until the deployer can acquire WEMIX for gas. +**Status:** Historical gas-blocking memo. The deployer now has native WEMIX gas and the bridge contracts are deployed; the remaining blocker is LINK funding plus a successful proof transfer on `1111`. --- ## Reason -- Deployer needs **~0.4 WEMIX** (native gas) on chain 1111 to deploy and configure CCIP bridges. -- There is **no in-repo route** (aggregator/DEX integration or script) to swap **ETH**, **BNB**, or **Polygon (POL)** to WEMIX. -- [TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER](../11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md) lists Wemix as “Bridge/DEX” only — i.e. manual acquisition. +- This document recorded the earlier state where the deployer lacked native WEMIX gas. +- Current operator state has native WEMIX gas available and deployed `CCIPWETH9_BRIDGE_WEMIX` / `CCIPWETH10_BRIDGE_WEMIX`. +- The remaining live blocker is that the WEMIX bridge contracts still hold `0 LINK`, so CCIP execution cannot be promoted to live yet. --- ## Options to un-table -1. **Manual acquisition:** Use a third-party aggregator (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)) to swap ETH/BNB/POL to WEMIX and send to the deployer address on 1111. Then run `deploy-bridges-config-ready-chains.sh wemix` and complete-config. -2. **In-repo route:** Implement or integrate an aggregator/DEX route (e.g. LiFi, Jumper, or chain 1111 DEX) that can swap ETH/BNB/POLY → WEMIX and credit the deployer; then document and run the same deploy/config steps. Placeholder script: `scripts/deployment/wemix-acquire-via-lifi.js` (outputs manual instructions and deployer address; extend when LiFi/Jumper support 1111). +1. **Fund LINK on the deployed bridges:** top up `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` with enough LINK for operational CCIP fees. +2. **Prove the lane:** run a small `138 -> 1111` bridge transfer and record the receipt as the promotion artifact. +3. **Only if gas drops again:** use a third-party aggregator (e.g. [SwapSpace](https://swapspace.co/exchange-pairs/wemix-bnb), [ChangeNOW](https://changenow.io/currencies/wemix-main/polygon-matic)) to top up native WEMIX. **Deployer gas auto-route:** The orchestrator `./scripts/deployment/deployer-gas-auto-route.sh` includes Wemix (1111): when run, it prints manual instructions and links for WEMIX acquisition. See [DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md](DEPLOYER_GAS_AUTO_ROUTE_RUNBOOK.md). @@ -24,9 +25,9 @@ ## What remains tabled -- B.2 Wemix CCIP bridges (`deploy-bridges-config-ready-chains.sh wemix`, complete-config 138↔1111). -- Any Phase C/D work that depends on Wemix (cW* or edge pools on 1111). -- Wemix token verification and production use until bridges are deployed. +- LINK funding on the deployed WEMIX bridges. +- A successful `138 -> 1111` bridge proof transfer. +- Any Phase C/D work that depends on a fully live `1111` lane (cW* rollout or edge pools on Wemix). --- diff --git a/docs/03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md b/docs/03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md index cb5318ab..ab8d3820 100644 --- a/docs/03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md +++ b/docs/03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md @@ -1,35 +1,103 @@ # WEMIX Bridge Verification Status -**Last Updated:** 2026-04-18 +**Last Updated:** 2026-04-20 -## Current State +## Current Repo-Backed State -The WEMIX bridge contracts are: +The current repo-backed status for WEMIX `1111` is still **not fully live**, but the lane is farther along than the older checklist snapshot suggested. -- deployed live -- wired bidirectionally with Chain 138 -- **not yet confirmed as explorer-verified/published** - -Contracts: +The strongest current evidence in this checkout says: - `CCIPWETH9_BRIDGE_WEMIX=0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04` - `CCIPWETH10_BRIDGE_WEMIX=0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08` +- both addresses return deployed bytecode on `https://api.wemix.com` +- Chain 138 WETH9/WETH10 bridges already include the Wemix selector `5142893604156789321` +- the Wemix WETH bridge contracts report Chain 138 as a configured destination +- the remaining gap depends on activation scope: + - for **inbound-only `138 -> 1111`**, the missing proof artifact is the main blocker + - for **full bidirectional activation**, outbound fee coverage on the WEMIX-side bridges is still missing and both WEMIX bridge contracts currently hold `0 LINK` -## Verified Blockers +What is still not true yet: -1. The repo did not previously have a WEMIX-specific verification helper. -2. WEMIX public explorer pages are behind bot protection, so direct scripted page checks are unreliable. -3. WEMIX explorer verification needs an `api-key`, and the repo did not previously expose a dedicated `WEMIXSCAN_API_KEY`. -4. The WEMIX deploy required a `paris` EVM target, so verification must use that same build profile. +- `bridgeAvailable` is not promoted to `true` in the generated deployment graph +- no machine-generated inventory yet treats the Wemix lane as live +- there is not yet a repo-backed successful bridge test receipt for `138 -> 1111` -## Repo-Native Verification Command +Primary references: + +- `cross-chain-pmm-lps/config/deployment-status.json` +- `reports/status/cw-mesh-deployment-matrix-latest.json` +- `docs/03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md` +- `reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_20260419.md` + +## Important Contradiction + +Older checklist snapshots in this repo still show the WEMIX bridge env vars as unset and treat the lane as purely undeployed. + +That is no longer accurate for the current operator environment. The more precise canonical statement is: + +- the WEMIX bridge contracts are deployed +- the lane is wired in both directions +- the lane is still **not promotable to the repo's current full-bidirectional live standard** because outbound fee funding and a successful bridge test are still missing + +## Activation Modes + +### Inbound-only activation on WEMIX + +Use this mode when the immediate target is to make `138 -> 1111` receipt operational. + +Required: + +1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` are deployed. +2. The Chain 138 bridges are configured to send to the WEMIX bridges. +3. The WEMIX bridges are configured to recognize Chain 138 as a valid peer. +4. A successful `138 -> 1111` proof transfer is recorded. + +Not required for receive-only activation: + +- LINK balance on the WEMIX bridge contracts +- WEMIX-side outbound CCIP fee funding + +Reason: + +- In the current bridge implementation, CCIP fees are paid on `sendCrossChain(...)`. +- `ccipReceive(...)` on the WEMIX side validates and releases bridged assets but does not pay a fee. + +### Full bidirectional activation on WEMIX + +Use this mode when `1111 -> 138` or `1111 -> other-chain` sending must also be live. + +Required in addition to the inbound-only conditions: + +1. The WEMIX bridges can pay outbound CCIP fees. +2. `CCIPWETH9Bridge` may use LINK or native WEMIX, because `feeToken` can be updated to `address(0)`. +3. `CCIPWETH10Bridge` still requires LINK, because its constructor and `updateFeeToken(...)` both forbid `address(0)`. +4. Successful outbound proof transfer(s) are recorded from `1111`. + +## What Would Change This Status + +WEMIX can move to a verified-live state only after all of the following are repo-backed and consistent for the activation mode being promoted: + +1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` remain recorded in the canonical env surface. +2. the operator checklist, routing docs, and generated inventory all agree on the same WEMIX bridge addresses and activation scope. +3. `cross-chain-pmm-lps/config/deployment-status.json` promotes `1111` out of non-live state and sets `bridgeAvailable=true`. +4. a successful proof transfer is recorded for the promoted mode. +5. if full bidirectional activation is the target, the WEMIX bridge contracts have outbound fee coverage: + - `WETH9`: LINK or native WEMIX + - `WETH10`: LINK + +## Verification Helper + +The repo-native verification helper still exists: ```bash cd smom-dbis-138 ./scripts/deployment/verify-wemix-bridges.sh ``` -Required env: +But this should only be used after the deployment addresses themselves are first reconciled. + +Required env remains: - `WEMIXSCAN_API_KEY` - `WEMIX_RPC` @@ -40,9 +108,9 @@ Required env: - `WETH10_WEMIX` - `LINK_TOKEN_WEMIX` -## Important Build Assumption +## Build Assumption -Verification must use: +If and when WEMIX verification is attempted, the repo documents the required build profile as: - Solidity `0.8.20` - optimizer enabled diff --git a/docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md b/docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md index 971d7897..07357fbb 100644 --- a/docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md +++ b/docs/04-configuration/ADD_CHAIN138_TO_LEDGER_LIVE.md @@ -1,4 +1,4 @@ -# Add Chain 138 (Defi Oracle Meta Mainnet) to Ledger Live +# Add Chain 138 (DeFi Oracle Meta Mainnet) to Ledger Live **Last Updated:** 2026-02-13 **Status:** Action plan and submission guide @@ -16,9 +16,9 @@ The form has been submitted. Next: await Ledger’s response and follow their pr **Copy-paste block:** ``` -We would like to add Defi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet. +We would like to add DeFi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet. -- Chain name: Defi Oracle Meta Mainnet +- Chain name: DeFi Oracle Meta Mainnet - Chain ID: 138 (0x8a) - EVM-compatible (EIP-155, EIP-1559), standard derivation 44'/60' - Public RPCs and block explorer are live; chain is listed on Chainlist (chainlist.org/chain/138). @@ -37,7 +37,7 @@ Preferred contact: [your email/Telegram] ## Overview -Ledger Live does not support user-added custom EVM networks. To have **Defi Oracle Meta Mainnet (Chain ID 138)** appear and work in Ledger Live (desktop/mobile), the chain must be added to Ledger’s supported list via their **official blockchain integration process**. +Ledger Live does not support user-added custom EVM networks. To have **DeFi Oracle Meta Mainnet (Chain ID 138)** appear and work in Ledger Live (desktop/mobile), the chain must be added to Ledger’s supported list via their **official blockchain integration process**. This doc gives the steps and materials to request and support that integration. @@ -52,12 +52,12 @@ This doc gives the steps and materials to request and support that integration. 1. **Open the Ledger blockchain integration request form:** **https://tally.so/r/mORpv8** -2. **Fill in the form** (e.g. “What are you looking from Ledger?”) with a short request to add **Defi Oracle Meta Mainnet (Chain ID 138)** to Ledger Live. Suggested text: +2. **Fill in the form** (e.g. “What are you looking from Ledger?”) with a short request to add **DeFi Oracle Meta Mainnet (Chain ID 138)** to Ledger Live. Suggested text: ``` - We would like to add Defi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet. + We would like to add DeFi Oracle Meta Mainnet (Chain ID 138) to Ledger Live so users can manage ETH and tokens on this EVM chain natively in Ledger Wallet. - - Chain name: Defi Oracle Meta Mainnet + - Chain name: DeFi Oracle Meta Mainnet - Chain ID: 138 (0x8a) - EVM-compatible (EIP-155, EIP-1559), standard derivation 44'/60' - Public RPCs and block explorer are live; chain is listed on Chainlist (chainlist.org/chain/138). @@ -103,7 +103,7 @@ Our canonical chain spec is in this repo at `pr-workspace/chains/_data/chains/ei | Field | Value | |-------|--------| -| **name** | Defi Oracle Meta Mainnet | +| **name** | DeFi Oracle Meta Mainnet | | **chainId** | 138 | | **networkId** | 1 | | **shortName** | dfio-meta-main | diff --git a/docs/04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md b/docs/04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md index bdbe3fe4..85436b0f 100644 --- a/docs/04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md +++ b/docs/04-configuration/ADD_CHAIN138_TO_TRUST_WALLET.md @@ -1,4 +1,4 @@ -# Add Chain 138 (Defi Oracle Meta Mainnet) to Trust Wallet +# Add Chain 138 (DeFi Oracle Meta Mainnet) to Trust Wallet **Last Updated:** 2026-04-17 **Status:** User workaround available; official support via Wallet Core PR; token/logo submissions use Assets App; new chain business workflow may still require Trust review outside the repo path @@ -23,14 +23,14 @@ ## Option 1: Users add Chain 138 manually (available now) -Trust Wallet allows adding custom EVM networks in the app. Because **Chain 138 is listed on Chainlist**, users can add Defi Oracle Meta Mainnet without waiting for official support. +Trust Wallet allows adding custom EVM networks in the app. Because **Chain 138 is listed on Chainlist**, users can add DeFi Oracle Meta Mainnet without waiting for official support. ### Steps for users 1. **Get network info:** Open [chainlist.org/chain/138](https://chainlist.org/chain/138) and pick an RPC with a green status. 2. **In Trust Wallet:** Tap the **manage assets** icon → **+** → switch to the **Network** tab. 3. **Enter network details:** Choose **EVM**, then fill in (or paste from Chainlist): - - **Network name:** Defi Oracle Meta Mainnet + - **Network name:** DeFi Oracle Meta Mainnet - **RPC URL:** e.g. `https://rpc-http-pub.d-bis.org` or `https://rpc.d-bis.org` - **Chain ID:** 138 - **Symbol:** ETH @@ -65,7 +65,7 @@ Important: Trust’s current asset-listing docs separate **new token/logo submis ```json { "id": "dfiometa", - "name": "Defi Oracle Meta Mainnet", + "name": "DeFi Oracle Meta Mainnet", "coinId": 10000138, "symbol": "ETH", "decimals": 18, @@ -113,9 +113,9 @@ When contacting Trust or writing the PR description, you can use: **Copy-paste block:** ``` -Defi Oracle Meta Mainnet (Chain ID 138) — EVM-compatible chain for Trust Wallet support. +DeFi Oracle Meta Mainnet (Chain ID 138) — EVM-compatible chain for Trust Wallet support. -- Chain name: Defi Oracle Meta Mainnet +- Chain name: DeFi Oracle Meta Mainnet - Chain ID: 138 (0x8a) - Derivation: m/44'/60'/0'/0/0 (standard EVM) - Native currency: ETH, 18 decimals diff --git a/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md b/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md index 648c26e6..c450e752 100644 --- a/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md +++ b/docs/04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md @@ -6,7 +6,7 @@ --- -**Purpose**: Validated configs for MetaMask, ethers.js, and Ledger (Chain 138 – Defi Oracle Meta Mainnet). +**Purpose**: Validated configs for MetaMask, ethers.js, and Ledger (Chain 138 – DeFi Oracle Meta Mainnet). **RPC**: `https://rpc-http-pub.d-bis.org`, `https://rpc.d-bis.org`, `https://rpc2.d-bis.org`, `https://rpc.defi-oracle.io` **WS**: `wss://rpc-ws-pub.d-bis.org`, `wss://rpc.d-bis.org`, `wss://ws.rpc.d-bis.org`, `wss://ws.rpc2.d-bis.org`, `wss://wss.defi-oracle.io` **Chain ID**: 138 (`0x8a`) @@ -19,7 +19,7 @@ Use **Settings → Networks → Add network** (or “Add a network manually”) | Field | Value | |-------|--------| -| **Network name** | Defi Oracle Meta Mainnet | +| **Network name** | DeFi Oracle Meta Mainnet | | **RPC URL** | `https://rpc-http-pub.d-bis.org`, `https://rpc.d-bis.org`, `https://rpc2.d-bis.org`, or `https://rpc.defi-oracle.io` | | **Chain ID** | `138` | | **Currency symbol** | ETH | @@ -34,10 +34,10 @@ Validated: chainId `0x8a`, RPC URLs return `eth_chainId` → `0x8a`. ## 2. ethers.js (v5 / v6) ```javascript -// Chain 138 – Defi Oracle Meta Mainnet +// Chain 138 – DeFi Oracle Meta Mainnet const chain138 = { chainId: 138, - name: "Defi Oracle Meta Mainnet", + name: "DeFi Oracle Meta Mainnet", nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc-http-pub.d-bis.org", "https://rpc.d-bis.org", "https://rpc2.d-bis.org", "https://rpc.defi-oracle.io"] }, diff --git a/docs/04-configuration/CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md b/docs/04-configuration/CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md index 18d77a5a..0782a0a1 100644 --- a/docs/04-configuration/CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md +++ b/docs/04-configuration/CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md @@ -7,7 +7,7 @@ ## Purpose -This document ties together **all** wallet-related work for **Defi Oracle Meta Mainnet (Chain ID 138)** and answers: +This document ties together **all** wallet-related work for **DeFi Oracle Meta Mainnet (Chain ID 138)** and answers: 1. **Why we created the MetaMask Snap** when basic Chain 138 connectivity already works in MetaMask. 2. **Why we need Ledger Live** when we already use Ledger’s App-Ethereum (and have Chain 138 in our app-ethereum fork). diff --git a/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md b/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md index f62edbf4..d4dfa735 100644 --- a/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md +++ b/docs/04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md @@ -1,4 +1,4 @@ -# Chain 2138 – Wallet & SDK Config (Defi Oracle Meta Testnet) +# Chain 2138 – Wallet & SDK Config (DeFi Oracle Meta Testnet) **Last Updated:** 2026-03-27 **Document Version:** 1.0 @@ -6,7 +6,7 @@ --- -**Purpose:** Wallet and SDK settings for **Defi Oracle Meta Testnet** (chain ID **2138**). +**Purpose:** Wallet and SDK settings for **DeFi Oracle Meta Testnet** (chain ID **2138**). **RPC (public, chainlist):** `https://rpc.public-2138.defi-oracle.io` **WS (chainlist):** `wss://rpc.public-2138.defi-oracle.io` **Explorer (chainlist):** `https://public-2138.defi-oracle.io` @@ -21,7 +21,7 @@ Use LAN or staging RPC in place of the public URLs when testing privately. | Field | Value | |-------|--------| -| **Network name** | Defi Oracle Meta Testnet | +| **Network name** | DeFi Oracle Meta Testnet | | **RPC URL** | `https://rpc.public-2138.defi-oracle.io` (or your node) | | **Chain ID** | `2138` | | **Currency symbol** | tETH | @@ -36,7 +36,7 @@ Use LAN or staging RPC in place of the public URLs when testing privately. ```javascript const chain2138Testnet = { chainId: 2138, - name: "Defi Oracle Meta Testnet", + name: "DeFi Oracle Meta Testnet", nativeCurrency: { name: "testEther", symbol: "tETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.public-2138.defi-oracle.io"] }, diff --git a/docs/04-configuration/DEVIN_GITEA_PROXMOX_CICD.md b/docs/04-configuration/DEVIN_GITEA_PROXMOX_CICD.md new file mode 100644 index 00000000..6af93eae --- /dev/null +++ b/docs/04-configuration/DEVIN_GITEA_PROXMOX_CICD.md @@ -0,0 +1,197 @@ +# Devin → Gitea → Proxmox CI/CD + +**Status:** Working baseline for this repo +**Last Updated:** 2026-04-20 + +## Goal + +Create a repeatable path where: + +1. Devin lands code in Gitea. +2. Gitea Actions validates the repo on the site-wide `act_runner`. +3. A successful workflow calls `phoenix-deploy-api`. +4. `phoenix-deploy-api` resolves the repo/branch to a deploy target and runs the matching Proxmox publish command. +5. The deploy service checks the target health URL before it reports success. + +## Current baseline in this repo + +The path now exists for **`d-bis/proxmox`** on **`main`** and **`master`**: + +- Workflow: [deploy-to-phoenix.yml](/home/intlc/projects/proxmox/.gitea/workflows/deploy-to-phoenix.yml) +- Manual app workflow: [deploy-portal-live.yml](/home/intlc/projects/proxmox/.gitea/workflows/deploy-portal-live.yml) +- Deploy service: [server.js](/home/intlc/projects/proxmox/phoenix-deploy-api/server.js) +- Target map: [deploy-targets.json](/home/intlc/projects/proxmox/phoenix-deploy-api/deploy-targets.json) +- Current live publish script: [deploy-phoenix-deploy-api-to-dev-vm.sh](/home/intlc/projects/proxmox/scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh) +- Manual smoke trigger: [trigger-phoenix-deploy.sh](/home/intlc/projects/proxmox/scripts/dev-vm/trigger-phoenix-deploy.sh) +- Target validator: [validate-phoenix-deploy-targets.sh](/home/intlc/projects/proxmox/scripts/validation/validate-phoenix-deploy-targets.sh) +- Bootstrap helper: [bootstrap-phoenix-cicd.sh](/home/intlc/projects/proxmox/scripts/dev-vm/bootstrap-phoenix-cicd.sh) + +That default target publishes the `phoenix-deploy-api` bundle to **VMID 5700** on the correct Proxmox node and starts the CT if needed. + +A second target is now available: + +- `portal-live` → runs [sync-sankofa-portal-7801.sh](/home/intlc/projects/proxmox/scripts/deployment/sync-sankofa-portal-7801.sh) and then checks `http://192.168.11.51:3000/` + +## Flow + +```text +Devin + -> push to Gitea + -> Gitea Actions on act_runner (5700) + -> bash scripts/verify/run-all-validation.sh --skip-genesis + -> validates deploy-targets.json structure + -> POST /api/deploy to phoenix-deploy-api + -> match repo + branch + target in deploy-targets.json + -> run deploy command + -> verify target health URL + -> update Gitea commit status success/failure +``` + +## Required setup + +### 1. Runner + +Bring up the site-wide Gitea runner on VMID **5700**: + +```bash +bash scripts/dev-vm/bootstrap-gitea-act-runner-site-wide.sh +``` + +Reference: [GITEA_ACT_RUNNER_SETUP.md](GITEA_ACT_RUNNER_SETUP.md) + +### 0. One-command bootstrap + +If root `.env` already contains the needed values, use: + +```bash +bash scripts/dev-vm/bootstrap-phoenix-cicd.sh --repo d-bis/proxmox +``` + +This runs the validation gate, deploys `phoenix-deploy-api`, and smoke-checks the service. + +### 2. Deploy API service + +Deploy the API to the dev VM: + +```bash +./scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh --dry-run +./scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh --apply --start-ct +``` + +On the target VM, set at least: + +```bash +PORT=4001 +GITEA_URL=https://gitea.d-bis.org +GITEA_TOKEN= +PHOENIX_DEPLOY_SECRET= +PHOENIX_REPO_ROOT=/home/intlc/projects/proxmox +``` + +Optional: + +```bash +DEPLOY_TARGETS_PATH=/opt/phoenix-deploy-api/deploy-targets.json +``` + +For the `portal-live` target, also set: + +```bash +SANKOFA_PORTAL_SRC=/home/intlc/projects/Sankofa/portal +``` + +### 3. Gitea repo secrets + +Set these in the Gitea repository that should deploy: + +- `PHOENIX_DEPLOY_URL` +- `PHOENIX_DEPLOY_TOKEN` + +Example: + +- `PHOENIX_DEPLOY_URL=http://192.168.11.59:4001/api/deploy` +- `PHOENIX_DEPLOY_TOKEN=` + +For webhook signing, the bootstrap/helper path also expects: + +- `PHOENIX_DEPLOY_SECRET` +- `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1` only if you want webhook events themselves to execute deploys + +Do not enable both repo Actions deploys and webhook deploys for the same repo unless you intentionally want duplicate deploy attempts. + +## Adding more repos or VM targets + +Extend [deploy-targets.json](/home/intlc/projects/proxmox/phoenix-deploy-api/deploy-targets.json) with another entry. + +Each target is keyed by: + +- `repo` +- `branch` +- `target` + +Each target defines: + +- `cwd` +- `command` +- `required_env` +- optional `healthcheck` +- optional `timeout_sec` + +Example shape: + +```json +{ + "repo": "d-bis/another-service", + "branch": "main", + "target": "portal-live", + "cwd": "${PHOENIX_REPO_ROOT}", + "command": ["bash", "scripts/deployment/sync-sankofa-portal-7801.sh"], + "required_env": ["PHOENIX_REPO_ROOT"] +} +``` + +Use separate `target` names when the same repo can publish to different VMIDs or environments. + +Target-map validation is already part of: + +```bash +bash scripts/verify/run-all-validation.sh --skip-genesis +``` + +and can also be run directly: + +```bash +bash scripts/validation/validate-phoenix-deploy-targets.sh +``` + +## Manual testing + +Before trusting a new Gitea workflow, trigger the deploy service directly: + +```bash +bash scripts/dev-vm/trigger-phoenix-deploy.sh +``` + +Trigger the live portal deployment target directly: + +```bash +bash scripts/dev-vm/trigger-phoenix-deploy.sh d-bis/proxmox main portal-live +``` + +Inspect configured targets: + +```bash +curl -s http://192.168.11.59:4001/api/deploy-targets | jq . +``` + +## Recommended next expansions + +- Add a Phoenix API target for the repo that owns VMID **7800** or **8600**, depending on which deployment line is canonical. +- Add repo-specific workflows once the Sankofa source repos themselves are mirrored into Gitea Actions. +- Move secret values from ad hoc `.env` files into the final operator-managed secret source once you settle the production host for `phoenix-deploy-api`. + +## Notes + +- The Gitea workflow is gated by `scripts/verify/run-all-validation.sh --skip-genesis` before deploy. +- `phoenix-deploy-api` now returns `404` when no matching target exists and `500` when the deploy command fails. +- Commit status updates are written back to Gitea from the deploy service itself. diff --git a/docs/04-configuration/LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md b/docs/04-configuration/LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md index 03e5d7a6..468946db 100644 --- a/docs/04-configuration/LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md +++ b/docs/04-configuration/LEDGER_CHAIN138_ISSUES_AND_WORKAROUNDS.md @@ -1,4 +1,4 @@ -# Ledger Ethereum App & Ledger Live — Defi Oracle Meta Mainnet (Chain ID 138) Issues and Workarounds +# Ledger Ethereum App & Ledger Live — DeFi Oracle Meta Mainnet (Chain ID 138) Issues and Workarounds **Last Updated:** 2026-02-12 **Status:** Active reference for support and integration @@ -12,7 +12,7 @@ | **Ledger Ethereum App (device)** | ⚠️ Depends on build | Chain 138 is in **this repo’s** app-ethereum config; official Ledger app may not include it. | | **Ledger Live (desktop/mobile)** | ❌ No native support | Cannot add custom EVM networks; Chain 138 not in Ledger Live’s list. | | **Workaround** | ✅ Supported | Use **Ledger device + MetaMask** (or other wallet); add Chain 138 in the wallet via Chainlist or manually. | -| **Chainlist** | ✅ Listed | Defi Oracle Meta Mainnet (138) is on chainlist.org; RPCs and explorer configured. | +| **Chainlist** | ✅ Listed | DeFi Oracle Meta Mainnet (138) is on chainlist.org; RPCs and explorer configured. | --- @@ -60,7 +60,7 @@ So **any build produced from this repo’s app-ethereum** can show “Defi Oracl ### 2.1 No custom EVM network support - Ledger Live only supports a **fixed list** of networks (Ethereum, Polygon, Arbitrum, Base, etc.). -- **Defi Oracle Meta Mainnet (Chain ID 138) is not in that list.** +- **DeFi Oracle Meta Mainnet (Chain ID 138) is not in that list.** - There is **no in-app “Add custom network”** for arbitrary EVM chains in Ledger Live. ### 2.2 What users cannot do in Ledger Live @@ -84,7 +84,7 @@ Official Ledger support also recommends using [Chainlist to connect MetaMask to ### 3.1 Add Chain 138 via Chainlist 1. Go to [chainlist.org](https://chainlist.org) and connect **MetaMask** (with Ledger connected and selected as account). -2. Search for **“Defi Oracle Meta Mainnet”** or **Chain ID 138**. +2. Search for **“DeFi Oracle Meta Mainnet”** or **Chain ID 138**. 3. Click **“Add to MetaMask”** (or equivalent) and approve in MetaMask. Chain 138 is listed with RPCs and explorer; Chainlist will inject the correct RPC URL and chain ID. @@ -95,7 +95,7 @@ If not using Chainlist, use **Settings → Networks → Add network** with: | Field | Value | |-------|--------| -| Network name | Defi Oracle Meta Mainnet | +| Network name | DeFi Oracle Meta Mainnet | | RPC URL | `https://rpc-http-pub.d-bis.org` or `https://rpc.d-bis.org` or `https://rpc.defi-oracle.io` | | Chain ID | `138` | | Currency symbol | ETH | @@ -113,7 +113,7 @@ See also: [CHAIN138_WALLET_CONFIG_VALIDATION.md](./CHAIN138_WALLET_CONFIG_VALIDA ## 4. Chainlist and discovery -- **Chain 138** is registered as **Defi Oracle Meta Mainnet** on Chainlist (e.g. `https://chainlist.org/chain/138`). +- **Chain 138** is registered as **DeFi Oracle Meta Mainnet** on Chainlist (e.g. `https://chainlist.org/chain/138`). - This repo’s chain data: **`pr-workspace/chains/_data/chains/eip155-138.json`** includes: - RPCs: `rpc-http-pub.d-bis.org`, `rpc.d-bis.org`, `rpc2.d-bis.org`, `rpc.public-0138.defi-oracle.io`, `rpc.defi-oracle.io`, thirdweb (with API key placeholder), and matching WSS URLs. - Explorer: `https://explorer.d-bis.org`. diff --git a/docs/04-configuration/MCP_SETUP.md b/docs/04-configuration/MCP_SETUP.md index e8171904..32301b47 100644 --- a/docs/04-configuration/MCP_SETUP.md +++ b/docs/04-configuration/MCP_SETUP.md @@ -50,7 +50,7 @@ If you prefer to specify environment variables directly in the config: "command": "node", "args": ["/home/intlc/projects/proxmox/mcp-proxmox/index.js"], "env": { - "PROXMOX_HOST": "your-proxmox-ip-or-hostname", + "PROXMOX_HOST": "proxmox-api.d-bis.org", "PROXMOX_USER": "root@pam", "PROXMOX_TOKEN_NAME": "your-token-name", "PROXMOX_TOKEN_VALUE": "your-token-secret", @@ -68,7 +68,7 @@ Create a `.env` file at `/home/intlc/.env` with the following content: ```bash # Proxmox Configuration (REQUIRED) -PROXMOX_HOST=your-proxmox-ip-or-hostname +PROXMOX_HOST=proxmox-api.d-bis.org PROXMOX_USER=root@pam PROXMOX_TOKEN_NAME=your-token-name PROXMOX_TOKEN_VALUE=your-token-secret @@ -124,9 +124,11 @@ The script will: - **Privilege Separation**: Uncheck for full access or leave checked for limited permissions - Click **Add** 4. **Important**: Copy both the **Token ID** and **Secret** immediately (secret is only shown once) - - Use Token ID as `PROXMOX_TOKEN_NAME` + - Use the bare Token ID as `PROXMOX_TOKEN_NAME` when possible - Use Secret as `PROXMOX_TOKEN_VALUE` +The helpers in this repo also accept a full token id in `PROXMOX_TOKEN_NAME` such as `root@pam!mcp-server`, but the bare token name is still the cleaner convention. + ### Permission Requirements - **Basic Mode** (`PROXMOX_ALLOW_ELEVATED=false`): Minimal permissions (usually default user permissions work) @@ -190,7 +192,7 @@ If you see authentication errors: 3. Test the token manually using curl: ```bash curl -k -H "Authorization: PVEAPIToken=root@pam!token-name=token-secret" \ - https://your-proxmox-host:8006/api2/json/nodes + https://proxmox-api.d-bis.org:8006/api2/json/nodes ``` ### Permission Errors @@ -200,4 +202,3 @@ If operations fail with permission errors: 1. Check that your API token has the required permissions 2. For basic operations, ensure you have at least read permissions 3. For elevated operations, ensure `PROXMOX_ALLOW_ELEVATED=true` is set and the token has appropriate permissions - diff --git a/docs/04-configuration/NEXT_STEPS_CHAIN138_RPC.md b/docs/04-configuration/NEXT_STEPS_CHAIN138_RPC.md index a3525971..d1140ff9 100644 --- a/docs/04-configuration/NEXT_STEPS_CHAIN138_RPC.md +++ b/docs/04-configuration/NEXT_STEPS_CHAIN138_RPC.md @@ -1,4 +1,4 @@ -# Next Steps: Chain 138 RPC (Defi Oracle Meta Mainnet) – Complete with .env +# Next Steps: Chain 138 RPC (DeFi Oracle Meta Mainnet) – Complete with .env **Last Updated:** 2026-01-31 **Document Version:** 1.0 diff --git a/docs/04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md b/docs/04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md index b126af7c..9d97acce 100644 --- a/docs/04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md +++ b/docs/04-configuration/PHOENIX_DEPLOY_API_GITEA_INTEGRATION.md @@ -1,6 +1,6 @@ # Phoenix Deploy API — Gitea Integration -**Last Updated:** 2026-03-23 +**Last Updated:** 2026-04-20 **Status:** Active Documentation --- @@ -12,9 +12,9 @@ The Phoenix Deploy API ([phoenix-deploy-api/](../../phoenix-deploy-api/)) receiv ## Architecture ``` -Gitea (push/tag) → Webhook → Phoenix Deploy API → (stub: logs/queues) - ↓ - Gitea Commit Status API (pending/success/failure) +Gitea (push/tag) → Webhook / Action → Phoenix Deploy API → deploy target command + ↓ + health check + Gitea commit status ``` ## Setup @@ -31,15 +31,25 @@ GITEA_TOKEN= PHOENIX_DEPLOY_SECRET= npm start Or as systemd service on dev-vm. +**Bootstrap helper (recommended):** + +```bash +bash scripts/dev-vm/bootstrap-phoenix-cicd.sh --repo d-bis/proxmox +``` + +This runs validation, deploys `phoenix-deploy-api`, and smoke-checks `/health` and `/api/deploy-targets`. + ### 2. Gitea Webhook Configuration -**Via script (recommended):** +**Via script (for repos that are not already deploying through Gitea Actions):** ```bash # Ensure Phoenix Deploy API is running (e.g. on dev-vm at 192.168.11.59:4001) -GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea bash scripts/dev-vm/add-gitea-webhook-phoenix.sh d-bis/proxmox +GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea PHOENIX_DEPLOY_SECRET=shared-secret bash scripts/dev-vm/add-gitea-webhook-phoenix.sh some/repo ``` +Set `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1` on the deploy service host if you want webhook events to execute the default target. Leave it unset or `0` when the repo already deploys through Gitea Actions. + **Manual (per-repository):** 1. Gitea → d-bis/proxmox → Settings → Webhooks → Add Webhook @@ -70,6 +80,19 @@ Create a token at https://gitea.d-bis.org/user/settings/applications with scope } ``` +## Deploy target discovery + +```bash +curl -sS http://127.0.0.1:4001/api/deploy-targets | jq . +``` + +Targets are loaded from `phoenix-deploy-api/deploy-targets.json`. + +Current repo-shipped targets include: + +- `default` for `d-bis/proxmox` → publish `phoenix-deploy-api` to VMID `5700` +- `portal-live` for `d-bis/proxmox` → run `scripts/deployment/sync-sankofa-portal-7801.sh` and verify `http://192.168.11.51:3000/` + ## Public-sector program manifest (runtime) The API serves the repo manifest at **`GET /api/v1/public-sector/programs`** (no API key). Source file: [`config/public-sector-program-manifest.json`](../../config/public-sector-program-manifest.json). On systemd install, `install-systemd.sh` copies it next to `server.js`; override with `PUBLIC_SECTOR_MANIFEST_PATH` or `PHOENIX_REPO_ROOT`. @@ -78,8 +101,15 @@ The API serves the repo manifest at **`GET /api/v1/public-sector/programs`** (no curl -sS http://127.0.0.1:4001/api/v1/public-sector/programs | jq '.programs[].id' ``` +## Status + +- Real deploy target execution is implemented. +- Target health checks are supported. +- Gitea commit status is updated from the deploy service. +- Webhook helper supports the shared secret, and webhook deploy execution is opt-in via `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1`. + ## Next Steps -- Implement full deploy logic (Proxmox SSH, run deploy scripts) -- Integrate into Sankofa Phoenix API (VMID 8600) -- Add NPMplus proxy for phoenix-deploy if exposed publicly +- Add a Phoenix API target for `7800` or `8600`. +- Integrate into Sankofa Phoenix API (VMID 8600) if you want a single control plane. +- Add NPMplus proxy for phoenix-deploy if exposed publicly. diff --git a/docs/04-configuration/PROXMOX_API_SECRETS_DOTENV.md b/docs/04-configuration/PROXMOX_API_SECRETS_DOTENV.md index 68b11fd8..b36630bc 100644 --- a/docs/04-configuration/PROXMOX_API_SECRETS_DOTENV.md +++ b/docs/04-configuration/PROXMOX_API_SECRETS_DOTENV.md @@ -17,13 +17,15 @@ Scripts that call the Proxmox REST API (e.g. `scripts/lib/proxmox-api.sh`, `scri | Variable | Example | Description | |----------|---------|-------------| -| `PROXMOX_HOST` | `192.168.11.11` | Proxmox host (primary; e.g. r630-01). | +| `PROXMOX_HOST` | `proxmox-api.d-bis.org` | Proxmox host or Cloudflare Access entrypoint. | | `PROXMOX_PORT` | `8006` | API port. | | `PROXMOX_USER` | `root@pam` | User for the token. | -| `PROXMOX_TOKEN_NAME` | `proxmox-workspace-api` | Token ID (name). | +| `PROXMOX_TOKEN_NAME` | `proxmox-workspace-api` | Bare token name is preferred; helpers also accept a full token id such as `root@pam!proxmox-workspace-api`. | | `PROXMOX_TOKEN_VALUE` | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | Token secret (UUID). | -**Authorization header:** `PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}` +**Authorization header:** `PVEAPIToken=${PROXMOX_USER}!${bare_token_name}=${PROXMOX_TOKEN_VALUE}` + +If `PROXMOX_TOKEN_NAME` already contains the full token id (`user@realm!token-name`), active helpers in this repo normalize it or pass it through correctly so the auth header is not double-prefixed. --- @@ -40,7 +42,7 @@ This creates a new API token on the host, parses the secret from the one-time ou **Option B — Manual:** In Proxmox UI: **Datacenter → Permissions → API Tokens → Add**. Create token, copy the secret once, then set in `.env`: ```bash -PROXMOX_HOST=192.168.11.11 +PROXMOX_HOST=proxmox-api.d-bis.org PROXMOX_PORT=8006 PROXMOX_USER=root@pam PROXMOX_TOKEN_NAME=your-token-name diff --git a/docs/04-configuration/PR_ADDITIONS_VALIDATION_REPORT.md b/docs/04-configuration/PR_ADDITIONS_VALIDATION_REPORT.md index 7dc26a7b..b6f03d65 100644 --- a/docs/04-configuration/PR_ADDITIONS_VALIDATION_REPORT.md +++ b/docs/04-configuration/PR_ADDITIONS_VALIDATION_REPORT.md @@ -11,7 +11,7 @@ | Field | Requirement | Our value | Status | |-------|--------------|-----------|--------| -| **name** | string, 1–30 chars, pattern `^[\w ]+$` | "DBIS Chain 138 Token List" (24 chars) | ✅ | +| **name** | string, 1–30 chars, pattern `^[\w ]+$` | "DeFi Oracle Meta Mainnet Token List" (24 chars) | ✅ | | **timestamp** | date-time format | "2026-02-16T00:00:00.000Z" | ✅ | | **version** | { major, minor, patch } | { 1, 3, 0 } | ✅ | | **tokens** | array, 1–10000 items | 6 tokens | ✅ | @@ -43,7 +43,7 @@ cd /home/intlc/projects/token-lists && npm install && npx ajv validate -s src/to | Field | Required | Our value | Status | |-------|----------|-----------|--------| -| **name** | ✅ | "Defi Oracle Meta Mainnet" | ✅ | +| **name** | ✅ | "DeFi Oracle Meta Mainnet" | ✅ | | **shortName** | ✅ | "dfio-meta-main" — pattern `^[A-Za-z0-9-_]{1,64}$` | ✅ | | **chain** | ✅ | "dfiometa" | ✅ | | **chainId** | ✅ | 138 | ✅ | @@ -83,7 +83,7 @@ npx prettier --write _data/chains/eip155-138.json | Field | Requirement | Our value | Status | |-------|--------------|-----------|--------| | **id** | lowercase, never change | "dfiometa" | ✅ | -| **name** | readable | "Defi Oracle Meta Mainnet" | ✅ | +| **name** | readable | "DeFi Oracle Meta Mainnet" | ✅ | | **coinId** | 10000000 + chainId for EVM clones | 10000138 | ✅ | | **symbol** | native coin | "ETH" | ✅ | | **decimals** | 18 | 18 | ✅ | diff --git a/docs/04-configuration/README.md b/docs/04-configuration/README.md index 0e5d3cec..3751152f 100644 --- a/docs/04-configuration/README.md +++ b/docs/04-configuration/README.md @@ -66,7 +66,7 @@ This directory contains setup and configuration guides. **Chain 138 / Wallets (overview first; all repos in ~/projects/):** - **[CHAIN138_WALLET_REPOSITORIES.md](CHAIN138_WALLET_REPOSITORIES.md)** ⭐⭐⭐ - **Canonical layout:** metamask-integration, LedgerLive, app-ethereum, TrustWallet-Integration each in `~/projects/`. All items **Yes / Completed.** - **[CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md](CHAIN138_WALLET_ECOSYSTEM_AND_RATIONALE.md)** ⭐⭐⭐ - **Why** we have the MetaMask Snap, **why** we need Ledger Live when we already use App-Ethereum, Trust Wallet support; links to all wallet docs. -- **[ADD_CHAIN138_TO_LEDGER_LIVE.md](ADD_CHAIN138_TO_LEDGER_LIVE.md)** ⭐⭐ - Add Defi Oracle Meta Mainnet (Chain 138) to Ledger Live (request + materials). +- **[ADD_CHAIN138_TO_LEDGER_LIVE.md](ADD_CHAIN138_TO_LEDGER_LIVE.md)** ⭐⭐ - Add DeFi Oracle Meta Mainnet (Chain 138) to Ledger Live (request + materials). - **[ADD_CHAIN138_TO_TRUST_WALLET.md](ADD_CHAIN138_TO_TRUST_WALLET.md)** ⭐⭐ - Add Chain 138 to Trust Wallet (user manual add via Chainlist; official Wallet Core PR steps; materials in ~/projects/TrustWallet-Integration). - **[CHAIN138_WALLET_PROJECTS_COMPLETION_REVIEW.md](CHAIN138_WALLET_PROJECTS_COMPLETION_REVIEW.md)** ⭐⭐ - **Completion and test review:** all four projects verified; MetaMask E2E 7/7 + Snap unit tests pass; Ledger/app-ethereum/Trust status. diff --git a/docs/04-configuration/RPC_CHAIN138_VERIFICATION.md b/docs/04-configuration/RPC_CHAIN138_VERIFICATION.md index ac95b7d2..6ff337d9 100644 --- a/docs/04-configuration/RPC_CHAIN138_VERIFICATION.md +++ b/docs/04-configuration/RPC_CHAIN138_VERIFICATION.md @@ -25,7 +25,7 @@ Full stack has been proven correct: | **Proxy** | NPMplus (192.168.11.167:443) routes by Host header correctly | | **Upstream** | Besu RPC (192.168.11.221:8545 / :8546) reachable | | **RPC response** | `eth_chainId` → **0x8a** | -| **Chain ID** | **0x8a = 138** (Defi Oracle Meta Mainnet) | +| **Chain ID** | **0x8a = 138** (DeFi Oracle Meta Mainnet) | Validation command (bypasses public IP; connects directly to NPMplus on LAN): diff --git a/docs/04-configuration/RPC_VERIFICATION_MEMO.md b/docs/04-configuration/RPC_VERIFICATION_MEMO.md index bcd7f0e0..57f45789 100644 --- a/docs/04-configuration/RPC_VERIFICATION_MEMO.md +++ b/docs/04-configuration/RPC_VERIFICATION_MEMO.md @@ -1,4 +1,4 @@ -# RPC Verification Memo – Chain 138 (Defi Oracle Meta Mainnet) +# RPC Verification Memo – Chain 138 (DeFi Oracle Meta Mainnet) **Last Updated:** 2026-01-31 **Document Version:** 1.0 @@ -44,7 +44,7 @@ Response: eth_chainId → 0x8a (Chain ID 138) | **Proxy** | NPMplus routes by Host to VMID 2201 | | **Upstream** | Besu RPC (192.168.11.221:8545 / :8546) reachable and responsive | | **RPC** | `eth_chainId` returns `0x8a` (138) | -| **Chain** | Defi Oracle Meta Mainnet – sovereign EVM, no mainnet/testnet collision | +| **Chain** | DeFi Oracle Meta Mainnet – sovereign EVM, no mainnet/testnet collision | **Validation command** (from a host that can reach NPMplus, e.g. LAN with Split DNS or `--resolve`): diff --git a/docs/04-configuration/SOLACESCANSCOUT_REVIEW.md b/docs/04-configuration/SOLACESCANSCOUT_REVIEW.md index d40cba9d..4e4e40d0 100644 --- a/docs/04-configuration/SOLACESCANSCOUT_REVIEW.md +++ b/docs/04-configuration/SOLACESCANSCOUT_REVIEW.md @@ -19,7 +19,7 @@ **Live Explorer (HTML/JS version):** ``` SolaceScanScout -The Defi Oracle Meta Explorer +The DeFi Oracle Meta Explorer Navigation Links: ├── 🏠 Home @@ -34,7 +34,7 @@ Search Box: Center (address/tx hash/block number) **Next.js Frontend (layout.tsx - not deployed):** ``` SolaceScanScout -The Defi Oracle Meta Explorer +The DeFi Oracle Meta Explorer Navigation Links: ├── Blocks @@ -47,7 +47,7 @@ Navigation Links: | Feature | Status | Notes | |---------|--------|-------| -| **Logo/Branding** | ✅ Good | "SolaceScanScout" + tagline "The Defi Oracle Meta Explorer" | +| **Logo/Branding** | ✅ Good | "SolaceScanScout" + tagline "The DeFi Oracle Meta Explorer" | | **Search** | ✅ Working | Address/tx hash/block number search | | **Blocks** | ✅ Working | View all blocks | | **Transactions** | ✅ Working | View all transactions | diff --git a/docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md b/docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md index 9a847f0a..49c54b6c 100644 --- a/docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md +++ b/docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md @@ -1,8 +1,16 @@ # Storage Growth and Health — Predictable Growth Table & Proactive Monitoring -**Last updated:** 2026-03-28 +**Last updated:** 2026-04-22 **Purpose:** Real-time data collection and a predictable growth table so we can stay ahead of disk space issues on hosts and VMs. +### Recent operator maintenance (2026-04-22) + +- **r630-01 `local` (ZFS `rpool/var-lib-vz`) was full:** cause was **hundreds of `vzdump` tarballs** under `/var/lib/vz/dump` with no retention. **Pruned** to two newest per VMID; deployed **`/usr/local/sbin/prune-proxmox-vzdump-dump.sh`** + **weekly cron** on **ml110, r630-01, r630-02** via `scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh`. **`pvesh get /cluster/backup`** is still **[]** (no GUI scheduled jobs); if jobs are added later, set **maxfiles** in line with prune **keep=2** (see comment in that deploy script). +- **r630-02 `/var/lib/vz/dump`:** deleted **40** orphan **`vzdump-*.log`** files **mtime +90d**; helper: `scripts/maintenance/prune-orphan-vzdump-logs.sh --apply`. +- **Fleet `fstrim`:** `FSTRIM_TIMEOUT_SEC=25` on **r630-01** + **r630-02** — many CTs still **FITRIM not permitted**; others trimmed **~hundreds of MiB–GiB** per guest (thin pool reclaim best-effort). **`collect-storage-growth-data.sh --append`** + snapshot under `logs/storage-growth/`. +- **Stuck `vzdump` 2500 (r630-01) follow-up:** Parent **Perl** process was not enough to clear state; a **`task` worker** (UPID `vzdump:2500`) stayed in **D-state** in **`fuse_unlink` on `/etc/pve` (pmxcfs)** and held **`pve-config-2500.lock`**, blocking **`lvremove`** of **`snap_vm-2500-disk-0_vzdump`**. **Remediation:** `kill -9` (did not clear D-state); **`systemctl restart pve-cluster`** on **r630-01** cleared the task and lock; then **`lvremove` of the snap** succeeded. Incomplete **`*.tar.dat`** removed. **ZFS `rpool`:** ran **`zpool upgrade rpool`** on **r630-01** and **r630-02** (enabled `block_cloning_endian`, `physical_rewrite`; `zpool status` no longer nags to upgrade). **Caution:** restarting **`pve-cluster` on one node in a corosync cluster** can cause brief **API/UI** blip; verify quorum after. Prefer fixing root cause: avoid **`kill -9` on `vzdump`**; use Proxmox **Task viewer → Stop** when possible, or investigate hung **FUSE** before **SIGKILL** on a task. +- **Daily host backup script (r630-01):** Source **`scripts/maintenance/proxmox-backup-all-running-ct.sh`** → installed as **`/usr/local/bin/proxmox-backup.sh`** (cron `0 2 * * *` + `flock`). **Switched `--compress` to `zstd`**; **removed** fragile **`find -mtime +7` deletes** (they only matched `.tar.gz` and fought real retention). **Retention** is the weekly **`/usr/local/sbin/prune-proxmox-vzdump-dump.sh`**. Optional **`VZDUMP_SKIP_VMIDS`** to skip heavy CTs. **Cluster check:** `scripts/maintenance/verify-pve-cluster-health.sh` after any `pve-cluster` restart. + ### Recent operator maintenance (2026-03-28) - **Fleet checks (same day, follow-up):** Ran `collect-storage-growth-data.sh --append`, `storage-monitor.sh check`, `proxmox-host-io-optimize-pass.sh` (swappiness/sysstat; host `fstrim` N/A on LVM root). **Load:** ml110 load dominated by **Besu (Java)** and **cloudflared**; r630-01 load improved after earlier spike (still many CTs). **r630-01 `data` thin:** after guest `fstrim` fleet, **pvesm** used% dropped slightly (e.g. **~71.6% → ~70.2%** on 2026-03-28 — reclaim varies by CT). **ZFS:** r630-01 / r630-02 `rpool` ONLINE; last scrub **2026-03-08**, 0 errors. **`/proc/mdstat` (r630-01):** RAID devices present and active (no resync observed during check). diff --git a/docs/04-configuration/VAULT_SHARD_CUSTODY_POLICY.md b/docs/04-configuration/VAULT_SHARD_CUSTODY_POLICY.md new file mode 100644 index 00000000..3ad276c1 --- /dev/null +++ b/docs/04-configuration/VAULT_SHARD_CUSTODY_POLICY.md @@ -0,0 +1,174 @@ +# Vault Shard Custody Policy + +**Last Updated:** 2026-04-18 +**Status:** Proposed decision draft for approve/revise +**Scope:** Secret-shard custody for vault-related recovery material, rotation preparation, and admin-control continuity + +--- + +## 1. Purpose + +This document defines the custody policy for any shard-split recovery material used in the vault and contract-admin control plane. It exists to remove ambiguity before live admin rotation work begins. + +The policy is designed to: + +- prevent any one person from reconstructing privileged material alone; +- preserve recoverability if one or more custodians become unavailable; +- keep rotation work operationally realistic for Chain 138 and the follow-on chains; +- keep custody procedures compatible with a Safe-first admin model. + +--- + +## 2. Decision Summary + +**Recommended selection for §3:** adopt a **3-of-5 shard custody model** with **role-separated custodians**, **one shard per custodian**, and **Safe-based contract admin** as the steady-state control plane. + +This means: + +- recovery material is split into **5 shards**; +- any **3 shards** are required to reconstruct; +- no custodian may hold more than **1 shard**; +- the operational target admin on-chain is a **Gnosis Safe / Safe multisig**, not an EOA; +- shard reconstruction is allowed only for an approved rotation, incident recovery, or disaster-recovery drill. + +--- + +## 3. Recommended Custody Policy + +### 3.1 Selected model + +Use **Shamir-style 3-of-5 sharding** for the recovery secret or equivalent root material that would allow privileged admin continuity. + +This is the recommended balance because: + +- **2-of-3 is too fragile** for travel, turnover, illness, or simultaneous unavailability; +- **4-of-7 adds coordination drag** without enough extra safety for the current operator size; +- **3-of-5** keeps strong separation of control while still being practical during a real incident. + +### 3.2 Required custodian classes + +Assign the 5 shards to 5 distinct custodians drawn from distinct responsibility domains: + +1. **Operations lead** +2. **Security lead** +3. **Platform or protocol lead** +4. **Executive or governance delegate** +5. **Independent recovery custodian** + +The independent recovery custodian should not be part of the routine deployer or signer path. This can be a board-level delegate, outside counsel escrow, or another approved non-operator custodian with documented identity and retrieval process. + +### 3.3 Custody rules + +- Each custodian holds exactly **one shard**. +- No household, single reporting line, or single laptop/password manager may control enough material to reach threshold alone. +- Shards must be stored **offline** or in an **offline-first** medium. +- At least **2 shards** must be held in physically distinct locations. +- No shard may be stored in the same place as the full reconstruction instructions unless those instructions are separately access-controlled. +- No plaintext shard may be committed to git, chat, ticketing, or shared cloud docs. +- Photographs, screenshots, clipboard sync, and auto-backup of shard material are prohibited. + +### 3.4 Reconstruction approval gate + +Reconstruction may occur only when one of the following is true: + +- an approved **planned admin rotation** is in progress; +- a **suspected key compromise** or confirmed loss event requires emergency action; +- a scheduled **disaster-recovery drill** has been approved in advance. + +Every reconstruction event requires: + +- a ticket or written change record; +- named approvers; +- reason for reconstruction; +- time window; +- witness log of which custodians participated; +- post-event confirmation that temporary plaintext was destroyed. + +### 3.5 Safe-first operating model + +The shard policy does **not** mean the reconstructed secret should become the daily operating admin. + +The steady-state operating model is: + +- on-chain admin lives in a **Safe**; +- Safe signers use hardware-backed wallets where possible; +- shard reconstruction is reserved for recovery or controlled migration events; +- post-rotation, recovered or superseded material is re-sharded or retired. + +### 3.6 Recommended Safe posture + +For `NEW_ADMIN_ADDRESS`, the preferred target is: + +- a **Chain 138 Safe**; +- **3-of-5 threshold** if 5 reliable signers are available; +- **2-of-3 threshold** only as an interim fallback if the 5-signer set is not ready yet. + +If a temporary `2-of-3` Safe is used to unblock Chain 138, it should be explicitly marked as **interim** and scheduled for migration to **3-of-5** before broader multi-chain rollout. + +### 3.7 Lifecycle requirements + +- Re-verify custodian availability quarterly. +- Re-issue shards after any custodian departure, suspected exposure, or failed drill. +- Run at least one documented recovery drill before expanding from Chain 138 to additional production chains. +- Keep a custody register with custodian name, role, storage method, storage region, last attestation date, and replacement contact path. + +--- + +## 4. Operational Guidance + +### 4.1 When this policy blocks work + +Rotation work should be treated as blocked if any of the following remain unresolved: + +- the five custodian slots are not assigned; +- the threshold is not approved; +- `NEW_ADMIN_ADDRESS` is still an undecided EOA-versus-Safe placeholder; +- no recovery log template exists for reconstruction events. + +### 4.2 What can proceed before live rotation + +The following work may proceed before live execution: + +- non-broadcast Forge scripts; +- dry-run and compile validation; +- runbook drafting; +- Safe creation and signer enrollment; +- custody register preparation; +- incident and recovery checklist review. + +### 4.3 What must not proceed before approval + +The following should not proceed until this policy is approved or revised and approved: + +- live admin transfer; +- live shard generation for production recovery material; +- any irreversible decommissioning of the old admin path; +- multi-chain expansion of the rotation procedure. + +--- + +## 5. Approve / Revise Checklist + +Approve if you agree with all of the following: + +- **Threshold:** `3-of-5` +- **Steady-state admin:** Safe multisig +- **Chain 138 target:** `NEW_ADMIN_ADDRESS` is a Chain 138 Safe +- **Fallback:** temporary `2-of-3` Safe allowed only if explicitly interim +- **Rollout gate:** no other-chain live rotation until Chain 138 drill and verification are complete + +Revise if you want to change: + +- threshold size; +- custodian classes; +- whether the independent custodian is internal or external; +- whether interim `2-of-3` is allowed; +- whether one additional chain may run in parallel with Chain 138. + +--- + +## 6. Recommendation + +Approve the **3-of-5 Safe-first** model as written. + +It is the strongest option that still fits the current repo’s operational maturity, it removes the single-operator failure mode, and it gives the Chain 138 rotation work a clear governance target without forcing immediate parallel expansion. diff --git a/docs/04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md b/docs/04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md index a5450486..6f20c2e4 100644 --- a/docs/04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md +++ b/docs/04-configuration/coingecko/CMC_COINGECKO_SUBMISSION_RUNBOOK.md @@ -1,57 +1,100 @@ # CMC / CoinGecko Submission Runbook -**Last Updated:** 2026-02-15 +**Last Updated:** 2026-04-21 **Status:** Canonical process for Chain 138 and 651940 listing submission **Purpose:** Single runbook tying prerequisites, report API export, CoinGecko/CMC submission steps, and "where to update when done." --- -## 1. Prerequisites checklist +## 1. Canonical public references + +Use these as the public-facing source of truth for Chain 138: + +- **Canonical attachment:** [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) +- **Canonical chain wrapper:** [COINGECKO_SUBMISSION_PACKAGE.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_PACKAGE.md) +- **Official chain name:** `DeFi Oracle Meta Mainnet` +- **Website:** `https://d-bis.org/` +- **Documentation:** `https://info.defi-oracle.io/` +- **Explorer:** `https://explorer.d-bis.org/` +- **Chainlist:** `https://chainlist.org/chain/138` + +### 1.1 CoinGecko / CMC API keys vs pool visibility and links + +| Mechanism | What it does | +|-----------|----------------| +| **`COINGECKO_API_KEY` and `COINMARKETCAP_API_KEY`** (e.g. in token-aggregation `.env`) | Lets **your** service **call** [CoinGecko](https://www.coingecko.com/en/api) and [CoinMarketCap](https://coinmarketcap.com/api/) APIs—usually to **ingest** external prices/metadata and get better rate limits. This is **not** the same as publishing every pool on [coingecko.com](https://www.coingecko.com) or [coinmarketcap.com](https://coinmarketcap.com). | +| **Your report API** (`GET /api/v1/report/all`, `/report/coingecko`, `/report/cmc` on the token-aggregation service) | Exports **your** canonical tokens and **pools** (addresses, DEX id, TVL/volume fields)—the right place to confirm **all pools you track** are present. Public examples: `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` (and other `chainId` values you deploy). See [CMC_COINGECKO_REPORTING.md](../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md). Reading these endpoints does **not** require CG/CMC keys; the keys matter for **inbound** enrichment inside the service. | +| **Vendor web URLs** (`coingecko.com/...`, `dex.coinmarketcap.com/token/ethereum/0x.../`, etc.) | Appear only after **listing / verification** on that product (manual or partner flow). You cannot enumerate “all our pools on CoinGecko” via API key alone if those tokens are not listed. | + +**Explorers vs aggregators:** **Blockscout** (your chain explorer): you control verification, token lists, and config. **Etherscan-class sites** and **CoinGecko/CMC** are separate products—update explorers for correctness; use this runbook + [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) for off-chain USD and DexScan visibility. + +**Operational check:** `curl` your live `/api/v1/report/all?chainId=` (repeat per chain), then—for **Ethereum Mainnet** assets—compare to DexScan/CG only where you have already completed submission; unlisted chains will never show full parity on third-party UIs. + +## 2. Prerequisites checklist Before submitting, ensure: - [ ] **Report API reachable:** Token Aggregation Service is running and `GET /api/v1/report/coingecko` and `GET /api/v1/report/cmc` are reachable (e.g. `https://your-api/report/coingecko`, or localhost for export-only). -- [ ] **Token list export:** You can export JSON from the report API (see §2). Optionally use [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md) for chain/token tables. +- [ ] **Token list export:** You can export JSON from the report API (see §3). Optionally use [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) for chain/token tables and verification links. - [ ] **Logos:** Token logos 512×512 PNG for each token you submit. Chain logo if submitting the chain. - [ ] **Chain details:** Chain name, Chain ID, RPC URLs, block explorer, native currency (see [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md)). **Note:** If CoinGecko/CMC do not yet support ChainID 138 or 651940, keep this runbook for when they do; the report API remains the source of truth and you can submit as soon as the platforms add the chain. +## 2.1 Credibility certification matrix + +Use this matrix to distinguish between credibility items we can complete ourselves and those that require third-party approval. + +| Item | Owner | Status guidance | +|----------|----------|----------| +| Canonical chain metadata, token tables, report endpoints, logos | Repo/operator | Must be complete before any submission. | +| `validate-config-files.sh` and `run-all-validation.sh --skip-genesis` | Repo/operator | Must pass before submission. | +| `check-contracts-on-chain-138.sh` on the current canonical set | Repo/operator | Should be captured as current on-chain evidence. | +| Public DNS / SSL / HTTPS / RPC / WSS reachability | Repo/operator | Should be checked with `verify-end-to-end-routing.sh --profile=public`. | +| Blockscout verification for Chain 138 contracts | Repo/operator with explorer UI | Strongly recommended before submission; manual follow-through may still be needed. | +| Exact-match verification for public-chain `cW*` contracts | Repo/operator with public explorers | Strongly recommended before submission to avoid "unverified" or "similar match only" warnings. | +| CoinGecko token/chain listing approval | CoinGecko | External review. Submission can be completed by us; approval cannot. | +| CoinMarketCap token/listing/DexScan verification | CoinMarketCap | External review. Submission can be completed by us; approval cannot. | +| Third-party security audit publication | External auditor | External engagement required; not replaceable by internal docs alone. | + +For the current canonical status summary, use [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md). + --- -## 2. Step-by-step submission +## 3. Step-by-step submission -### 2.1 Export data from report API +### 3.1 Export data from report API ```bash # Chain 138 -curl "https:///api/v1/report/coingecko?chainId=138" -o report-coingecko-138.json -curl "https:///api/v1/report/cmc?chainId=138" -o report-cmc-138.json +curl "https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138" -o report-coingecko-138.json +curl "https://explorer.d-bis.org/api/v1/report/cmc?chainId=138" -o report-cmc-138.json # Chain 651940 (ALL Mainnet) curl "https:///api/v1/report/coingecko?chainId=651940" -o report-coingecko-651940.json curl "https:///api/v1/report/cmc?chainId=651940" -o report-cmc-651940.json # Cross-chain (CCIP, Alltra, Trustless) — events between Chain 138, ALL Mainnet, and reporting networks -curl "https:///api/v1/report/cross-chain?chainId=138" -o report-cross-chain-138.json +curl "https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138" -o report-cross-chain-138.json ``` Use these files to fill CoinGecko/CMC forms or attach if they accept file upload. Response format is described in [CMC_COINGECKO_REPORTING.md](../../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md). -### 2.2 CoinGecko +### 3.2 CoinGecko -1. **Chain submission (if applicable):** Use [CoinGecko listing request](https://www.coingecko.com/en/coins/new) or partner/API. Provide chain name (e.g. "DeFi Oracle Meta Mainnet"), Chain ID (138 or 651940), RPC URLs, explorer, API URL e.g. `https:///api/v1/report/coingecko?chainId=138`. -2. **Token submission:** For each token, provide contract address, symbol, name, decimals; attach logo 512×512. Use data from `report-coingecko-138.json` / `report-coingecko-651940.json` or from [COINGECKO_SUBMISSION_CUSDT](COINGECKO_SUBMISSION_CUSDT.md), [COINGECKO_SUBMISSION_CUSDC](COINGECKO_SUBMISSION_CUSDC.md), [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md). +1. **Chain submission (if applicable):** Use [CoinGecko listing request](https://www.coingecko.com/en/coins/new) or partner/API. Provide chain name `DeFi Oracle Meta Mainnet`, Chain ID `138`, website, docs, explorer, Chainlist URL, and API URL `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138`. +2. **Token submission:** For each token, provide contract address, symbol, name, decimals, and logo. Use data from `report-coingecko-138.json` / `report-coingecko-651940.json` or from [COINGECKO_SUBMISSION_CUSDT](COINGECKO_SUBMISSION_CUSDT.md), [COINGECKO_SUBMISSION_CUSDC](COINGECKO_SUBMISSION_CUSDC.md), and [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md). 3. **Reference:** [COINGECKO_SUBMISSION_GUIDE](COINGECKO_SUBMISSION_GUIDE.md), [smom-dbis-138 token-aggregation COINGECKO_SUBMISSION](../../../smom-dbis-138/services/token-aggregation/docs/COINGECKO_SUBMISSION.md). +4. **Etherscan “Value” on Ethereum Mainnet:** Holders and token pages show **$0** until aggregators (typically **CoinGecko** first) list **that Mainnet contract** with a tradeable/market USD. That is **not** fixable from Solidity or this repo alone—see [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md). -### 2.3 CoinMarketCap (CMC) +### 3.3 CoinMarketCap (CMC) 1. Use CMC’s listing/submission process (DEX or token form). Provide chain and token data in the format returned by `GET /api/v1/report/cmc?chainId=138` (and 651940). 2. Same token list and logos as for CoinGecko; CMC format includes `pairs`, `volume_24h`, `market_cap`, `liquidity_usd` as per [CMC_COINGECKO_REPORTING](../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md). --- -## 3. Unsupported chains (138 / 651940) +## 4. Unsupported chains (138 / 651940) CoinGecko and CMC may not list ChainID 138 or 651940 until they add the platform. Until then: @@ -61,9 +104,19 @@ CoinGecko and CMC may not list ChainID 138 or 651940 until they add the platform No code change is required; submission is manual when the platforms accept the chain. +## 4.1 High-signal credibility tasks still worth completing + +After the repo-side checks pass, the remaining highest-value credibility tasks are: + +1. Confirm Blockscout source verification for the active Chain 138 contracts. +2. Confirm exact-match explorer verification for the public `cW*` contracts on Ethereum, BSC, Polygon, Base, Arbitrum, Optimism, Avalanche, Gnosis, and Celo. +3. Submit CoinGecko chain and token materials using the report API exports and this attachment. +4. Submit CoinMarketCap chain/token materials and request DexScan verification for public token pages. +5. Publish a third-party audit or formal attestation package and add it to the attachment once available. + --- -## 4. When done — where to update +## 5. When done — where to update After submission (or when chains are listed), update the following so the rest of the repo stays in sync: @@ -75,7 +128,11 @@ After submission (or when chains are listed), update the following so the rest o --- -## 5. See also +## 6. Do not use + +- Files under [exports](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/exports) are currently stale placeholder error payloads, not authoritative report exports. + +## 7. See also - [CMC_COINGECKO_REPORTING](../../../smom-dbis-138/services/token-aggregation/docs/CMC_COINGECKO_REPORTING.md) — Report API reference - [COINGECKO_SUBMISSION_PACKAGE](COINGECKO_SUBMISSION_PACKAGE.md) — Chain 138 package and token table diff --git a/docs/04-configuration/coingecko/COINGECKO_API_NO_PUSH_LIQUIDITY.md b/docs/04-configuration/coingecko/COINGECKO_API_NO_PUSH_LIQUIDITY.md index 5f8fe297..df02f52f 100644 --- a/docs/04-configuration/coingecko/COINGECKO_API_NO_PUSH_LIQUIDITY.md +++ b/docs/04-configuration/coingecko/COINGECKO_API_NO_PUSH_LIQUIDITY.md @@ -35,7 +35,7 @@ So: 2. **Create liquidity pools** on DEXes that GeckoTerminal indexes (e.g. Uniswap, SushiSwap, etc.) on that chain. 3. CoinGecko/GeckoTerminal will **automatically** pick up those pools from on-chain data. No API push. -### For Chain 138 (Defi Oracle Meta Mainnet) +### For Chain 138 (DeFi Oracle Meta Mainnet) 1. **Submit** the chain and tokens via CoinGecko’s listing process. 2. **Provide your report API URL** (e.g. `https:///api/v1/report/coingecko?chainId=138`) so CoinGecko can **pull** token and liquidity data from your Token Aggregation Service. diff --git a/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md b/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md new file mode 100644 index 00000000..3727c2dd --- /dev/null +++ b/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md @@ -0,0 +1,143 @@ +# Overview + +**Network name:** DeFi Oracle Meta Mainnet +**Chain ID:** 138 +**Network type:** EVM-compatible mainnet +**Primary explorer:** `https://explorer.d-bis.org/` +**Primary website:** `https://d-bis.org/` +**Primary documentation hub:** `https://info.defi-oracle.io/` + +DeFi Oracle Meta Mainnet is the canonical home network for the GRU v2 `c*` compliant asset family. The current repo-backed inventory shows native Chain 138 assets live on the public explorer, including `cUSDT`, `cUSDC`, the broader compliant fiat set, `cXAUC`, `cXAUT`, and `cAUSDT`, with public-network transport mirrors (`cW*`) active across supported destination networks. + +Per the current machine-readable deployment graph and generated audit summaries, the public `cW*` surface is active on chain IDs `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`, while `1111` remains deferred. + +# Official Links + +- **Website:** `https://d-bis.org/` +- **Documentation:** `https://info.defi-oracle.io/` +- **Explorer:** `https://explorer.d-bis.org/` +- **Chainlist:** `https://chainlist.org/chain/138` +- **CoinGecko-style report JSON:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` +- **CMC-style report JSON:** `https://explorer.d-bis.org/api/v1/report/cmc?chainId=138` +- **Cross-chain report JSON:** `https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138` +- **Canonical token list JSON:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138` +- **Public `cW*` registry JSON:** `https://explorer.d-bis.org/api/v1/report/cw-registry` +- **Explorer wallet token list JSON:** `https://explorer.d-bis.org/api/config/token-list` +- **Explorer wallet networks JSON:** `https://explorer.d-bis.org/api/config/networks` +- **Logo (IPFS):** `ipfs://QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE` +- **Logo (Pinata gateway):** `https://gateway.pinata.cloud/ipfs/QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE` +- **Logo (IPFS gateway):** `https://ipfs.io/ipfs/QmYrMRnjQJcNkYq9AvZ2FQ9kzYj9szzP4YDmyNA1ybd8xE` +- **Canonical logo asset in repo:** [chain-138-dbismainnet-logo.png](/home/intlc/projects/proxmox/metamask-integration/chain138-snap/packages/site/src/assets/chain-138-dbismainnet-logo.png) + +# Native Assets + +These are the canonical GRU v2 `c*` assets on Chain 138 with direct explorer links. + +| Symbol | Name | Address | Explorer link | +|---|---|---|---| +| `cUSDT` | Tether USD (Compliant) | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | `https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | +| `cUSDC` | USD Coin (Compliant) | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | `https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b` | +| `cEURC` | Euro Coin (Compliant) | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | `https://explorer.d-bis.org/address/0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | +| `cEURT` | Tether EUR (Compliant) | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | `https://explorer.d-bis.org/address/0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | +| `cGBPC` | Pound Sterling (Compliant) | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | `https://explorer.d-bis.org/address/0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | +| `cGBPT` | Tether GBP (Compliant) | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | `https://explorer.d-bis.org/address/0x350f54e4D23795f86A9c03988c7135357CCaD97c` | +| `cAUDC` | Australian Dollar (Compliant) | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | `https://explorer.d-bis.org/address/0xD51482e567c03899eecE3CAe8a058161FD56069D` | +| `cJPYC` | Japanese Yen (Compliant) | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | `https://explorer.d-bis.org/address/0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | +| `cCHFC` | Swiss Franc (Compliant) | `0x873990849DDa5117d7C644f0aF24370797C03885` | `https://explorer.d-bis.org/address/0x873990849DDa5117d7C644f0aF24370797C03885` | +| `cCADC` | Canadian Dollar (Compliant) | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | `https://explorer.d-bis.org/address/0x54dBd40cF05e15906A2C21f600937e96787f5679` | +| `cXAUC` | Gold (Compliant) | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | `https://explorer.d-bis.org/address/0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | +| `cXAUT` | Tether XAU (Compliant) | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | `https://explorer.d-bis.org/address/0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | +| `cAUSDT` | Alltra USD Token (Compliant) | `0x5fdDF65733e3d590463F68f93Cf16E8c04081271` | `https://explorer.d-bis.org/address/0x5fdDF65733e3d590463F68f93Cf16E8c04081271` | + +# Bridged Wrapped Assets + +These are the currently repo-backed public-network `cW*` transport assets with canonical addresses and public explorer links. + +| Symbol | Network | Chain ID | Address | Explorer link | +|---|---|---:|---|---| +| `cWUSDC` | Ethereum Mainnet | `1` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `https://etherscan.io/token/0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | +| `cWUSDC` | BSC | `56` | `0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | `https://bscscan.com/token/0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | +| `cWUSDC` | Polygon | `137` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `https://polygonscan.com/token/0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | +| `cWUSDC` | Gnosis | `100` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `https://gnosisscan.io/token/0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | +| `cWUSDC` | Optimism | `10` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `https://optimistic.etherscan.io/token/0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | +| `cWUSDC` | Arbitrum One | `42161` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `https://arbiscan.io/token/0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | +| `cWUSDC` | Base | `8453` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `https://basescan.org/token/0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | +| `cWUSDC` | Avalanche C-Chain | `43114` | `0x0C242b513008Cd49C89078F5aFb237A3112251EB` | `https://subnets.avax.network/c-chain/token/0x0C242b513008Cd49C89078F5aFb237A3112251EB` | +| `cWUSDC` | Celo | `42220` | `0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | `https://celoscan.io/token/0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | +| `cWUSDT` | Ethereum Mainnet | `1` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `https://etherscan.io/token/0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | +| `cWUSDT` | BSC | `56` | `0x9a1D0dBEE997929ED02fD19E0E199704d20914dB` | `https://bscscan.com/token/0x9a1D0dBEE997929ED02fD19E0E199704d20914dB` | +| `cWUSDT` | Polygon | `137` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `https://polygonscan.com/token/0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | +| `cWUSDT` | Gnosis | `100` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `https://gnosisscan.io/token/0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | +| `cWUSDT` | Optimism | `10` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `https://optimistic.etherscan.io/token/0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | +| `cWUSDT` | Arbitrum One | `42161` | `0x73ADaF7dBa95221c080db5631466d2bC54f6a76B` | `https://arbiscan.io/token/0x73ADaF7dBa95221c080db5631466d2bC54f6a76B` | +| `cWUSDT` | Base | `8453` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `https://basescan.org/token/0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | +| `cWUSDT` | Avalanche C-Chain | `43114` | `0x8142BA530B08f3950128601F00DaaA678213DFdf` | `https://subnets.avax.network/c-chain/token/0x8142BA530B08f3950128601F00DaaA678213DFdf` | +| `cWUSDT` | Celo | `42220` | `0x73376eB92c16977B126dB9112936A20Fa0De3442` | `https://celoscan.io/token/0x73376eB92c16977B126dB9112936A20Fa0De3442` | +| `cWAUSDT` | BSC | `56` | `0xe1a51Bc037a79AB36767561B147eb41780124934` | `https://bscscan.com/token/0xe1a51Bc037a79AB36767561B147eb41780124934` | +| `cWAUSDT` | Polygon | `137` | `0xf12e262F85107df26741726b074606CaFa24AAe7` | `https://polygonscan.com/token/0xf12e262F85107df26741726b074606CaFa24AAe7` | +| `cWAUSDT` | Avalanche C-Chain | `43114` | `0xff3084410A732231472Ee9f93F5855dA89CC5254` | `https://subnets.avax.network/c-chain/token/0xff3084410A732231472Ee9f93F5855dA89CC5254` | +| `cWAUSDT` | Celo | `42220` | `0xC158b6cD3A3088C52F797D41f5Aa02825361629e` | `https://celoscan.io/token/0xC158b6cD3A3088C52F797D41f5Aa02825361629e` | +| `cWUSDW` | BSC | `56` | `0xC2FA05F12a75Ac84ea778AF9D6935cA807275E55` | `https://bscscan.com/token/0xC2FA05F12a75Ac84ea778AF9D6935cA807275E55` | +| `cWUSDW` | Avalanche C-Chain | `43114` | `0xcfdCe5E660FC2C8052BDfa7aEa1865DD753411Ae` | `https://subnets.avax.network/c-chain/token/0xcfdCe5E660FC2C8052BDfa7aEa1865DD753411Ae` | + +**Important scope note:** The broader GRU v2 `cW*` family is larger than the live-confirmed list above. The current repo-backed canonical address registry publicly confirms the assets listed here; additional deployable `cW*` families should be treated as planned or partially deployed unless accompanied by a confirmed address record in the canonical registry and deployment graph. + +# Credibility Certifications + +The table below separates credibility signals we can complete directly from this workspace from those that depend on third-party review or explorer UI submission. + +| Surface | Status as of 2026-04-19 | What is already completed | Remaining action | +|---|---|---|---| +| Canonical chain metadata | Complete | Network name, Chain ID, website, docs, explorer, Chainlist URL, and machine-readable report endpoints are published in this attachment. | Keep links current if endpoints move. | +| Repo and config validation | Complete | `bash scripts/run-completable-tasks-from-anywhere.sh` passed on 2026-04-19. That included `validate-config-files.sh` and `run-all-validation.sh --skip-genesis`. | Re-run after any address or token list change. | +| On-chain deployment presence | Complete | `check-contracts-on-chain-138.sh` returned `61 present, 0 missing/empty` on 2026-04-19 for the canonical Chain 138 contract set. | Re-run after new deployments. | +| Public API/report availability | Complete | The public JSON endpoints under **Official Links** returned `200 OK` on 2026-04-19. | Keep the report API public and stable. | +| Public DNS / SSL / endpoint reachability | Complete with minor non-chain warning | `verify-end-to-end-routing.sh --profile=public` was run on 2026-04-19 and showed broad public reachability for explorer, docs, website, RPC, and WSS surfaces. | Track unrelated public web warnings separately from chain listing work. | +| Logo hosting and asset consistency | Complete | Repo-backed chain logo exists and the IPFS logo links are published. Token logo manifest is present. | Ensure submitted logos match the same canonical assets. | +| Canonical token and bridge registry | Complete | Native `c*` inventory, live `cW*` mirror inventory, and supporting JSON artifacts are published here and in the referenced machine-readable reports. | Update only from canonical registry and deployment graph. | +| Blockscout source verification on Chain 138 | In progress / manual | Verification workflow and inventory exist in-repo. | Submit or confirm explorer source verification through Blockscout and then mark contract rows as verified. | +| Exact-match explorer verification on public chains | In progress / manual | Public-chain addresses are documented. | Verify each `cW*` contract on Etherscan/BscScan/Polygonscan/BaseScan/etc. Some public entries still present as unverified or similar-match only. | +| CoinGecko listing verification | Pending external review | Submission package, attachment, and report API are ready. | Submit chain and token listings; wait for CoinGecko review and publication. | +| CoinMarketCap listing / DexScan verification | Pending external review | CMC-formatted report API and token inventory are ready. | Submit through CMC listing flow and CMC Priority where required to replace unverified DexScan metadata. | +| Third-party security audit publication | Not yet complete | Internal audit-scope and verification references exist. | Commission a third-party audit, publish the report or findings summary, and link it in this attachment. | +| Social/profile verification on third-party sites | Pending external review | Canonical website/docs/explorer references are stable. | Align logos, socials, and project descriptions across CoinGecko, CMC, explorer metadata, and token profiles after approval. | + +## Fastest Remaining Credibility Wins + +These are the highest-signal items still worth completing after the in-repo checks above: + +1. Complete Blockscout source verification for the current Chain 138 contract set. +2. Complete exact-match explorer verification for the public `cW*` contracts, especially Ethereum Mainnet `cWUSDC` and `cWUSDT`. +3. Submit CoinGecko chain and token listings using this attachment and the report API exports. +4. Submit CoinMarketCap chain/token materials and request DexScan verification for the public token pages. +5. Publish a third-party smart contract audit or formal attestation package. + +# Verification Sources + +- **Canonical Chain 138 and public-network token address registry:** [canonical-tokens.ts](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts:84) +- **Chain 138 native `c*` explorer-backed confirmation:** [EXPLORER_TOKEN_LIST_CROSSCHECK.md](/home/intlc/projects/proxmox/docs/11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md:19) +- **Deployment status summary for active public `cW*` surface:** [DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md](/home/intlc/projects/proxmox/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md:14) +- **Deployability matrix for the broader `cW*` family:** [CW_TOKENS_AND_NETWORKS.md](/home/intlc/projects/proxmox/docs/11-references/CW_TOKENS_AND_NETWORKS.md:9) +- **Public logo upload verification:** [chain-138-dbismainnet-logo.png](/home/intlc/projects/proxmox/metamask-integration/chain138-snap/packages/site/src/assets/chain-138-dbismainnet-logo.png) +- **Existing token-logo IPFS manifest for Chain 138 assets:** [ipfs-manifest.json](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/logos/ipfs-manifest.json:1) +- **Machine-readable deployment matrix (JSON):** [cw-mesh-deployment-matrix-latest.json](/home/intlc/projects/proxmox/reports/status/cw-mesh-deployment-matrix-latest.json) +- **Machine-readable public price snapshot (JSON):** [cw-public-prices-latest.json](/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json) +- **Machine-readable wrapped-mesh rollout status (JSON):** [promod-uniswap-v2-phase2-wave1-completion-status-latest.json](/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json) +- **Machine-readable public liquidity snapshot (JSON):** [strict-operator-public-liquidity-table-latest.json](/home/intlc/projects/proxmox/reports/extraction/strict-operator-public-liquidity-table-latest.json) +- **Token-aggregation REST API reference:** [REST_API_REFERENCE.md](/home/intlc/projects/proxmox/smom-dbis-138/services/token-aggregation/docs/REST_API_REFERENCE.md:1) +- **Deployer verification inventory and current explorer-verification backlog:** [DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md](/home/intlc/projects/proxmox/docs/11-references/DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md:1) +- **Public endpoint and SSL verification runbook:** [E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md](/home/intlc/projects/proxmox/docs/05-network/E2E_CLOUDFLARE_DOMAINS_RUNBOOK.md:1) +- **Workspace-wide completable verification bundle:** [run-completable-tasks-from-anywhere.sh](/home/intlc/projects/proxmox/scripts/run-completable-tasks-from-anywhere.sh:1) +- **Latest public E2E verification report:** [verification_report.md](/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/verification_report.md:1) +- **Latest public E2E machine-readable results:** [all_e2e_results.json](/home/intlc/projects/proxmox/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/all_e2e_results.json:1) + +**Do not use as authoritative references:** the files under `docs/04-configuration/coingecko/exports/` currently contain placeholder error payloads rather than current report data, so they should not be linked in public submission material until regenerated from a live token-aggregation API export. + +**Live verification note (2026-04-19):** the public JSON endpoints listed under **Official Links** were checked and returned `200 OK` with JSON payloads on 2026-04-19. The explorer wallet networks payload reports the network name as `DeFi Oracle Meta Mainnet`, which now matches this document. On the same date, `bash scripts/run-completable-tasks-from-anywhere.sh` passed, including config validation, Chain 138 on-chain presence (`61 present, 0 missing/empty`), and merged no-LAN validation. Also on 2026-04-19, `E2E_SUCCESS_IF_ONLY_RPC_BLOCKED=1 bash scripts/verify/verify-end-to-end-routing.sh --profile=public` completed with `Failed: 0` across `44` public domains and wrote the evidence files linked above. + +**Submission interpretation guidance:** + +- For CoinGecko chain onboarding, treat the **Native Assets** table as the authoritative Chain 138 native inventory. +- Treat the **Bridged Wrapped Assets** table as the authoritative list of currently repo-backed public transport mirrors with confirmed addresses. +- If CoinGecko asks for a full future-state `cW*` matrix beyond live-confirmed contracts, provide [CW_TOKENS_AND_NETWORKS.md](/home/intlc/projects/proxmox/docs/11-references/CW_TOKENS_AND_NETWORKS.md:9) as the deployability reference and explicitly label it as broader than the current live-confirmed public registry. +- If a machine-readable JSON artifact is requested, prefer the latest files under [reports/status](/home/intlc/projects/proxmox/reports/status) and [reports/extraction](/home/intlc/projects/proxmox/reports/extraction) listed above, not the stale `docs/04-configuration/coingecko/exports/` stubs. diff --git a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDC.md b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDC.md index 4b33d43c..35db9133 100644 --- a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDC.md +++ b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDC.md @@ -1,200 +1,35 @@ -# CoinGecko Listing Submission - cUSDC (Compliant USD Coin) +# CoinGecko Listing Submission - cUSDC -**Last Updated:** 2026-01-31 -**Document Version:** 1.0 -**Status:** Active Documentation +**Last Updated:** 2026-04-19 +**Status:** Canonical token-specific reference ---- - -**Date:** 2026-01-27 -**Token:** cUSDC (Compliant USD Coin) -**ChainID:** 138 (DBIS Chain / Defi Oracle Meta Mainnet) - ---- - -## 📋 Token Information - -### Basic Details +## Token Information | Field | Value | |-------|-------| | **Token Name** | Compliant USD Coin | -| **Token Symbol** | cUSDC | +| **Token Symbol** | `cUSDC` | | **Contract Address** | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | -| **Chain ID** | 138 | -| **Chain Name** | DBIS Chain (Defi Oracle Meta Mainnet) | -| **Decimals** | 6 | -| **Token Type** | ERC-20 Stablecoin | -| **Peg** | USD (1:1) | +| **Chain ID** | `138` | +| **Chain Name** | `DeFi Oracle Meta Mainnet` | +| **Decimals** | `6` | +| **Explorer Link** | `https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b` | -### Token Description +## Public References -**cUSDC** (Compliant USD Coin) is a regulatory-compliant ERC-20 stablecoin pegged to the US Dollar (USD) at a 1:1 ratio. It is designed to provide the stability of traditional fiat currency while maintaining full compliance with legal and regulatory requirements. +- **Website:** `https://d-bis.org/` +- **Documentation:** `https://info.defi-oracle.io/` +- **Explorer:** `https://explorer.d-bis.org/` +- **Chainlist:** `https://chainlist.org/chain/138` +- **Canonical attachment:** [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) -**Key Features:** -- ✅ Regulatory compliant (includes Travel Rules exemption and regulatory compliance features) -- ✅ 1:1 USD peg -- ✅ ERC-20 standard -- ✅ 6 decimals (matching USDC standard) -- ✅ Pausable and Ownable for security +## Verified JSON References ---- +- **CoinGecko-style chain report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` +- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list` +- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138` -## 🔗 Blockchain Information +## Notes -### Network Details - -| Property | Value | -|----------|-------| -| **Network Name** | DBIS Chain | -| **Chain ID** | 138 | -| **RPC Endpoint** | `https://rpc-http-pub.d-bis.org` | -| **Block Explorer** | `https://explorer.d-bis.org` | -| **Native Currency** | ETH | -| **Block Time** | ~2 seconds | - -### Contract Verification - -- **Explorer Link:** https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b -- **Contract Verified:** ✅ Yes -- **Source Code:** Available on explorer - ---- - -## 📊 Market Data - -### Current Supply - -- **Total Supply:** Check on-chain via explorer -- **Circulating Supply:** Check on-chain via explorer -- **Max Supply:** No maximum (mintable by owner) - -### Trading Information - -**Note:** As a new token on a custom chain, trading volume and liquidity data may be limited initially. - -- **DEX Listings:** TBD (can be added to DEXs) -- **Liquidity Pools:** TBD -- **Trading Pairs:** TBD - ---- - -## 🏗️ Technical Details - -### Contract Architecture - -- **Base Contract:** OpenZeppelin ERC20 -- **Additional Features:** - - Pausable (can pause transfers) - - Ownable (owner can manage contract) - - LegallyCompliantBase (regulatory compliance features) - -### Security - -- **Audited:** TBD -- **Open Source:** ✅ Yes -- **Verified on Explorer:** ✅ Yes - ---- - -## 📝 Submission Checklist - -### Required Information - -- [x] Token name and symbol -- [x] Contract address -- [x] Chain ID and network name -- [x] Decimals -- [x] Token type -- [x] Block explorer link -- [x] Token description -- [ ] Logo (512x512 PNG) -- [ ] Official website -- [ ] Social media links -- [ ] Trading volume data (if available) -- [ ] Liquidity information (if available) - -### Optional Information - -- [ ] Tokenomics documentation -- [ ] Whitepaper or technical documentation -- [ ] Audit reports -- [ ] Team information -- [ ] Roadmap - ---- - -## 🎨 Logo Requirements - -**Logo Specifications:** -- **Format:** PNG -- **Size:** 512x512 pixels -- **Background:** Transparent preferred -- **File Name:** `ist-logo.png` - -**Note:** Can use USDC logo as reference, but should be distinct for cUSDC. - ---- - -## 🌐 Links and Resources - -### Official Links - -- **Block Explorer:** https://explorer.d-bis.org/address/0xf22258f57794CC8E06237084b353Ab30fFfa640b -- **Network Info:** https://explorer.d-bis.org -- **RPC Endpoint:** https://rpc-http-pub.d-bis.org - -### Documentation - -- **Token Contract:** `smom-dbis-138/contracts/tokens/CompliantUSDC.sol` -- **Token List:** `docs/04-configuration/metamask/METAMASK_TOKEN_LIST.json` - ---- - -## 📧 Submission Process - -### Step 1: Prepare Materials - -1. ✅ Token information (this document) -2. ⏳ Logo (512x512 PNG) -3. ⏳ Official website (if available) -4. ⏳ Social media links (if available) - -### Step 2: Submit to CoinGecko - -1. Go to: https://www.coingecko.com/en/coins/new -2. Fill out the submission form with information from this document -3. Upload logo -4. Provide all required links -5. Submit for review - -### Step 3: Follow-up - -- CoinGecko typically reviews submissions within 1-2 weeks -- May request additional information -- Respond promptly to any inquiries - ---- - -## ✅ Post-Listing Benefits - -Once listed on CoinGecko: - -1. **MetaMask Integration:** MetaMask will automatically display USD values for cUSDC -2. **Price Discovery:** Users can track cUSDC price on CoinGecko -3. **Market Visibility:** Increased exposure to crypto community -4. **Portfolio Tracking:** Users can track cUSDC in portfolio apps - ---- - -## 📚 Additional Notes - -- **Peg Maintenance:** cUSDC is designed to maintain 1:1 USD peg -- **Compliance:** Token includes regulatory compliance features -- **Minting:** Only contract owner can mint new tokens -- **Pausing:** Owner can pause transfers if needed for security - ---- - -**Last Updated:** 2026-01-27 -**Status:** Ready for submission (pending logo and website) +- Use the chain attachment above as the authoritative shared package for network identity, logo links, native assets, bridged wrapped assets, and machine-readable references. +- Do not cite `docs/04-configuration/coingecko/exports/` from public submission material until those files are regenerated from the live token-aggregation API. diff --git a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDT.md b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDT.md index 65fc5bc2..581a960a 100644 --- a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDT.md +++ b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDT.md @@ -1,80 +1,35 @@ -# CoinGecko Listing Submission - cUSDT (Compliant Tether USD) +# CoinGecko Listing Submission - cUSDT -**Last Updated:** 2026-01-31 -**Document Version:** 1.0 -**Status:** Active Documentation +**Last Updated:** 2026-04-19 +**Status:** Canonical token-specific reference ---- - -**Date:** 2026-01-27 -**Token:** cUSDT (Compliant Tether USD) -**ChainID:** 138 (DBIS Chain / Defi Oracle Meta Mainnet) - ---- - -## 📋 Token Information - -### Basic Details +## Token Information | Field | Value | |-------|-------| | **Token Name** | Compliant Tether USD | -| **Token Symbol** | cUSDT | +| **Token Symbol** | `cUSDT` | | **Contract Address** | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | -| **Chain ID** | 138 | -| **Chain Name** | DBIS Chain (Defi Oracle Meta Mainnet) | -| **Decimals** | 6 | -| **Token Type** | ERC-20 Stablecoin | -| **Peg** | USD (1:1) | +| **Chain ID** | `138` | +| **Chain Name** | `DeFi Oracle Meta Mainnet` | +| **Decimals** | `6` | +| **Explorer Link** | `https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | -### Token Description +## Public References -**cUSDT** (Compliant Tether USD) is a regulatory-compliant ERC-20 stablecoin pegged to the US Dollar (USD) at a 1:1 ratio. It is designed to provide the stability of traditional fiat currency while maintaining full compliance with legal and regulatory requirements. +- **Website:** `https://d-bis.org/` +- **Documentation:** `https://info.defi-oracle.io/` +- **Explorer:** `https://explorer.d-bis.org/` +- **Chainlist:** `https://chainlist.org/chain/138` +- **Canonical attachment:** [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) -**Key Features:** -- ✅ Regulatory compliant (includes Travel Rules exemption and regulatory compliance features) -- ✅ 1:1 USD peg -- ✅ ERC-20 standard -- ✅ 6 decimals (matching USDT standard) -- ✅ Pausable and Ownable for security +## Verified JSON References ---- +- **CoinGecko-style chain report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` +- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list` +- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138` -## 🔗 Blockchain Information +## Notes -### Network Details - -| Property | Value | -|----------|-------| -| **Network Name** | DBIS Chain | -| **Chain ID** | 138 | -| **RPC Endpoint** | `https://rpc-http-pub.d-bis.org` | -| **Block Explorer** | `https://explorer.d-bis.org` | -| **Native Currency** | ETH | -| **Block Time** | ~2 seconds | - -### Contract Verification - -- **Explorer Link:** https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22 -- **Contract Verified:** ✅ Yes -- **Source Code:** Available on explorer - ---- - -## 📝 Submission Checklist - -- [x] Token name and symbol -- [x] Contract address -- [x] Chain ID and network name -- [x] Decimals -- [x] Token type -- [x] Block explorer link -- [x] Token description -- [ ] Logo (512x512 PNG) -- [ ] Official website -- [ ] Social media links - ---- - -**Last Updated:** 2026-01-27 -**Status:** Ready for submission (pending logo and website) +- Use the chain attachment above as the authoritative shared package for network identity, logo links, native assets, bridged wrapped assets, and machine-readable references. +- Do not cite `docs/04-configuration/coingecko/exports/` from public submission material until those files are regenerated from the live token-aggregation API. diff --git a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_GUIDE.md b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_GUIDE.md index 07650faf..176ec1cd 100644 --- a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_GUIDE.md +++ b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_GUIDE.md @@ -1,254 +1,41 @@ # CoinGecko Listing Submission Guide -**Last Updated:** 2026-01-31 -**Document Version:** 1.0 -**Status:** Active Documentation +**Last Updated:** 2026-04-21 +**Status:** Canonical process reference ---- +Use this guide together with [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md). -**Date:** 2026-01-27 -**Purpose:** Complete guide for submitting cUSDT and cUSDC to CoinGecko +## Canonical Network Identity ---- +- **Chain name:** `DeFi Oracle Meta Mainnet` +- **Chain ID:** `138` +- **Website:** `https://d-bis.org/` +- **Documentation:** `https://info.defi-oracle.io/` +- **Explorer:** `https://explorer.d-bis.org/` +- **Chainlist:** `https://chainlist.org/chain/138` -## 📋 Overview +## Token-Specific References -This guide provides step-by-step instructions for submitting cUSDT and cUSDC tokens to CoinGecko for listing. Once listed, MetaMask will automatically display USD values for these tokens. +- [COINGECKO_SUBMISSION_CUSDT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDT.md) +- [COINGECKO_SUBMISSION_CUSDC.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_CUSDC.md) ---- +## Verified Public JSON Endpoints -## 🎯 Why Submit to CoinGecko? +- **CoinGecko-style chain report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` +- **CMC-style chain report:** `https://explorer.d-bis.org/api/v1/report/cmc?chainId=138` +- **Cross-chain report:** `https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138` +- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138` +- **Public `cW*` registry:** `https://explorer.d-bis.org/api/v1/report/cw-registry` +- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list` +- **Explorer wallet networks config:** `https://explorer.d-bis.org/api/config/networks` -### Benefits +## Submission Guidance -1. **MetaMask Integration** - - MetaMask automatically queries CoinGecko for USD prices - - No need for custom oracle integration in MetaMask - - Users see USD values automatically +- Use the chain attachment as the authoritative package for naming, links, logo, native assets, bridged wrapped assets, and verification sources. +- Use the token-specific `cUSDT` and `cUSDC` docs only for single-token form entries. +- If a machine-readable file is requested, prefer the verified public JSON endpoints above or the latest generated artifacts linked from the chain attachment. +- Do not use `docs/04-configuration/coingecko/exports/*.json` until regenerated from live API output. -2. **Price Discovery** - - Users can track token prices on CoinGecko - - Historical price data - - Market cap and volume tracking +## Etherscan USD “Value” (Ethereum Mainnet) -3. **Market Visibility** - - Increased exposure to crypto community - - Portfolio tracking apps support - - Exchange listings may require CoinGecko listing - ---- - -## 📝 Prerequisites - -### Required Materials - -- [x] Token contract addresses -- [x] Token information (name, symbol, decimals) -- [x] Block explorer links -- [ ] Token logos (512x512 PNG) -- [ ] Official website (optional but recommended) -- [ ] Social media links (optional but recommended) - -### Token Information - -**cUSDT:** -- Address: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` -- See: `COINGECKO_SUBMISSION_CUSDT.md` - -**cUSDC:** -- Address: `0xf22258f57794CC8E06237084b353Ab30fFfa640b` -- See: `COINGECKO_SUBMISSION_CUSDC.md` - ---- - -## 🚀 Submission Steps - -### Step 1: Prepare Logos - -**Requirements:** -- Format: PNG -- Size: 512×512 pixels -- Background: Transparent preferred -- Quality: High resolution - -**Quick prepare (script):** -```bash -# From repo root. Requires ImageMagick (convert) or Pillow for 512×512 resize. -# Install: apt install imagemagick OR pip install Pillow -./docs/04-configuration/coingecko/scripts/prepare-token-logos-512x512.sh -# Output: docs/04-configuration/coingecko/logos/*-512x512.png -``` - -**Where to get logos:** -- Use USDT/USDC logos as reference -- Create distinct versions for cUSDT/cUSDC -- Ensure they meet size requirements - -### Step 2: Create CoinGecko Account - -1. Go to: https://www.coingecko.com -2. Click "Sign Up" or "Login" -3. Create account (free) -4. Verify email if required - -### Step 3: Submit Token - -1. **Navigate to submission page:** - - Go to: https://www.coingecko.com/en/coins/new - - Or: https://www.coingecko.com/en/request/new - -2. **Fill out the form:** - - **Basic Information:** - - Token Name: "Compliant Tether USD" (for cUSDT) or "Compliant USD Coin" (for cUSDC) - - Symbol: "cUSDT" or "cUSDC" - - Contract Address: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` (cUSDT) or `0xf22258f57794CC8E06237084b353Ab30fFfa640b` (cUSDC) - - Chain: Select "Custom Chain" or "Other" - - Chain ID: 138 - - Decimals: 6 - - **Network Information:** - - Network Name: "DBIS Chain" or "Defi Oracle Meta Mainnet" - - RPC URL: `https://rpc-http-pub.d-bis.org` - - Block Explorer: `https://explorer.d-bis.org` - - **Additional Information:** - - Description: Use description from submission documents - - Logo: Upload 512x512 PNG - - Website: (if available) - - Twitter: (if available) - - Telegram: (if available) - - Discord: (if available) - -3. **Submit for review** - -### Step 4: Follow-up - -- CoinGecko typically reviews within 1-2 weeks -- Check email for any requests for additional information -- Respond promptly to inquiries -- May need to provide: - - Trading volume data - - Liquidity information - - Additional documentation - ---- - -## 📊 Submission Checklist - -### For Each Token (cUSDT and cUSDC) - -- [ ] Logo prepared (512x512 PNG) -- [ ] CoinGecko account created -- [ ] Submission form filled out -- [ ] All required fields completed -- [ ] Submission sent -- [ ] Confirmation email received -- [ ] Follow-up completed (if requested) - ---- - -## ⏱️ Timeline - -### Expected Timeline - -1. **Submission:** Immediate -2. **Initial Review:** 1-3 business days -3. **Additional Info Request:** 3-5 business days (if needed) -4. **Approval:** 1-2 weeks from submission -5. **Listing:** Within 24 hours of approval - -### Total Time: 1-2 weeks - ---- - -## 🔍 After Listing - -### Verification Steps - -1. **Check CoinGecko:** - - Search for "cUSDT" or "cUSDC" - - Verify information is correct - - Check price is displaying - -2. **Test MetaMask:** - - Add token to MetaMask - - Verify USD value displays - - Check price updates - -3. **Monitor:** - - Check price accuracy - - Monitor for any issues - - Update if needed - ---- - -## 📚 Resources - -### Submission Documents - -- **cUSDT:** `COINGECKO_SUBMISSION_CUSDT.md` -- **cUSDC:** `COINGECKO_SUBMISSION_CUSDC.md` - -### CoinGecko Links - -- **Submission Form:** https://www.coingecko.com/en/coins/new -- **Help Center:** https://www.coingecko.com/en/help -- **API Documentation:** https://www.coingecko.com/en/api - -### Related Documentation - -- **GRU M1 Master Plan:** `../../gru-m1/GRU_M1_MASTER_IMPLEMENTATION_PLAN.md` — End-to-end listing framework, dry-runs, CMC/CG preparation -- **Oracle Setup:** `../metamask/ORACLE_PRICE_FEED_SETUP.md` -- **Token Lists:** `../metamask/METAMASK_TOKEN_LIST.json` -- **Token Addresses:** `../../11-references/CHAIN138_TOKEN_ADDRESSES.md` - ---- - -## ❓ Common Questions - -### Q: What if CoinGecko doesn't support ChainID 138? - -**A:** CoinGecko supports custom chains. You may need to: -- Select "Custom Chain" or "Other" in the form -- Provide RPC URL and block explorer -- May need to contact CoinGecko support for custom chain support - -### Q: Do I need trading volume to be listed? - -**A:** Not necessarily, but it helps. CoinGecko may list tokens with: -- Active development -- Community interest -- Technical merit -- Even without significant trading volume initially - -### Q: Can I submit both tokens at once? - -**A:** Yes, but submit them separately: -- One submission for cUSDT -- One submission for cUSDC -- Each needs its own form submission - -### Q: What if my submission is rejected? - -**A:** CoinGecko will provide reasons. Common reasons: -- Missing information -- Insufficient documentation -- Chain not supported (may need to request support) -- Contact CoinGecko support for clarification - ---- - -## ✅ Success Criteria - -Your submission is successful when: - -1. ✅ Token appears on CoinGecko -2. ✅ Price data is available -3. ✅ MetaMask shows USD values automatically -4. ✅ Information is accurate - ---- - -**Last Updated:** 2026-01-27 -**Status:** Ready for submission +If **Etherscan** shows **$0 Value** for a `cW*` token while balances are correct, see [ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) — listing on CoinGecko/CMC for the **Ethereum** contract is what eventually feeds third-party explorer pricing. diff --git a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_PACKAGE.md b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_PACKAGE.md index da2cc8d6..6d5d6c8c 100644 --- a/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_PACKAGE.md +++ b/docs/04-configuration/coingecko/COINGECKO_SUBMISSION_PACKAGE.md @@ -1,243 +1,45 @@ # CoinGecko Submission Package — Chain 138 -**Last Updated:** 2026-01-31 -**Document Version:** 1.0 -**Status:** Active Documentation +**Last Updated:** 2026-04-19 +**Status:** Canonical reference wrapper ---- +This document is now a thin wrapper around the current canonical submission attachment for Chain 138. -**Date:** 2026-01-30 -**Purpose:** Submit Chain 138 (DeFi Oracle Meta Mainnet) to CoinGecko for native USD prices in MetaMask -**Status:** Ready for submission +Use [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) as the source of truth for: ---- +- official chain naming +- official website, explorer, docs, Chainlist, and logo links +- current native `c*` asset inventory +- current public `cW*` bridged wrapped asset inventory +- verified repo sources and machine-readable JSON references -## Why Submit to CoinGecko? +## Canonical Public Network Identity -**Benefits:** -- Native USD prices in MetaMask for Chain 138 tokens -- Better visibility and discoverability -- Integration with DeFi aggregators and wallets -- Historical price data and charts +- **Chain name:** `DeFi Oracle Meta Mainnet` +- **Website:** `https://d-bis.org/` +- **Documentation:** `https://info.defi-oracle.io/` +- **Explorer:** `https://explorer.d-bis.org/` +- **Chainlist:** `https://chainlist.org/chain/138` ---- +## Verified Public JSON Endpoints -## Submission Information +These endpoints were live-verified on 2026-04-19 and should be preferred over older exported stubs in this directory. -### Chain Details +- **CoinGecko-style report:** `https://explorer.d-bis.org/api/v1/report/coingecko?chainId=138` +- **CMC-style report:** `https://explorer.d-bis.org/api/v1/report/cmc?chainId=138` +- **Cross-chain report:** `https://explorer.d-bis.org/api/v1/report/cross-chain?chainId=138` +- **Canonical token list:** `https://explorer.d-bis.org/api/v1/report/token-list?chainId=138` +- **Public `cW*` registry:** `https://explorer.d-bis.org/api/v1/report/cw-registry` +- **Explorer wallet token list:** `https://explorer.d-bis.org/api/config/token-list` +- **Explorer wallet networks config:** `https://explorer.d-bis.org/api/config/networks` -| Field | Value | -|-------|-------| -| **Chain Name** | DeFi Oracle Meta Mainnet | -| **Chain ID** | 138 (0x8a) | -| **Symbol** | ETH | -| **RPC URLs** | https://rpc-http-pub.d-bis.org
https://rpc.d-bis.org
https://rpc2.d-bis.org | -| **Explorer** | https://explorer.d-bis.org | -| **Website** | https://d-bis.org | -| **Block Time** | 2 seconds | -| **Consensus** | QBFT (Quorum Byzantine Fault Tolerance) | -| **Type** | EVM-compatible (Besu) | +## Local Machine-Readable References -### Network Information +- [cw-mesh-deployment-matrix-latest.json](/home/intlc/projects/proxmox/reports/status/cw-mesh-deployment-matrix-latest.json) +- [cw-public-prices-latest.json](/home/intlc/projects/proxmox/reports/status/cw-public-prices-latest.json) +- [promod-uniswap-v2-phase2-wave1-completion-status-latest.json](/home/intlc/projects/proxmox/reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json) +- [strict-operator-public-liquidity-table-latest.json](/home/intlc/projects/proxmox/reports/extraction/strict-operator-public-liquidity-table-latest.json) -```json -{ - "chainId": "0x8a", - "chainName": "DeFi Oracle Meta Mainnet", - "nativeCurrency": { - "name": "Ether", - "symbol": "ETH", - "decimals": 18 - }, - "rpcUrls": [ - "https://rpc-http-pub.d-bis.org", - "https://rpc.d-bis.org", - "https://rpc2.d-bis.org" - ], - "blockExplorerUrls": ["https://explorer.d-bis.org"] -} -``` +## Do Not Use ---- - -## Tokens to Submit - -### Priority Tokens (Submit First) - -| Symbol | Name | Address | Type | -|--------|------|---------|------| -| **WETH** | Wrapped Ether | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | Wrapped native | -| **WETH10** | Wrapped Ether v10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | Wrapped native | -| **cUSDT** | Compliant Tether USD | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | Stablecoin | -| **cUSDC** | Compliant USD Coin | `0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238` | Stablecoin | -| **cEURC** | Compliant Euro Coin | `0x08210F9170F89Ab7658F0B5E3fF39b0E03C594D4` | Stablecoin | - -### Additional Tokens - -| Symbol | Name | Address | Type | -|--------|------|---------|------| -| **cGBPC** | Compliant British Pound Coin | `0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB` | Stablecoin | -| **cAUDC** | Compliant Australian Dollar Coin | `0x9F3B8679c73C2Fef8b59B4f3444d4e156fb70AA5` | Stablecoin | -| **cJPYC** | Compliant Japanese Yen Coin | `0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB` | Stablecoin | -| **cCHFC** | Compliant Swiss Franc Coin | `0x2416092f143378750bb29b79eD961ab195CcEea5` | Stablecoin | -| **cCADC** | Compliant Canadian Dollar Coin | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | Stablecoin | - ---- - -## Submission Process - -### 1. Create CoinGecko Account - -- Visit: https://www.coingecko.com/ -- Sign up for free account -- Verify email - -### 2. Submit Chain - -- Go to: https://www.coingecko.com/en/request -- Select "Add New Blockchain" -- Fill form with chain details above -- Provide: - - Chain name, ID, symbol - - RPC endpoints - - Explorer URL - - Website - - Description - - Logo (if available) - -### 3. Submit Tokens - -For each token: -- Go to: https://www.coingecko.com/en/request -- Select "Add New Cryptocurrency" -- Provide: - - Token name, symbol, decimals - - Contract address - - Chain: DeFi Oracle Meta Mainnet (138) - - Description - - Logo (if available) - - Website/docs (if available) - -### 4. Verification - -CoinGecko will verify: -- Chain is live and accessible -- RPC endpoints work -- Explorer shows transactions -- Token contracts are deployed and verified - -**Timeline:** Usually 1-2 weeks for review - ---- - -## Supporting Materials - -### Chain Verification - -```bash -# Verify RPC is accessible -curl -X POST https://rpc-http-pub.d-bis.org \ - -H "Content-Type: application/json" \ - -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' - -# Verify explorer -curl https://explorer.d-bis.org/api/v2/stats -``` - -### Token Verification - -```bash -# Verify token contract (example: WETH) -curl "https://explorer.d-bis.org/api/v2/tokens/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" -``` - -### Token List - -Full token list available at: -- **API:** https://explorer.d-bis.org/api/config/token-list -- **File:** `docs/04-configuration/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json` - ---- - -## Submission Template - -### Chain Submission - -``` -Chain Name: DeFi Oracle Meta Mainnet -Chain ID: 138 -Symbol: ETH -Type: EVM-compatible (Hyperledger Besu) -Consensus: QBFT -Block Time: 2 seconds - -RPC Endpoints: -- https://rpc-http-pub.d-bis.org -- https://rpc.d-bis.org -- https://rpc2.d-bis.org - -Explorer: https://explorer.d-bis.org -Website: https://d-bis.org - -Description: -DeFi Oracle Meta Mainnet (Chain 138) is an enterprise-grade, EVM-compatible blockchain built on Hyperledger Besu with QBFT consensus. It features native oracle integration, cross-chain bridges (CCIP), and compliant stablecoins for institutional DeFi applications. - -Key Features: -- 2-second block time -- Native ETH/USD oracle integration -- CCIP bridge to Ethereum Mainnet -- Compliant stablecoins (cUSDT, cUSDC, cEURC, etc.) -- Enterprise-grade security and performance -``` - -### Token Submission Template (Example: cUSDT) - -``` -Token Name: Compliant Tether USD -Symbol: cUSDT -Decimals: 6 -Contract Address: 0x93E66202A11B1772E55407B32B44e5Cd8eda7f22 -Chain: DeFi Oracle Meta Mainnet (138) - -Description: -Compliant Tether USD (cUSDT) is a regulated stablecoin pegged to USD, designed for institutional use on Chain 138. It features compliance controls, KYC/AML integration, and cross-chain bridge support. - -Explorer: https://explorer.d-bis.org/address/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22 -``` - ---- - -## Post-Submission - -### After Approval - -1. **Verify listings:** - - Check Chain 138 appears on CoinGecko - - Verify tokens show USD prices - -2. **Update MetaMask:** - - USD prices should appear automatically - - No code changes needed - -3. **Monitor:** - - Check price accuracy - - Report any issues to CoinGecko support - ---- - -## Alternative: Manual Price Feed - -If CoinGecko submission takes too long, use token-aggregation API: - -```javascript -// Get token price from our API -const response = await fetch('https://explorer.d-bis.org/api/market/tokens?chainId=138'); -const tokens = await response.json(); -// tokens will include prices from CoinGecko/CMC/DexScreener -``` - ---- - -**Last updated:** 2026-01-30 -**Status:** Ready for submission -**Submission URL:** https://www.coingecko.com/en/request +Do not use files under [exports](/home/intlc/projects/proxmox/docs/04-configuration/coingecko/exports) as authoritative submission payloads right now. They currently contain placeholder Blockscout-style error JSON rather than current token-aggregation report data. diff --git a/docs/04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md b/docs/04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md new file mode 100644 index 00000000..43ccee75 --- /dev/null +++ b/docs/04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md @@ -0,0 +1,58 @@ +# Etherscan “Value” ($0) for Mainnet `cW*` Tokens + +**Purpose:** Explain why [Etherscan](https://etherscan.io) shows **correct balances** but **$0** in the **Value** column for custom ERC-20s (including `cWUSDT`, `cWUSDC`, etc.), and what actually fixes it. + +**Last updated:** 2026-04-21 + +--- + +## Why Value is $0 + +- Etherscan does **not** read your PMM pool or a fixed peg from the contract for the portfolio **Value** column. +- It aggregates **USD marks** from external sources—**CoinGecko** is the usual primary reference for ERC-20 USD on Ethereum Mainnet; **CoinMarketCap** and other feeds may also be used in combination. +- If the token has **no** listing (or no tradeable price) on those services for **that contract on chain ID 1**, the UI shows **$0** even when the token is real and liquid on-chain. + +**No Solidity change, env var, or repo script can force Etherscan’s Value column.** The fix is **off-chain listing and price discovery** on the aggregators Etherscan trusts. + +--- + +## What fixes it (high level) + +1. **Ethereum Mainnet contract verified** on Etherscan (exact match) — improves trust; does not by itself guarantee USD. +2. **CoinGecko** (or equivalent accepted listing) with: + - **Platform:** Ethereum + - **Contract:** the exact `cW*` address (e.g. `cWUSDT` on Mainnet — see [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) public-chain table) + - Accurate **symbol**, **decimals**, **logo**, and **liquidity / trading** data where the form requires it. +3. **CoinMarketCap** token page / DexScan-style verification where applicable — often reinforces visibility. +4. **Wait for propagation** — after approval, Etherscan may take **days to weeks** to reflect new prices; refresh the token page periodically. + +--- + +## CoinMarketCap DexScan vs CMC “verified” (example: `cWUSDC`) + +**Mainnet contract:** `CWUSDC_MAINNET` = `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` (see `smom-dbis-138/.env`). + +**DexScan page (on-chain DEX stats):** [cWUSDC on Ethereum — CoinMarketCap DexScan](https://dex.coinmarketcap.com/token/ethereum/0x2de5f116bfce3d0f922d9c8351e0c5fc24b9284a/) + +CMC may still show **“not verified by CoinMarketCap”** on that page, with a note that logo/socials can be third-party and to **DYOR**. For **official** CMC verification, their UI points to **CMC Priority** (paid / expedited listing path). DexScan presence **does not** automatically flip [Etherscan](https://etherscan.io) holder **Value** to a trusted USD mark—that pipeline still depends on the feeds Etherscan uses (typically **CoinGecko**-heavy) plus time. + +Treat DexScan as **evidence of on-chain activity** and a **parallel** track to pursue alongside CoinGecko submission in [CMC_COINGECKO_SUBMISSION_RUNBOOK.md](CMC_COINGECKO_SUBMISSION_RUNBOOK.md). + +--- + +## Repo-native steps (operator) + +| Step | Action | +|------|--------| +| 1 | Follow [CMC_COINGECKO_SUBMISSION_RUNBOOK.md](CMC_COINGECKO_SUBMISSION_RUNBOOK.md) — export report JSON if needed, prepare logos. | +| 2 | Submit the **Ethereum Mainnet** token (not only Chain 138) with the **Mainnet contract address** from [COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md](COINGECKO_CHAIN138_SUBMISSION_ATTACHMENT.md) or `smom-dbis-138/.env` (`CWUSDT_MAINNET`, `CWUSDC_MAINNET`, …). | +| 3 | Use [CoinGecko listing / new coin](https://www.coingecko.com/en/coins/new) (or their current partner flow) and attach materials as required. | +| 4 | After listing, confirm the token page on CoinGecko shows a **price** for **Ethereum**; then check Etherscan’s token and holder views again. | +| 5 | Optional: pursue **CMC Priority** / DexScan verification if you need the [DexScan](https://dex.coinmarketcap.com/) badge and official CMC metadata—separate from Etherscan Value propagation. | + +--- + +## Related + +- On-chain / treasury **marks** (not Etherscan): [CW_TOKEN_USD_PRICING_RUNBOOK.md](../../03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md) and `scripts/deployment/price-cw-token-mainnet.sh`. +- Multi-chain mid table: [CW_PUBLIC_NETWORK_PRICES.md](../../03-deployment/CW_PUBLIC_NETWORK_PRICES.md). diff --git a/docs/04-configuration/metamask/METAMASK_INTEGRATION_VERIFICATION_REPORT.md b/docs/04-configuration/metamask/METAMASK_INTEGRATION_VERIFICATION_REPORT.md index cb5699f9..fa8921a7 100644 --- a/docs/04-configuration/metamask/METAMASK_INTEGRATION_VERIFICATION_REPORT.md +++ b/docs/04-configuration/metamask/METAMASK_INTEGRATION_VERIFICATION_REPORT.md @@ -7,7 +7,7 @@ --- **Date:** 2026-01-27 -**ChainID:** 138 (DBIS Chain) +**ChainID:** 138 (DeFi Oracle Meta Mainnet) **Status:** ✅ Verification Complete --- diff --git a/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG.json b/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG.json index ec96e271..e75601a7 100644 --- a/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG.json +++ b/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG.json @@ -1,7 +1,7 @@ { "chainId": "0x8a", "chainIdDecimal": 138, - "chainName": "Defi Oracle Meta Mainnet", + "chainName": "DeFi Oracle Meta Mainnet", "rpcUrls": [ "https://rpc-http-pub.d-bis.org", "https://rpc.d-bis.org", diff --git a/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json b/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json index 54d94cb2..ad43a241 100644 --- a/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json +++ b/docs/04-configuration/metamask/METAMASK_NETWORK_CONFIG_2138.json @@ -1,7 +1,7 @@ { "chainId": "0x85a", "chainIdDecimal": 2138, - "chainName": "Defi Oracle Meta Testnet", + "chainName": "DeFi Oracle Meta Testnet", "rpcUrls": [ "https://rpc.public-2138.defi-oracle.io" ], diff --git a/docs/04-configuration/pr-ready/README.md b/docs/04-configuration/pr-ready/README.md index 0ffdf661..862bce7b 100644 --- a/docs/04-configuration/pr-ready/README.md +++ b/docs/04-configuration/pr-ready/README.md @@ -1,6 +1,6 @@ # PR-Ready Submissions — Chain 138 -**Purpose:** Drop-in content to open pull requests or submit listings for Defi Oracle Meta Mainnet (Chain ID 138). Use when you are ready to submit; forms are already submitted where applicable (see [REPOSITORIES_AND_PRS_CHAIN138](../../00-meta/REPOSITORIES_AND_PRS_CHAIN138.md)). +**Purpose:** Drop-in content to open pull requests or submit listings for DeFi Oracle Meta Mainnet (Chain ID 138). Use when you are ready to submit; forms are already submitted where applicable (see [REPOSITORIES_AND_PRS_CHAIN138](../../00-meta/REPOSITORIES_AND_PRS_CHAIN138.md)). --- @@ -52,7 +52,7 @@ There are two different Trust Wallet paths: **Directory:** [eip155-138-package/](./eip155-138-package/) -This folder is the operator-friendly handoff bundle for Defi Oracle Meta Mainnet (`eip155-138`). It contains: +This folder is the operator-friendly handoff bundle for DeFi Oracle Meta Mainnet (`eip155-138`). It contains: - a Chainlist-ready JSON copy - a Trust Wallet Wallet Core registry entry copy diff --git a/docs/04-configuration/pr-ready/chain138-asset-package/README.md b/docs/04-configuration/pr-ready/chain138-asset-package/README.md index c26d7c9b..d873494d 100644 --- a/docs/04-configuration/pr-ready/chain138-asset-package/README.md +++ b/docs/04-configuration/pr-ready/chain138-asset-package/README.md @@ -1,6 +1,6 @@ # Chain 138 Asset Submission Package -**Chain:** Defi Oracle Meta Mainnet +**Chain:** DeFi Oracle Meta Mainnet **Chain ID:** 138 **CAIP-2:** `eip155:138` diff --git a/docs/04-configuration/pr-ready/chain138-asset-package/listing-token-submissions.chain138.json b/docs/04-configuration/pr-ready/chain138-asset-package/listing-token-submissions.chain138.json index fb56d63d..0b209105 100644 --- a/docs/04-configuration/pr-ready/chain138-asset-package/listing-token-submissions.chain138.json +++ b/docs/04-configuration/pr-ready/chain138-asset-package/listing-token-submissions.chain138.json @@ -1,6 +1,6 @@ { "chainId": 138, - "chainName": "Defi Oracle Meta Mainnet", + "chainName": "DeFi Oracle Meta Mainnet", "submissionType": "listing_surfaces", "surfaceNotes": { "walletCore": "Chain metadata only. No token assets, bridge listings, or pool listings.", diff --git a/docs/04-configuration/pr-ready/chain138-asset-package/manifest.json b/docs/04-configuration/pr-ready/chain138-asset-package/manifest.json index 11283d44..2b4cb0d5 100644 --- a/docs/04-configuration/pr-ready/chain138-asset-package/manifest.json +++ b/docs/04-configuration/pr-ready/chain138-asset-package/manifest.json @@ -1,6 +1,6 @@ { "name": "Chain 138 Asset Submission Package", - "chainName": "Defi Oracle Meta Mainnet", + "chainName": "DeFi Oracle Meta Mainnet", "chainId": 138, "caip2": "eip155:138", "purpose": "Submission bundle for Chain 138 token assets across wallet and listing surfaces.", diff --git a/docs/04-configuration/pr-ready/chain138-asset-package/wallet-token-submissions.chain138.json b/docs/04-configuration/pr-ready/chain138-asset-package/wallet-token-submissions.chain138.json index 0e9461c0..c0a320d5 100644 --- a/docs/04-configuration/pr-ready/chain138-asset-package/wallet-token-submissions.chain138.json +++ b/docs/04-configuration/pr-ready/chain138-asset-package/wallet-token-submissions.chain138.json @@ -1,6 +1,6 @@ { "chainId": 138, - "chainName": "Defi Oracle Meta Mainnet", + "chainName": "DeFi Oracle Meta Mainnet", "submissionType": "wallet_assets", "notes": [ "This file is for wallet-facing token asset metadata, not Wallet Core chain support.", diff --git a/docs/04-configuration/pr-ready/eip155-138-package/README.md b/docs/04-configuration/pr-ready/eip155-138-package/README.md index b2238444..7eaeb481 100644 --- a/docs/04-configuration/pr-ready/eip155-138-package/README.md +++ b/docs/04-configuration/pr-ready/eip155-138-package/README.md @@ -1,6 +1,6 @@ -# Defi Oracle Meta Mainnet PR-Ready Package +# DeFi Oracle Meta Mainnet PR-Ready Package -**Chain:** Defi Oracle Meta Mainnet +**Chain:** DeFi Oracle Meta Mainnet **Chain ID:** 138 **CAIP-2:** `eip155:138` diff --git a/docs/04-configuration/pr-ready/eip155-138-package/eip155-138.chainlist.json b/docs/04-configuration/pr-ready/eip155-138-package/eip155-138.chainlist.json index ddc6d4d8..0939c491 100644 --- a/docs/04-configuration/pr-ready/eip155-138-package/eip155-138.chainlist.json +++ b/docs/04-configuration/pr-ready/eip155-138-package/eip155-138.chainlist.json @@ -1,5 +1,5 @@ { - "name": "Defi Oracle Meta Mainnet", + "name": "DeFi Oracle Meta Mainnet", "chain": "dfiometa", "rpc": [ "https://rpc-http-pub.d-bis.org", diff --git a/docs/04-configuration/pr-ready/eip155-138-package/manifest.json b/docs/04-configuration/pr-ready/eip155-138-package/manifest.json index 27ddc441..52ad9084 100644 --- a/docs/04-configuration/pr-ready/eip155-138-package/manifest.json +++ b/docs/04-configuration/pr-ready/eip155-138-package/manifest.json @@ -1,5 +1,5 @@ { - "name": "Defi Oracle Meta Mainnet PR-Ready Package", + "name": "DeFi Oracle Meta Mainnet PR-Ready Package", "chainId": 138, "caip2": "eip155:138", "generatedBy": "scripts/verify/build-chain138-pr-ready-package.sh", diff --git a/docs/04-configuration/pr-ready/eip155-138-package/trust-wallet-registry-chain138.json b/docs/04-configuration/pr-ready/eip155-138-package/trust-wallet-registry-chain138.json index b12fd571..2f9e21df 100644 --- a/docs/04-configuration/pr-ready/eip155-138-package/trust-wallet-registry-chain138.json +++ b/docs/04-configuration/pr-ready/eip155-138-package/trust-wallet-registry-chain138.json @@ -1,6 +1,6 @@ { "id": "dfiometa", - "name": "Defi Oracle Meta Mainnet", + "name": "DeFi Oracle Meta Mainnet", "coinId": 10000138, "symbol": "ETH", "decimals": 18, diff --git a/docs/04-configuration/pr-ready/eip155-138.json b/docs/04-configuration/pr-ready/eip155-138.json index ddc6d4d8..0939c491 100644 --- a/docs/04-configuration/pr-ready/eip155-138.json +++ b/docs/04-configuration/pr-ready/eip155-138.json @@ -1,5 +1,5 @@ { - "name": "Defi Oracle Meta Mainnet", + "name": "DeFi Oracle Meta Mainnet", "chain": "dfiometa", "rpc": [ "https://rpc-http-pub.d-bis.org", diff --git a/docs/04-configuration/pr-ready/trust-wallet-registry-chain138.json b/docs/04-configuration/pr-ready/trust-wallet-registry-chain138.json index b12fd571..2f9e21df 100644 --- a/docs/04-configuration/pr-ready/trust-wallet-registry-chain138.json +++ b/docs/04-configuration/pr-ready/trust-wallet-registry-chain138.json @@ -1,6 +1,6 @@ { "id": "dfiometa", - "name": "Defi Oracle Meta Mainnet", + "name": "DeFi Oracle Meta Mainnet", "coinId": 10000138, "symbol": "ETH", "decimals": 18, diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/admin_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/admin_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..8654b695 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/admin_sankofa_nexus_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:28 GMT +content-type: text/html; charset=utf-8 +content-length: 5259 +vary: Accept-Encoding +x-dns-prefetch-control: on +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-frame-options: SAMEORIGIN +x-content-type-options: nosniff +x-xss-protection: 0 +referrer-policy: strict-origin-when-cross-origin +permissions-policy: camera=(), microphone=(), geolocation=() +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https: +vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding +cache-control: s-maxage=31536000, stale-while-revalidate +etag: "oibim89srm41x" +alt-svc: h3=":443"; ma=86400 + + +0.124627 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/all_e2e_results.json b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/all_e2e_results.json new file mode 100644 index 00000000..74f6dc6c --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/all_e2e_results.json @@ -0,0 +1,1096 @@ +[ + { + "domain": "dbis-admin.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:26-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "dbis-admin.d-bis.org", + "issuer": "E7", + "expires": "Jun 15 06:47:43 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.043463, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "rpc-alltra-3.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:26-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "172.67.220.49", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "mifos.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:27-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "*", + "issuer": "*", + "expires": "May 19 19:15:03 3025 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.036771, + "has_hsts": false, + "has_csp": false, + "has_xfo": false + } + } + }, + { + "domain": "admin.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:27-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "admin.sankofa.nexus", + "issuer": "E7", + "expires": "Jun 27 19:39:40 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.124627, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "dash.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:28-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "dash.sankofa.nexus", + "issuer": "E8", + "expires": "Jun 30 17:27:00 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.072841, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "rpc-hybx-2.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:29-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "172.67.220.49", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "portal.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:29-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "portal.sankofa.nexus", + "issuer": "E8", + "expires": "Jun 27 19:40:08 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.040186, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "cacti-hybx.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:30-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "172.67.220.49", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.136864, + "has_hsts": true, + "has_csp": false, + "has_xfo": true + } + } + }, + { + "domain": "sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:30-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "sankofa.nexus", + "issuer": "E8", + "expires": "Jun 16 06:48:37 2026 GMT" + }, + "https": { + "status": "warn", + "http_code": 502, + "response_time_seconds": 0.034055 + } + } + }, + { + "domain": "rpc-alltra.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:31-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "172.67.220.49", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "rpc-http-pub.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:31-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "rpc-http-pub.d-bis.org", + "issuer": "E8", + "expires": "Jun 16 06:48:10 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "rpc.public-0138.defi-oracle.io", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:32-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "rpc.public-0138.defi-oracle.io", + "issuer": "E8", + "expires": "Jun 26 16:00:12 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "studio.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:32-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "studio.sankofa.nexus", + "issuer": "E7", + "expires": "May 31 10:23:29 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.045639, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "dbis-api.d-bis.org", + "domain_type": "api", + "timestamp": "2026-04-19T16:23:32-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "dbis-api.d-bis.org", + "issuer": "E7", + "expires": "Jun 16 06:47:45 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.053074, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "docs.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:33-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "docs.d-bis.org", + "issuer": "E8", + "expires": "Jun 19 20:22:34 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.785230, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "rpc-hybx-3.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:34-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "172.67.220.49", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "rpc.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:35-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "rpc.d-bis.org", + "issuer": "E8", + "expires": "Jun 29 16:01:15 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "dapp.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:35-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "dapp.d-bis.org", + "issuer": "E8", + "expires": "May 22 02:38:20 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.090312, + "has_hsts": false, + "has_csp": true, + "has_xfo": false + } + } + }, + { + "domain": "www.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:35-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "www.sankofa.nexus", + "issuer": "E7", + "expires": "Apr 16 20:59:41 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 301, + "response_time_seconds": 0.079762, + "canonical_redirect": true, + "location_header": "location: https://sankofa.nexus/" + } + } + }, + { + "domain": "www.the-order.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:36-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "www.the-order.sankofa.nexus", + "issuer": "E8", + "expires": "Jun 25 04:52:05 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 301, + "response_time_seconds": 0.066193, + "canonical_redirect": true, + "location_header": "location: https://the-order.sankofa.nexus/" + } + } + }, + { + "domain": "keycloak.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:37-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "keycloak.sankofa.nexus", + "issuer": "E8", + "expires": "Jun 25 04:50:58 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 302, + "response_time_seconds": 0.086120, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "mim4u.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:37-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "mim4u.org", + "issuer": "E8", + "expires": "Jun 16 06:47:53 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.044713, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "ws.rpc.d-bis.org", + "domain_type": "rpc-ws", + "timestamp": "2026-04-19T16:23:37-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "ws.rpc.d-bis.org", + "issuer": "E8", + "expires": "Jun 29 16:00:38 2026 GMT" + }, + "websocket": { + "status": "pass", + "http_code": "400", + "full_test": true, + "note": "wscat exited successfully without printable RPC output" + } + } + }, + { + "domain": "phoenix.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:38-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "phoenix.sankofa.nexus", + "issuer": "E7", + "expires": "Jun 16 06:47:58 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.064355, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "www.mim4u.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:38-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "www.mim4u.org", + "issuer": "E8", + "expires": "Jun 15 06:47:54 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.037490, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "wss.defi-oracle.io", + "domain_type": "rpc-ws", + "timestamp": "2026-04-19T16:23:39-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "wss.defi-oracle.io", + "issuer": "E8", + "expires": "Jun 29 16:00:55 2026 GMT" + }, + "websocket": { + "status": "pass", + "http_code": "400", + "full_test": true, + "note": "wscat exited successfully without printable RPC output" + } + } + }, + { + "domain": "the-order.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:39-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "the-order.sankofa.nexus", + "issuer": "E8", + "expires": "Jun 16 06:48:53 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.035410, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "rpc2.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:40-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "rpc2.d-bis.org", + "issuer": "E7", + "expires": "Jun 30 16:00:41 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "rpc-ws-pub.d-bis.org", + "domain_type": "rpc-ws", + "timestamp": "2026-04-19T16:23:40-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "rpc-ws-pub.d-bis.org", + "issuer": "E7", + "expires": "Jun 16 06:48:27 2026 GMT" + }, + "websocket": { + "status": "pass", + "http_code": "400", + "full_test": true, + "note": "wscat exited successfully without printable RPC output" + } + } + }, + { + "domain": "dev.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:41-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.40", + "expected_ip": "76.53.10.40" + }, + "ssl": { + "status": "pass", + "cn": "subject=", + "issuer": "YE2", + "expires": "Apr 23 16:29:58 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.037918, + "has_hsts": false, + "has_csp": false, + "has_xfo": true + } + } + }, + { + "domain": "rpc-alltra-2.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:41-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "172.67.220.49", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "www.phoenix.sankofa.nexus", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:42-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "www.phoenix.sankofa.nexus", + "issuer": "E8", + "expires": "Jun 15 06:48:02 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 301, + "response_time_seconds": 0.049783, + "canonical_redirect": true, + "location_header": "location: https://phoenix.sankofa.nexus/health" + } + } + }, + { + "domain": "gitea.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:42-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.40", + "expected_ip": "76.53.10.40" + }, + "ssl": { + "status": "pass", + "cn": "subject=", + "issuer": "YE2", + "expires": "Apr 23 19:29:58 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.045925, + "has_hsts": false, + "has_csp": false, + "has_xfo": true + } + } + }, + { + "domain": "secure.mim4u.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:42-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "secure.mim4u.org", + "issuer": "E8", + "expires": "Jun 16 06:48:46 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.043258, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "explorer.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:43-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "104.21.86.131", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.979143, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + }, + "blockscout_api": { + "status": "pass", + "http_code": 200 + } + } + }, + { + "domain": "training.mim4u.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:45-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "training.mim4u.org", + "issuer": "E7", + "expires": "Jun 16 06:49:02 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.036393, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "blockscout.defi-oracle.io", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:45-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "blockscout.defi-oracle.io", + "issuer": "E7", + "expires": "Jun 8 13:56:19 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.746715, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + }, + "blockscout_api": { + "status": "pass", + "http_code": 200 + } + } + }, + { + "domain": "dbis-api-2.d-bis.org", + "domain_type": "api", + "timestamp": "2026-04-19T16:23:47-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "dbis-api-2.d-bis.org", + "issuer": "E8", + "expires": "Apr 16 20:56:22 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.132154, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "secure.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:47-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "secure.d-bis.org", + "issuer": "E7", + "expires": "Apr 16 20:58:28 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.078530, + "has_hsts": true, + "has_csp": true, + "has_xfo": true + } + } + }, + { + "domain": "rpc-hybx.d-bis.org", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:48-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "104.21.86.131", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "codespaces.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:48-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.40", + "expected_ip": "76.53.10.40" + }, + "ssl": { + "status": "pass", + "cn": "subject=", + "issuer": "YE1", + "expires": "Apr 23 07:29:58 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.040817, + "has_hsts": false, + "has_csp": false, + "has_xfo": true + } + } + }, + { + "domain": "rpc.defi-oracle.io", + "domain_type": "rpc-http", + "timestamp": "2026-04-19T16:23:48-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "rpc.defi-oracle.io", + "issuer": "E7", + "expires": "Jun 30 18:44:51 2026 GMT" + }, + "rpc_http": { + "status": "pass", + "chain_id": "0x8a" + } + } + }, + { + "domain": "ws.rpc2.d-bis.org", + "domain_type": "rpc-ws", + "timestamp": "2026-04-19T16:23:49-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "76.53.10.36", + "expected_ip": "76.53.10.36" + }, + "ssl": { + "status": "pass", + "cn": "ws.rpc2.d-bis.org", + "issuer": "E8", + "expires": "Jun 28 16:00:21 2026 GMT" + }, + "websocket": { + "status": "pass", + "http_code": "400", + "full_test": true, + "note": "wscat exited successfully without printable RPC output" + } + } + }, + { + "domain": "cacti-alltra.d-bis.org", + "domain_type": "web", + "timestamp": "2026-04-19T16:23:49-07:00", + "tests": { + "dns": { + "status": "pass", + "resolved_ip": "104.21.86.131", + "expected_ip": "any" + }, + "ssl": { + "status": "pass", + "cn": "d-bis.org", + "issuer": "WE1", + "expires": "May 27 07:40:56 2026 GMT" + }, + "https": { + "status": "pass", + "http_code": 200, + "response_time_seconds": 0.141737, + "has_hsts": true, + "has_csp": false, + "has_xfo": true + } + } + } +] diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/blockscout_defi-oracle_io_blockscout_api.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/blockscout_defi-oracle_io_blockscout_api.txt new file mode 100644 index 00000000..8401cc5d --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/blockscout_defi-oracle_io_blockscout_api.txt @@ -0,0 +1 @@ +{"total_blocks":4158566,"total_transactions":60889,"total_addresses":6832,"latest_block":4158565,"average_block_time":4525.252525252526,"gas_prices":{"average":14.204000292969999},"network_utilization_percentage":0,"transactions_today":51,"freshness":{"chain_head":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9757,"source":"reported","confidence":"high","provenance":"rpc","completeness":"complete"},"latest_indexed_block":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9757,"source":"reported","confidence":"high","provenance":"explorer_index","completeness":"complete"},"latest_indexed_transaction":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51335,"hash":"0x03d4e55bcf98bd3bd9ad8f960543b9743d1a5cebad4e23db1b134905f5e8db97","source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"},"latest_non_empty_block":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51335,"distance_from_head":9239,"source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"}},"completeness":{"transactions_feed":"stale","blocks_feed":"complete","gas_metrics":"complete","utilization_metrics":"complete"},"sampling":{"stats_generated_at":"2026-04-19T23:23:47Z","rpc_probe_at":"2026-04-19T20:41:10Z","stats_window_seconds":300},"diagnostics":{"tx_visibility_state":"stale","activity_state":"quiet_chain","explanation":"Recent sampled head blocks are empty, which indicates a quiet chain rather than a broken explorer.","tx_lag_blocks":9239,"tx_lag_seconds":51335,"recent_block_sample_size":128,"recent_non_empty_blocks":0,"recent_transactions":0,"latest_non_empty_block_from_block_feed":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51335,"distance_from_head":9239,"source":"derived","confidence":"medium","provenance":"composite","completeness":"stale"},"source":"reported","confidence":"medium","provenance":"composite","completeness":"complete"}} diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/blockscout_defi-oracle_io_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/blockscout_defi-oracle_io_https_headers.txt new file mode 100644 index 00000000..c8206151 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/blockscout_defi-oracle_io_https_headers.txt @@ -0,0 +1,18 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:46 GMT +content-type: text/html; charset=utf-8 +content-length: 106336 +vary: Accept-Encoding +etag: "9wzweiy79b2a0s" +vary: Accept-Encoding +cache-control: no-store, no-cache, must-revalidate +referrer-policy: strict-origin-when-cross-origin +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://unpkg.com https://cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; img-src 'self' data: https:; font-src 'self' https://cdnjs.cloudflare.com; connect-src 'self' https://blockscout.defi-oracle.io wss://blockscout.defi-oracle.io https://explorer.d-bis.org wss://explorer.d-bis.org https://rpc-http-pub.d-bis.org wss://rpc-ws-pub.d-bis.org http://192.168.11.221:8545 ws://192.168.11.221:8546; +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.746715 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/cacti-alltra_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/cacti-alltra_d-bis_org_https_headers.txt new file mode 100644 index 00000000..db73ed4f --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/cacti-alltra_d-bis_org_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:50 GMT +content-type: text/html +alt-svc: h3=":443"; ma=86400 +nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} +report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=7vdC3ctyhn1X6CkRWv3%2BAEG7vDzZsDAm6r0EQZb2jEHLpZuNa9ti9tqWlPgt0YJKNE1uyo1GbOstE%2BtLvLSLofBX%2BOf24ZazWFN7ES%2BDCzjdhtfT3WrmWhpEUolIpw7xS7PWW17kwk1v"}]} +last-modified: Thu, 02 Apr 2026 19:42:29 GMT +referrer-policy: strict-origin-when-cross-origin +vary: Accept-Encoding +x-content-type-options: nosniff +x-dns-prefetch-control: off +x-frame-options: SAMEORIGIN +x-permitted-cross-domain-policies: none +cf-cache-status: DYNAMIC +strict-transport-security: max-age=31536000; includeSubDomains +server: cloudflare +cf-ray: 9eefa8c5c9727e62-LAX + + +0.141737 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/cacti-hybx_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/cacti-hybx_d-bis_org_https_headers.txt new file mode 100644 index 00000000..50e4f4e6 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/cacti-hybx_d-bis_org_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:30 GMT +content-type: text/html +alt-svc: h3=":443"; ma=86400 +nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} +report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=17BRhR%2Bzy%2F0LZuGbGhSIp70vIWykch0OYVcKOe9H01RxWuRiXbXK05JDEdTVeevCszCGVPq6xNRPsG0HMHQuBktM6yIoDzeyMuw4MaCuVjeXqgTgtQc0aaq17KxoZ1bcIAPe65VYIA%3D%3D"}]} +last-modified: Thu, 02 Apr 2026 19:42:29 GMT +referrer-policy: strict-origin-when-cross-origin +vary: Accept-Encoding +x-content-type-options: nosniff +x-dns-prefetch-control: off +x-frame-options: SAMEORIGIN +x-permitted-cross-domain-policies: none +cf-cache-status: DYNAMIC +strict-transport-security: max-age=31536000; includeSubDomains +server: cloudflare +cf-ray: 9eefa84c5b879dfc-LAX + + +0.136864 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/codespaces_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/codespaces_d-bis_org_https_headers.txt new file mode 100644 index 00000000..96bdda0c --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/codespaces_d-bis_org_https_headers.txt @@ -0,0 +1,10 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:48 GMT +x-dns-prefetch-control: off +x-content-type-options: nosniff +x-permitted-cross-domain-policies: none +referrer-policy: strict-origin-when-cross-origin +x-frame-options: SAMEORIGIN + + +0.040817 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dapp_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dapp_d-bis_org_https_headers.txt new file mode 100644 index 00000000..f1d42e92 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dapp_d-bis_org_https_headers.txt @@ -0,0 +1,12 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:35 GMT +content-type: text/html +content-length: 470 +vary: Accept-Encoding +last-modified: Sun, 22 Feb 2026 04:25:15 GMT +etag: "699a852b-1d6" +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; connect-src 'self' https: wss: http://192.168.11.221:8545 ws://192.168.11.221:8546 https://rpc-http-pub.d-bis.org wss://rpc-ws-pub.d-bis.org; frame-src 'self' https:; frame-ancestors 'self'; +accept-ranges: bytes + + +0.090312 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dash_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dash_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..51f4066d --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dash_sankofa_nexus_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:29 GMT +content-type: text/html; charset=utf-8 +content-length: 5259 +vary: Accept-Encoding +x-dns-prefetch-control: on +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-frame-options: SAMEORIGIN +x-content-type-options: nosniff +x-xss-protection: 0 +referrer-policy: strict-origin-when-cross-origin +permissions-policy: camera=(), microphone=(), geolocation=() +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https: +vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding +cache-control: s-maxage=31536000, stale-while-revalidate +etag: "oibim89srm41x" +alt-svc: h3=":443"; ma=86400 + + +0.072841 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-admin_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-admin_d-bis_org_https_headers.txt new file mode 100644 index 00000000..b6054490 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-admin_d-bis_org_https_headers.txt @@ -0,0 +1,19 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:26 GMT +content-type: text/html +content-length: 801 +vary: Accept-Encoding +last-modified: Wed, 15 Apr 2026 18:06:44 GMT +etag: "69dfd3b4-321" +x-frame-options: SAMEORIGIN +x-content-type-options: nosniff +x-xss-protection: 0 +referrer-policy: no-referrer-when-downgrade +content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests +accept-ranges: bytes +alt-svc: h3=":443"; ma=86400 +strict-transport-security: max-age=63072000; includeSubDomains; preload +referrer-policy: strict-origin-when-cross-origin + + +0.043463 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-api-2_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-api-2_d-bis_org_https_headers.txt new file mode 100644 index 00000000..1c0a3341 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-api-2_d-bis_org_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:47 GMT +content-type: application/json; charset=utf-8 +content-length: 113 +vary: Accept-Encoding +content-security-policy: default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests +cross-origin-opener-policy: same-origin +cross-origin-resource-policy: same-origin +origin-agent-cluster: ?1 +referrer-policy: no-referrer +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-content-type-options: nosniff +x-dns-prefetch-control: off +x-download-options: noopen +x-frame-options: SAMEORIGIN +x-permitted-cross-domain-policies: none +x-xss-protection: 0 +x-trace-id: aa19e0c4f85a84ac417bd9cd7a8005b0 +x-span-id: 924815c450090ad7 +x-parent-span-id: diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-api_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-api_d-bis_org_https_headers.txt new file mode 100644 index 00000000..b347c83f --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dbis-api_d-bis_org_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:33 GMT +content-type: application/json; charset=utf-8 +content-length: 113 +vary: Accept-Encoding +content-security-policy: default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests +cross-origin-opener-policy: same-origin +cross-origin-resource-policy: same-origin +origin-agent-cluster: ?1 +referrer-policy: no-referrer +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-content-type-options: nosniff +x-dns-prefetch-control: off +x-download-options: noopen +x-frame-options: SAMEORIGIN +x-permitted-cross-domain-policies: none +x-xss-protection: 0 +x-trace-id: 43a23f112fc42023a239d08befd00447 +x-span-id: c46a8a1dfc7956e7 +x-parent-span-id: diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dev_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dev_d-bis_org_https_headers.txt new file mode 100644 index 00000000..38b77a74 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/dev_d-bis_org_https_headers.txt @@ -0,0 +1,10 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:41 GMT +x-dns-prefetch-control: off +x-content-type-options: nosniff +x-permitted-cross-domain-policies: none +referrer-policy: strict-origin-when-cross-origin +x-frame-options: SAMEORIGIN + + +0.037918 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/docs_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/docs_d-bis_org_https_headers.txt new file mode 100644 index 00000000..594401eb --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/docs_d-bis_org_https_headers.txt @@ -0,0 +1,18 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:34 GMT +content-type: text/html; charset=utf-8 +content-length: 106338 +vary: Accept-Encoding +etag: "dbgda7r63t2a0u" +vary: Accept-Encoding +cache-control: no-store, no-cache, must-revalidate +referrer-policy: strict-origin-when-cross-origin +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://unpkg.com https://cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; img-src 'self' data: https:; font-src 'self' https://cdnjs.cloudflare.com; connect-src 'self' https://blockscout.defi-oracle.io wss://blockscout.defi-oracle.io https://explorer.d-bis.org wss://explorer.d-bis.org https://rpc-http-pub.d-bis.org wss://rpc-ws-pub.d-bis.org http://192.168.11.221:8545 ws://192.168.11.221:8546; +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.785230 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/explorer_d-bis_org_blockscout_api.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/explorer_d-bis_org_blockscout_api.txt new file mode 100644 index 00000000..68a97408 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/explorer_d-bis_org_blockscout_api.txt @@ -0,0 +1 @@ +{"total_blocks":4158566,"total_transactions":60889,"total_addresses":6832,"latest_block":4158565,"average_block_time":4525.252525252526,"gas_prices":{"average":14.204000292969999},"network_utilization_percentage":0,"transactions_today":51,"freshness":{"chain_head":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9755,"source":"reported","confidence":"high","provenance":"rpc","completeness":"complete"},"latest_indexed_block":{"block_number":4158565,"timestamp":"2026-04-19T20:41:10Z","age_seconds":9755,"source":"reported","confidence":"high","provenance":"explorer_index","completeness":"complete"},"latest_indexed_transaction":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51333,"hash":"0x03d4e55bcf98bd3bd9ad8f960543b9743d1a5cebad4e23db1b134905f5e8db97","source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"},"latest_non_empty_block":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51333,"distance_from_head":9239,"source":"reported","confidence":"high","provenance":"tx_index","completeness":"stale"}},"completeness":{"transactions_feed":"stale","blocks_feed":"complete","gas_metrics":"complete","utilization_metrics":"complete"},"sampling":{"stats_generated_at":"2026-04-19T23:23:45Z","rpc_probe_at":"2026-04-19T20:41:10Z","stats_window_seconds":300},"diagnostics":{"tx_visibility_state":"stale","activity_state":"quiet_chain","explanation":"Recent sampled head blocks are empty, which indicates a quiet chain rather than a broken explorer.","tx_lag_blocks":9239,"tx_lag_seconds":51333,"recent_block_sample_size":128,"recent_non_empty_blocks":0,"recent_transactions":0,"latest_non_empty_block_from_block_feed":{"block_number":4149326,"timestamp":"2026-04-19T09:08:12Z","age_seconds":51333,"distance_from_head":9239,"source":"derived","confidence":"medium","provenance":"composite","completeness":"stale"},"source":"reported","confidence":"medium","provenance":"composite","completeness":"complete"}} diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/explorer_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/explorer_d-bis_org_https_headers.txt new file mode 100644 index 00000000..b820d945 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/explorer_d-bis_org_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:44 GMT +content-type: text/html; charset=utf-8 +vary: Accept-Encoding +vary: Accept-Encoding +report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Rp4hBLN5bmEGVQhcT3iqNQNhSk3uHzCFche9JQDjOGDTEln1cjEVDm7n9UN5L4xTpK6G8S2YljEYFpoTthleLEFkbqiBPDVFNqzZCobbnzNFJFrov8bM5jaXDv%2FZVSPuKvA%2F908%3D"}]} +cache-control: no-store, no-cache, must-revalidate +referrer-policy: strict-origin-when-cross-origin +referrer-policy: strict-origin-when-cross-origin +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https: data:; style-src 'self' 'unsafe-inline' https: data:; font-src 'self' https: data:; img-src 'self' data: https: blob:; connect-src 'self' https: wss: ws:; media-src 'self' https: data:; object-src 'none'; base-uri 'self'; form-action 'self' https:; frame-ancestors 'none'; upgrade-insecure-requests +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +strict-transport-security: max-age=31536000; includeSubDomains +nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} +cf-cache-status: DYNAMIC +server: cloudflare +cf-ray: 9eefa89d8a00f8b7-LAX + diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/gitea_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/gitea_d-bis_org_https_headers.txt new file mode 100644 index 00000000..04576e0c --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/gitea_d-bis_org_https_headers.txt @@ -0,0 +1,10 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:42 GMT +x-dns-prefetch-control: off +x-content-type-options: nosniff +x-permitted-cross-domain-policies: none +referrer-policy: strict-origin-when-cross-origin +x-frame-options: SAMEORIGIN + + +0.045925 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/keycloak_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/keycloak_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..15748129 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/keycloak_sankofa_nexus_https_headers.txt @@ -0,0 +1,13 @@ +HTTP/2 302 +date: Sun, 19 Apr 2026 23:23:37 GMT +location: https://keycloak.sankofa.nexus/admin/ +referrer-policy: no-referrer +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-content-type-options: nosniff +x-xss-protection: 0 +alt-svc: h3=":443"; ma=86400 +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests + + +0.086120 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/mifos_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/mifos_d-bis_org_https_headers.txt new file mode 100644 index 00000000..8ed8cf8a --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/mifos_d-bis_org_https_headers.txt @@ -0,0 +1,12 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:27 GMT +content-type: text/html +content-length: 2147 +last-modified: Wed, 07 May 2025 12:00:31 GMT +vary: Accept-Encoding +etag: "681b4b5f-863" +alt-svc: h3=":443"; ma=86400 +accept-ranges: bytes + + +0.036771 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/mim4u_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/mim4u_org_https_headers.txt new file mode 100644 index 00000000..e334ad4a --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/mim4u_org_https_headers.txt @@ -0,0 +1,18 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:37 GMT +content-type: text/html +content-length: 2710 +vary: Accept-Encoding +last-modified: Tue, 31 Mar 2026 05:21:47 GMT +etag: "69cb59eb-a96" +accept-ranges: bytes +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload +referrer-policy: strict-origin-when-cross-origin + + +0.044713 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/phoenix_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/phoenix_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..c790416d --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/phoenix_sankofa_nexus_https_headers.txt @@ -0,0 +1,14 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:38 GMT +content-type: application/json +content-length: 33 +vary: Accept-Encoding +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.064355 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/portal_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/portal_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..1658df5a --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/portal_sankofa_nexus_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:30 GMT +content-type: text/html; charset=utf-8 +content-length: 5259 +vary: Accept-Encoding +x-dns-prefetch-control: on +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-frame-options: SAMEORIGIN +x-content-type-options: nosniff +x-xss-protection: 0 +referrer-policy: strict-origin-when-cross-origin +permissions-policy: camera=(), microphone=(), geolocation=() +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https: +vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding +cache-control: s-maxage=31536000, stale-while-revalidate +etag: "oibim89srm41x" +alt-svc: h3=":443"; ma=86400 + + +0.040186 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra-2_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra-2_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra-2_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra-3_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra-3_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra-3_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-alltra_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-http-pub_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-http-pub_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-http-pub_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx-2_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx-2_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx-2_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx-3_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx-3_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx-3_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc-hybx_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc2_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc2_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc2_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_d-bis_org_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_d-bis_org_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_d-bis_org_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_defi-oracle_io_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_defi-oracle_io_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_defi-oracle_io_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_public-0138_defi-oracle_io_rpc_response.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_public-0138_defi-oracle_io_rpc_response.txt new file mode 100644 index 00000000..1283cc70 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/rpc_public-0138_defi-oracle_io_rpc_response.txt @@ -0,0 +1 @@ +{"jsonrpc":"2.0","id":1,"result":"0x8a"} \ No newline at end of file diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..bc928adf --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/sankofa_nexus_https_headers.txt @@ -0,0 +1,13 @@ +HTTP/2 502 +date: Sun, 19 Apr 2026 23:23:31 GMT +content-type: text/html +content-length: 122 +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.034055 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/secure_d-bis_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/secure_d-bis_org_https_headers.txt new file mode 100644 index 00000000..9d10a056 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/secure_d-bis_org_https_headers.txt @@ -0,0 +1,19 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:48 GMT +content-type: text/html +content-length: 801 +vary: Accept-Encoding +last-modified: Wed, 15 Apr 2026 18:06:44 GMT +etag: "69dfd3b4-321" +x-frame-options: SAMEORIGIN +x-content-type-options: nosniff +x-xss-protection: 0 +referrer-policy: no-referrer-when-downgrade +content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests +accept-ranges: bytes +alt-svc: h3=":443"; ma=86400 +strict-transport-security: max-age=63072000; includeSubDomains; preload +referrer-policy: strict-origin-when-cross-origin + + +0.078530 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/secure_mim4u_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/secure_mim4u_org_https_headers.txt new file mode 100644 index 00000000..0e591990 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/secure_mim4u_org_https_headers.txt @@ -0,0 +1,18 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:43 GMT +content-type: text/html +content-length: 2710 +vary: Accept-Encoding +last-modified: Tue, 31 Mar 2026 05:21:47 GMT +etag: "69cb59eb-a96" +accept-ranges: bytes +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload +referrer-policy: strict-origin-when-cross-origin + + +0.043258 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/studio_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/studio_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..39b09ac2 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/studio_sankofa_nexus_https_headers.txt @@ -0,0 +1,17 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:32 GMT +content-type: text/html; charset=utf-8 +content-length: 4067 +vary: Accept-Encoding +accept-ranges: bytes +last-modified: Sat, 28 Feb 2026 16:54:14 GMT +etag: "c7772edca86cad691e9159bf4b3d84cc" +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.045639 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/the-order_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/the-order_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..c11b5e77 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/the-order_sankofa_nexus_https_headers.txt @@ -0,0 +1,20 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:40 GMT +content-type: text/html; charset=utf-8 +content-length: 5259 +vary: Accept-Encoding +x-dns-prefetch-control: on +strict-transport-security: max-age=63072000; includeSubDomains; preload +x-frame-options: SAMEORIGIN +x-content-type-options: nosniff +x-xss-protection: 0 +referrer-policy: strict-origin-when-cross-origin +permissions-policy: camera=(), microphone=(), geolocation=() +content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:; connect-src 'self' https: +vary: RSC, Next-Router-State-Tree, Next-Router-Prefetch, Accept-Encoding +cache-control: s-maxage=31536000, stale-while-revalidate +etag: "oibim89srm41x" +alt-svc: h3=":443"; ma=86400 + + +0.035410 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/training_mim4u_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/training_mim4u_org_https_headers.txt new file mode 100644 index 00000000..335c127c --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/training_mim4u_org_https_headers.txt @@ -0,0 +1,18 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:45 GMT +content-type: text/html +content-length: 2710 +vary: Accept-Encoding +last-modified: Tue, 31 Mar 2026 05:21:47 GMT +etag: "69cb59eb-a96" +accept-ranges: bytes +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload +referrer-policy: strict-origin-when-cross-origin + + +0.036393 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/verification_report.md b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/verification_report.md new file mode 100644 index 00000000..f921da00 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/verification_report.md @@ -0,0 +1,445 @@ +# End-to-End Routing Verification Report + +**Date**: 2026-04-19T16:23:50-07:00 +**Public IP**: 76.53.10.36 +**Profile**: public +**Verifier**: intlc + +## All endpoints (44) + +| Domain | Type | URL | +|--------|------|-----| +| admin.sankofa.nexus | web | https://admin.sankofa.nexus | +| blockscout.defi-oracle.io | web | https://blockscout.defi-oracle.io | +| cacti-alltra.d-bis.org | web | https://cacti-alltra.d-bis.org | +| cacti-hybx.d-bis.org | web | https://cacti-hybx.d-bis.org | +| codespaces.d-bis.org | web | https://codespaces.d-bis.org | +| dapp.d-bis.org | web | https://dapp.d-bis.org | +| dash.sankofa.nexus | web | https://dash.sankofa.nexus | +| dbis-admin.d-bis.org | web | https://dbis-admin.d-bis.org | +| dbis-api-2.d-bis.org | api | https://dbis-api-2.d-bis.org | +| dbis-api.d-bis.org | api | https://dbis-api.d-bis.org | +| dev.d-bis.org | web | https://dev.d-bis.org | +| docs.d-bis.org | web | https://docs.d-bis.org | +| explorer.d-bis.org | web | https://explorer.d-bis.org | +| gitea.d-bis.org | web | https://gitea.d-bis.org | +| keycloak.sankofa.nexus | web | https://keycloak.sankofa.nexus | +| mifos.d-bis.org | web | https://mifos.d-bis.org | +| mim4u.org | web | https://mim4u.org | +| phoenix.sankofa.nexus | web | https://phoenix.sankofa.nexus | +| portal.sankofa.nexus | web | https://portal.sankofa.nexus | +| rpc-alltra-2.d-bis.org | rpc-http | https://rpc-alltra-2.d-bis.org | +| rpc-alltra-3.d-bis.org | rpc-http | https://rpc-alltra-3.d-bis.org | +| rpc-alltra.d-bis.org | rpc-http | https://rpc-alltra.d-bis.org | +| rpc-http-pub.d-bis.org | rpc-http | https://rpc-http-pub.d-bis.org | +| rpc-hybx-2.d-bis.org | rpc-http | https://rpc-hybx-2.d-bis.org | +| rpc-hybx-3.d-bis.org | rpc-http | https://rpc-hybx-3.d-bis.org | +| rpc-hybx.d-bis.org | rpc-http | https://rpc-hybx.d-bis.org | +| rpc-ws-pub.d-bis.org | rpc-ws | https://rpc-ws-pub.d-bis.org | +| rpc.d-bis.org | rpc-http | https://rpc.d-bis.org | +| rpc.defi-oracle.io | rpc-http | https://rpc.defi-oracle.io | +| rpc.public-0138.defi-oracle.io | rpc-http | https://rpc.public-0138.defi-oracle.io | +| rpc2.d-bis.org | rpc-http | https://rpc2.d-bis.org | +| sankofa.nexus | web | https://sankofa.nexus | +| secure.d-bis.org | web | https://secure.d-bis.org | +| secure.mim4u.org | web | https://secure.mim4u.org | +| studio.sankofa.nexus | web | https://studio.sankofa.nexus | +| the-order.sankofa.nexus | web | https://the-order.sankofa.nexus | +| training.mim4u.org | web | https://training.mim4u.org | +| ws.rpc.d-bis.org | rpc-ws | https://ws.rpc.d-bis.org | +| ws.rpc2.d-bis.org | rpc-ws | https://ws.rpc2.d-bis.org | +| wss.defi-oracle.io | rpc-ws | https://wss.defi-oracle.io | +| www.mim4u.org | web | https://www.mim4u.org | +| www.phoenix.sankofa.nexus | web | https://www.phoenix.sankofa.nexus | +| www.sankofa.nexus | web | https://www.sankofa.nexus | +| www.the-order.sankofa.nexus | web | https://www.the-order.sankofa.nexus | + +## Summary + +- **Total domains tested**: 44 +- **DNS tests passed**: 44 +- **HTTPS tests passed**: 28 +- **Failed tests**: 0 +- **Skipped / optional (not configured or unreachable)**: 0 +- **Average response time**: 0.1451544137931034s + +## Results overview + +| Domain | Type | DNS | SSL | HTTPS | RPC | +|--------|------|-----|-----|-------|-----| +| dbis-admin.d-bis.org | web | pass | pass | pass | - | +| rpc-alltra-3.d-bis.org | rpc-http | pass | pass | - | pass | +| mifos.d-bis.org | web | pass | pass | pass | - | +| admin.sankofa.nexus | web | pass | pass | pass | - | +| dash.sankofa.nexus | web | pass | pass | pass | - | +| rpc-hybx-2.d-bis.org | rpc-http | pass | pass | - | pass | +| portal.sankofa.nexus | web | pass | pass | pass | - | +| cacti-hybx.d-bis.org | web | pass | pass | pass | - | +| sankofa.nexus | web | pass | pass | warn | - | +| rpc-alltra.d-bis.org | rpc-http | pass | pass | - | pass | +| rpc-http-pub.d-bis.org | rpc-http | pass | pass | - | pass | +| rpc.public-0138.defi-oracle.io | rpc-http | pass | pass | - | pass | +| studio.sankofa.nexus | web | pass | pass | pass | - | +| dbis-api.d-bis.org | api | pass | pass | pass | - | +| docs.d-bis.org | web | pass | pass | pass | - | +| rpc-hybx-3.d-bis.org | rpc-http | pass | pass | - | pass | +| rpc.d-bis.org | rpc-http | pass | pass | - | pass | +| dapp.d-bis.org | web | pass | pass | pass | - | +| www.sankofa.nexus | web | pass | pass | pass | - | +| www.the-order.sankofa.nexus | web | pass | pass | pass | - | +| keycloak.sankofa.nexus | web | pass | pass | pass | - | +| mim4u.org | web | pass | pass | pass | - | +| ws.rpc.d-bis.org | rpc-ws | pass | pass | - | - | +| phoenix.sankofa.nexus | web | pass | pass | pass | - | +| www.mim4u.org | web | pass | pass | pass | - | +| wss.defi-oracle.io | rpc-ws | pass | pass | - | - | +| the-order.sankofa.nexus | web | pass | pass | pass | - | +| rpc2.d-bis.org | rpc-http | pass | pass | - | pass | +| rpc-ws-pub.d-bis.org | rpc-ws | pass | pass | - | - | +| dev.d-bis.org | web | pass | pass | pass | - | +| rpc-alltra-2.d-bis.org | rpc-http | pass | pass | - | pass | +| www.phoenix.sankofa.nexus | web | pass | pass | pass | - | +| gitea.d-bis.org | web | pass | pass | pass | - | +| secure.mim4u.org | web | pass | pass | pass | - | +| explorer.d-bis.org | web | pass | pass | pass | - | +| training.mim4u.org | web | pass | pass | pass | - | +| blockscout.defi-oracle.io | web | pass | pass | pass | - | +| dbis-api-2.d-bis.org | api | pass | pass | pass | - | +| secure.d-bis.org | web | pass | pass | pass | - | +| rpc-hybx.d-bis.org | rpc-http | pass | pass | - | pass | +| codespaces.d-bis.org | web | pass | pass | pass | - | +| rpc.defi-oracle.io | rpc-http | pass | pass | - | pass | +| ws.rpc2.d-bis.org | rpc-ws | pass | pass | - | - | +| cacti-alltra.d-bis.org | web | pass | pass | pass | - | + +## Test Results by Domain (detail) + + +### dbis-admin.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc-alltra-3.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### mifos.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### admin.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### dash.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc-hybx-2.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### portal.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### cacti-hybx.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: warn +- Details: See `all_e2e_results.json` + +### rpc-alltra.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### rpc-http-pub.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### rpc.public-0138.defi-oracle.io +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### studio.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### dbis-api.d-bis.org +- Type: api +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### docs.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc-hybx-3.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### rpc.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### dapp.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### www.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### www.the-order.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### keycloak.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### mim4u.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### ws.rpc.d-bis.org +- Type: rpc-ws +- DNS: pass +- SSL: pass +- Details: See `all_e2e_results.json` + +### phoenix.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### www.mim4u.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### wss.defi-oracle.io +- Type: rpc-ws +- DNS: pass +- SSL: pass +- Details: See `all_e2e_results.json` + +### the-order.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc2.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### rpc-ws-pub.d-bis.org +- Type: rpc-ws +- DNS: pass +- SSL: pass +- Details: See `all_e2e_results.json` + +### dev.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc-alltra-2.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### www.phoenix.sankofa.nexus +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### gitea.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### secure.mim4u.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### explorer.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Blockscout API: pass +- Details: See `all_e2e_results.json` + +### training.mim4u.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### blockscout.defi-oracle.io +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Blockscout API: pass +- Details: See `all_e2e_results.json` + +### dbis-api-2.d-bis.org +- Type: api +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### secure.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc-hybx.d-bis.org +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### codespaces.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +### rpc.defi-oracle.io +- Type: rpc-http +- DNS: pass +- SSL: pass +- RPC: pass +- Details: See `all_e2e_results.json` + +### ws.rpc2.d-bis.org +- Type: rpc-ws +- DNS: pass +- SSL: pass +- Details: See `all_e2e_results.json` + +### cacti-alltra.d-bis.org +- Type: web +- DNS: pass +- SSL: pass +- HTTPS: pass +- Details: See `all_e2e_results.json` + +## Files Generated + +- `all_e2e_results.json` - Complete E2E test results +- `*_https_headers.txt` - HTTP response headers per domain +- `*_rpc_response.txt` - RPC response per domain +- `verification_report.md` - This report + +## Notes + +- **Optional domains:** Domains in `E2E_OPTIONAL_WHEN_FAIL` (default: many d-bis.org/sankofa/mim4u/rpc) have any fail treated as skip so the run passes when off-LAN or services unreachable. Set `E2E_OPTIONAL_WHEN_FAIL=` (empty) for strict mode. +- WebSocket tests require `wscat` tool: `npm install -g wscat` +- OpenSSL fetch uses `timeout` (`E2E_OPENSSL_TIMEOUT` / `E2E_OPENSSL_X509_TIMEOUT`, defaults 15s / 5s) so `openssl s_client` cannot hang indefinitely +- Internal connectivity tests require access to NPMplus container +- Explorer (explorer.d-bis.org): optional Blockscout API check; use `SKIP_BLOCKSCOUT_API=1` to skip when backend is unreachable (e.g. off-LAN). Fix runbook: docs/03-deployment/BLOCKSCOUT_FIX_RUNBOOK.md + +## Next Steps + +1. Review test results for each domain +2. Investigate any failed tests +3. Test WebSocket connections for RPC WS domains (if wscat available) +4. Test internal connectivity from NPMplus container +5. Update source-of-truth JSON after verification diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_mim4u_org_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_mim4u_org_https_headers.txt new file mode 100644 index 00000000..ff13d019 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_mim4u_org_https_headers.txt @@ -0,0 +1,18 @@ +HTTP/2 200 +date: Sun, 19 Apr 2026 23:23:39 GMT +content-type: text/html +content-length: 2710 +vary: Accept-Encoding +last-modified: Tue, 31 Mar 2026 05:21:47 GMT +etag: "69cb59eb-a96" +accept-ranges: bytes +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload +referrer-policy: strict-origin-when-cross-origin + + +0.037490 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_phoenix_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_phoenix_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..5e1bbd32 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_phoenix_sankofa_nexus_https_headers.txt @@ -0,0 +1,14 @@ +HTTP/2 301 +date: Sun, 19 Apr 2026 23:23:42 GMT +content-type: text/html +content-length: 134 +location: https://phoenix.sankofa.nexus/health +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.049783 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..8a851e54 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_sankofa_nexus_https_headers.txt @@ -0,0 +1,14 @@ +HTTP/2 301 +date: Sun, 19 Apr 2026 23:23:36 GMT +content-type: text/html +content-length: 134 +location: https://sankofa.nexus/ +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.079762 diff --git a/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_the-order_sankofa_nexus_https_headers.txt b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_the-order_sankofa_nexus_https_headers.txt new file mode 100644 index 00000000..a996a4d1 --- /dev/null +++ b/docs/04-configuration/verification-evidence/e2e-verification-20260419_162326/www_the-order_sankofa_nexus_https_headers.txt @@ -0,0 +1,14 @@ +HTTP/2 301 +date: Sun, 19 Apr 2026 23:23:36 GMT +content-type: text/html +content-length: 134 +location: https://the-order.sankofa.nexus/ +alt-svc: h3=":443"; ma=86400 +x-xss-protection: 0 +x-content-type-options: nosniff +x-frame-options: SAMEORIGIN +content-security-policy: upgrade-insecure-requests +strict-transport-security: max-age=63072000; includeSubDomains; preload + + +0.066193 diff --git a/docs/06-besu/ALL_NEXT_STEPS_COMPLETE_SUMMARY.md b/docs/06-besu/ALL_NEXT_STEPS_COMPLETE_SUMMARY.md index 34fb8509..1149c7c7 100644 --- a/docs/06-besu/ALL_NEXT_STEPS_COMPLETE_SUMMARY.md +++ b/docs/06-besu/ALL_NEXT_STEPS_COMPLETE_SUMMARY.md @@ -124,7 +124,7 @@ cd /path/to/chains git checkout -b add-dbis-chain-138 cp /home/intlc/projects/proxmox/token-lists/chainlists/chain-138.json _data/chains/eip155-138.json git add _data/chains/eip155-138.json -git commit -m "Add DBIS Chain (ChainID 138)" +git commit -m "Add DeFi Oracle Meta Mainnet (ChainID 138)" git push origin add-dbis-chain-138 # Then create PR on GitHub ``` diff --git a/docs/06-besu/CHAINLIST_PR_TEMPLATE.md b/docs/06-besu/CHAINLIST_PR_TEMPLATE.md index 1b2e9be2..9b272737 100644 --- a/docs/06-besu/CHAINLIST_PR_TEMPLATE.md +++ b/docs/06-besu/CHAINLIST_PR_TEMPLATE.md @@ -6,18 +6,18 @@ --- -**Title**: `Add DBIS Chain (ChainID 138)` +**Title**: `Add DeFi Oracle Meta Mainnet (ChainID 138)` **Description**: ```markdown ## Summary -Adds DBIS Chain (ChainID 138) to Chainlist for automatic network discovery in MetaMask and other wallets. +Adds DeFi Oracle Meta Mainnet (ChainID 138) to Chainlist for automatic network discovery in MetaMask and other wallets. ## Chain Details -- **Name**: DBIS Chain +- **Name**: DeFi Oracle Meta Mainnet - **ChainID**: 138 - **Network ID**: 138 - **Native Currency**: ETH @@ -80,7 +80,7 @@ Adds DBIS Chain (ChainID 138) to Chainlist for automatic network discovery in Me 5. **Commit Changes**: ```bash git add _data/chains/eip155-138.json - git commit -m "Add DBIS Chain (ChainID 138)" + git commit -m "Add DeFi Oracle Meta Mainnet (ChainID 138)" ``` 6. **Push to Fork**: diff --git a/docs/06-besu/CHAINLIST_SUBMISSION_READY.md b/docs/06-besu/CHAINLIST_SUBMISSION_READY.md index c73964d1..82814630 100644 --- a/docs/06-besu/CHAINLIST_SUBMISSION_READY.md +++ b/docs/06-besu/CHAINLIST_SUBMISSION_READY.md @@ -22,7 +22,7 @@ ## ✅ Validation Results ### Required Fields -- ✅ `name`: "DBIS Chain" +- ✅ `name`: "DeFi Oracle Meta Mainnet" - ✅ `shortName`: "dbis" (matches pattern `^[A-Za-z0-9-_]{1,64}$`) - ✅ `chain`: "DBIS" - ✅ `chainId`: 138 @@ -50,7 +50,7 @@ ```json { - "name": "DBIS Chain", + "name": "DeFi Oracle Meta Mainnet", "chain": "DBIS", "rpc": [ "https://rpc-http-pub.d-bis.org", @@ -113,18 +113,18 @@ node tools/validate.js ```bash git checkout -b add-dbis-chain-138 git add _data/chains/eip155-138.json -git commit -m "Add DBIS Chain (ChainID 138)" +git commit -m "Add DeFi Oracle Meta Mainnet (ChainID 138)" git push origin add-dbis-chain-138 ``` ### 5. Create Pull Request -- **Title**: `Add DBIS Chain (ChainID 138)` +- **Title**: `Add DeFi Oracle Meta Mainnet (ChainID 138)` - **Description**: ``` - Adds DBIS Chain (ChainID 138) to Chainlist. + Adds DeFi Oracle Meta Mainnet (ChainID 138) to Chainlist. - - Chain: DBIS Chain + - Chain: DeFi Oracle Meta Mainnet - ChainID: 138 - RPC: https://rpc-http-pub.d-bis.org - Explorer: https://explorer.d-bis.org (Blockscout) diff --git a/docs/06-besu/FINAL_COMPLETION_STATUS.md b/docs/06-besu/FINAL_COMPLETION_STATUS.md index 48ffe292..a7bea468 100644 --- a/docs/06-besu/FINAL_COMPLETION_STATUS.md +++ b/docs/06-besu/FINAL_COMPLETION_STATUS.md @@ -85,7 +85,7 @@ 2. Clone your fork 3. `git checkout -b add-dbis-chain-138` 4. `cp token-lists/chainlists/chain-138.json chains/_data/chains/eip155-138.json` -5. `git add _data/chains/eip155-138.json && git commit -m "Add DBIS Chain (ChainID 138)"` +5. `git add _data/chains/eip155-138.json && git commit -m "Add DeFi Oracle Meta Mainnet (ChainID 138)"` 6. `git push origin add-dbis-chain-138` 7. Create PR using `CHAINLIST_PR_TEMPLATE.md` diff --git a/docs/09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md b/docs/09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md index 2e5454c9..6795a2ad 100644 --- a/docs/09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md +++ b/docs/09-troubleshooting/METAMASK_TROUBLESHOOTING_GUIDE.md @@ -25,11 +25,11 @@ 1. **Remove and Re-add Network with Correct RPC URL** - MetaMask → Settings → Networks - - Find "Defi Oracle Meta Mainnet" or "SMOM-DBIS-138" + - Find "DeFi Oracle Meta Mainnet" or "SMOM-DBIS-138" - Click "Delete" or "Remove" - Click "Add Network" → "Add a network manually" - Enter these exact values: - - **Network Name**: `Defi Oracle Meta Mainnet` + - **Network Name**: `DeFi Oracle Meta Mainnet` - **RPC URL**: `https://rpc-http-pub.d-bis.org` - **Chain ID**: `138` (must be decimal, not hex) - **Currency Symbol**: `ETH` @@ -477,7 +477,7 @@ curl -X POST https://rpc-http-pub.d-bis.org \ Run through this checklist when troubleshooting: -- [ ] Network is "Defi Oracle Meta Mainnet" or "SMOM-DBIS-138" (ChainID 138) +- [ ] Network is "DeFi Oracle Meta Mainnet" or "SMOM-DBIS-138" (ChainID 138) - [ ] RPC URL is `https://rpc-http-pub.d-bis.org` (public endpoint, no auth) - [ ] Chain ID is `138` (decimal, not hex) - [ ] RPC endpoint does NOT require JWT authentication diff --git a/docs/11-references/CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md b/docs/11-references/CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md index ebed8f99..5f8bca0c 100644 --- a/docs/11-references/CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md +++ b/docs/11-references/CHAINS_AND_PROTOCOLS_BRIDGE_INTEGRATION.md @@ -116,7 +116,7 @@ To move Gnosis (100), Celo (42220), and Wemix (1111) from **Config ready** to ** - **Entry:** `pr-workspace/chains/_data/chains/eip155-138.json` - **Public URL:** https://chainlist.org/chain/138 -- **Chain name:** Defi Oracle Meta Mainnet +- **Chain name:** DeFi Oracle Meta Mainnet - **RPCs:** d-bis.org, defi-oracle.io, thirdweb - **Explorer:** https://explorer.d-bis.org (Blockscout) @@ -128,7 +128,7 @@ Ledger Live and other clients can discover ChainID 138 RPCs via Chainlist. **Status:** ✅ **Accepted and supported** -- **Chainlist:** Listed as "Defi Oracle Meta Mainnet" (Chain ID 138) +- **Chainlist:** Listed as "DeFi Oracle Meta Mainnet" (Chain ID 138) - **Bridge:** Supports bridging to and from Defi Oracle Meta - **RPC:** `https://138.rpc.thirdweb.com`, `https://defi-oracle-meta.rpc.thirdweb.com` - **Explorer:** https://blockscout.defi-oracle.io diff --git a/docs/11-references/CONTRACT_NEXT_STEPS_LIST.md b/docs/11-references/CONTRACT_NEXT_STEPS_LIST.md index e5c6fbc1..3a5690da 100644 --- a/docs/11-references/CONTRACT_NEXT_STEPS_LIST.md +++ b/docs/11-references/CONTRACT_NEXT_STEPS_LIST.md @@ -9,7 +9,7 @@ | # | Task | Type | Status | |---|------|------|--------| | 1 | **Chain 138 next steps (all in one)** | Operator | `./scripts/deployment/run-all-next-steps-chain138.sh` — preflight → mirror+pool → register c* as GRU → verify; use `--skip-mirror` if mirror exists. | -| 2 | On-chain check (59 addresses; run check-contracts-on-chain-138.sh) | Operator | Run `./scripts/verify/check-contracts-on-chain-138.sh` from host with RPC | +| 2 | On-chain check (61 addresses; run check-contracts-on-chain-138.sh) | Operator | Run `./scripts/verify/check-contracts-on-chain-138.sh` from host with RPC | | 3 | Blockscout source verification | Operator | Run from host that can reach Blockscout | | 4 | Reconcile .env | Repo | Done 2026-02-11 | | 5 | Multicall vs Oracle at 0x99b3... | Operator | Confirm on explorer; document in CONTRACT_ADDRESSES_REFERENCE | @@ -33,7 +33,7 @@ - [x] Address inconsistencies resolved (CONTRACT_INVENTORY_AND_VERIFICATION §7) - [x] Verification script and proxy: `scripts/verify/run-contract-verification-with-proxy.sh`, etc. - [x] Canonical source of truth: [CONTRACT_ADDRESSES_REFERENCE § Canonical](CONTRACT_ADDRESSES_REFERENCE.md#-canonical-source-of-truth-chain-138) -- [x] On-chain check script: `scripts/verify/check-contracts-on-chain-138.sh` (36 addresses: canonical + channels/mirror/trustless + CREATE2) +- [x] On-chain check script: `scripts/verify/check-contracts-on-chain-138.sh` (61 addresses per script header; canonical + CCIP/PMM/vault/oracle path + CompliantFiatTokens) - [x] Deployer balance & gas check: `smom-dbis-138/scripts/deployment/check-balances-gas-and-deploy.sh` - [x] Deployer tokens (all networks): `smom-dbis-138/scripts/deployment/list-deployer-tokens-all-networks.sh` - [x] Phased core (138) deployed 2026-02-11: UniversalAssetRegistry, GovernanceController, UniversalCCIPBridge, BridgeOrchestrator (see CONTRACT_ADDRESSES_REFERENCE) diff --git a/docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md b/docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md index 41c6884b..e83fc80c 100644 --- a/docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md +++ b/docs/11-references/DEFI_ORACLE_META_MAINNET_PROJECT_DESCRIPTION.md @@ -1,4 +1,4 @@ -# Defi Oracle Meta Mainnet (Chain ID 138) — Project Description +# DeFi Oracle Meta Mainnet (Chain ID 138) — Project Description **Last Updated:** 2026-02-12 **Purpose:** Reusable project descriptions for listings, Ledger, Chainlist, CoinGecko, outreach, and documentation. @@ -10,10 +10,10 @@ **For:** Forms, badges, meta tags, character-limited fields. **Option A (technical):** -Defi Oracle Meta Mainnet (Chain ID 138) is an EVM-compatible blockchain built on Hyperledger Besu with QBFT consensus, offering ~2s block time, native oracle integration, and CCIP cross-chain bridges. +DeFi Oracle Meta Mainnet (Chain ID 138) is an EVM-compatible blockchain built on Hyperledger Besu with QBFT consensus, offering ~2s block time, native oracle integration, and CCIP cross-chain bridges. **Option B (use-case):** -Defi Oracle Meta Mainnet is an enterprise-grade EVM chain (Chain ID 138) with compliant stablecoins, cross-chain bridges (CCIP), and native oracle support for institutional DeFi. +DeFi Oracle Meta Mainnet is an enterprise-grade EVM chain (Chain ID 138) with compliant stablecoins, cross-chain bridges (CCIP), and native oracle support for institutional DeFi. **Option C (minimal):** Production EVM chain (Chain ID 138) on Hyperledger Besu with QBFT, CCIP bridges, and Blockscout explorer. @@ -52,7 +52,7 @@ Use for forms, tables, or “About” sections: | Item | Value | |------|--------| -| **Name** | Defi Oracle Meta Mainnet | +| **Name** | DeFi Oracle Meta Mainnet | | **Chain ID** | 138 (0x8a) | | **Network ID** | 1 | | **Consensus** | QBFT (Hyperledger Besu) | diff --git a/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md b/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md index 43dd84df..1b0b336f 100644 --- a/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md +++ b/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md @@ -1,19 +1,21 @@ # Deployed Tokens, Bridges, DODO/Uniswap LPs — Status & Complete Routing Map -**Last Updated:** 2026-03-26 +**Last Updated:** 2026-04-21 **Purpose:** Single reference for (1) deployed tokens/coins and bridges per destination network, (2) DODO and Uniswap LPs with addresses, and (3) a complete mapping of all possible routes for routing **to** and **from** each chain. +> Audit note (2026-04-19): this doc was synced against the current machine-readable deployment graph and generated mesh reports. When this doc disagrees with older narrative runbooks, prefer `cross-chain-pmm-lps/config/deployment-status.json`, `reports/status/cw-mesh-deployment-matrix-latest.json`, and `reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json`. See `reports/status/MULTI_NETWORK_DEPLOYMENT_AUDIT_20260419.md`. + --- ## 1. Executive summary | Area | Status | Notes | |------|--------|-------| -| **Chain 138 tokens** | ✅ Live | cUSDT, cUSDC, WETH, WETH10, LINK; 10 more compliant tokens deployable (cEURC, cEURT, cGBP*, cAUD*, cJPY*, cCHF*, cCAD*, cAUSDT). | +| **Chain 138 tokens** | ✅ Live | Chain 138 inventory is broader than older summaries implied: cUSDT, cUSDC, WETH, WETH10, LINK, the 10 compliant fiat additions, cXAUC/cXAUT, and `cAUSDT` are all evidenced in current repo-backed inventories. | | **Chain 138 DODO PMM** | ✅ Live | DODOPMMIntegration + 6 public pools are live on Chain 138: stable pairs plus the three public XAU pools. Official mirror `USDT/USDC` pools were corrected and funded locally. DODOPMMProvider remains deployed; routing cUSDT↔cUSDC and the live local direct/ XAU paths are active. | -| **Chain 138 → destination bridges** | ✅ CCIP + Alltra | CCIP WETH9/WETH10 to Ethereum, BSC, Polygon, Arbitrum, Optimism, Avalanche, Cronos, **Celo + Gnosis (2026-03-04)**. Gnosis: 0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82 (WETH9), 0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44 (WETH10). AlltraAdapter 138↔651940. Wemix pending (need 0.4 WEMIX). | -| **Destination tokens (cW\*)** | ⚠️ Design / partial | cWUSDT, cWUSDC deployed on 9 chains (1, 25, 56, 137, 100, 43114, 8453, 42161, 10); cWEURC and others partial. Addresses in .env; **deployment-status.json** empty (design-only). | -| **Destination DODO/Uniswap LPs** | ⚠️ Partial graph / pools not live | cross-chain-pmm-lps **pool-matrix** defines cW*/USDC, cW*/USDT per chain; **deployment-status.json** now records deployed cW* token addresses and bridge availability, but PMM pool addresses are still empty. Public-chain edge pools and bot not live. | +| **Chain 138 → destination bridges** | ✅ CCIP + Alltra with one unfunded lane | CCIP WETH9/WETH10 routing is evidenced to Ethereum, BSC, Polygon, Arbitrum, Optimism, Avalanche, Cronos, Gnosis, and Celo; AlltraAdapter 138↔651940 is live. Wemix contracts are deployed and wired, but still unfunded with LINK. | +| **Destination tokens (cW\*)** | ✅ Active on 10 public chains, scaffold-only on Wemix | `deployment-status.json` records active public-chain `cW*` inventory on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`; `1111` currently remains `planned_gas_scaffold` with `bridgeAvailable=false`, not a promoted live settlement surface. | +| **Destination DODO/Uniswap LPs** | ⚠️ Mixed by venue and confidence | Public-chain deployment evidence is no longer design-only: `deployment-status.json` records PMM pool inventories on the active public chains, and generated Uniswap V2 reports confirm a complete wave-1 wrapped-mesh rollout on `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`. Explorer publication is still blocked in some cases. | | **Uniswap on 138** | ❌ | No Uniswap V2/V3 factory on Chain 138. | | **Uniswap on ALL Mainnet (651940)** | ⚠️ Env placeholders | HYDX DEX present; Uniswap V2/V3 and DODO env vars in dex-factories; no pool addresses in repo. | @@ -30,7 +32,7 @@ | LINK | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | 18 | ✅ | | cUSDT | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | 6 | ✅ | | cUSDC | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 6 | ✅ | -| cEURC, cEURT, cGBPT, cGBPC, cAUDT, cAUDC, cJPYT, cJPYC, cCHFT, cCHFC, cCADT, cCADC, cAUSDT | Script / .env | 6 | ⏳ Deployable via DeployCompliantFiatTokens | +| cEURC, cEURT, cGBPT, cGBPC, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT, cAUSDT | Inventory-backed addresses | 6 | ✅ Present in current repo-backed inventories | **Source:** [DEPLOYED_COINS_TOKENS_AND_NETWORKS.md](DEPLOYED_COINS_TOKENS_AND_NETWORKS.md), [CHAIN138_TOKEN_ADDRESSES.md](CHAIN138_TOKEN_ADDRESSES.md). @@ -39,17 +41,17 @@ | Chain ID | Name | Tokens / bridges | |----------|------|-------------------| | **1** | Ethereum Mainnet | WETH, USDT, USDC, DAI; CCIP WETH9/WETH10 bridges; relay router. cW* deployable. | -| **25** | Cronos | USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW (D-WIN W); cW* deployable. | -| **56** | BSC | cWUSDT, cWUSDC (and other cW* per CW_TOKENS_AND_NETWORKS). | -| **100** | Gnosis | cW* deployable. | -| **137** | Polygon | cW* deployable. | -| **10** | Optimism | cW* deployable. | -| **42161** | Arbitrum One | cW* deployable. | -| **8453** | Base | cW* deployable. | -| **43114** | Avalanche C-Chain | cW* deployable. | -| **42220** | Celo | In pool-matrix; cW* not in deploy script chain list. | -| **1111** | Wemix | In pool-matrix; cW* not in deploy script chain list. | -| **651940** | ALL Mainnet (Alltra) | AUSDT, USDC, WETH, WALL; AlltraAdapter 138↔651940. | +| **25** | Cronos | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **56** | BSC | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **100** | Gnosis | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **137** | Polygon | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **10** | Optimism | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **42161** | Arbitrum One | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **8453** | Base | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **43114** | Avalanche C-Chain | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **42220** | Celo | Active `cW*` inventory plus wave-1 wrapped-mesh completion evidence. | +| **1111** | Wemix | Bridge contracts deployed and wired, but the network remains `planned_gas_scaffold`; proof transfer and promotion are still pending. | +| **651940** | ALL Mainnet (Alltra) | AUSDT, USDC, WETH, WALL; AlltraAdapter 138↔651940. Canonical state is currently `bridge_live_swap_inventory_pending`. | **Source:** [DEPLOYED_COINS_TOKENS_AND_NETWORKS.md](DEPLOYED_COINS_TOKENS_AND_NETWORKS.md), [CW_TOKENS_AND_NETWORKS.md](CW_TOKENS_AND_NETWORKS.md), [cross-chain-pmm-lps/config/chains.json](../../cross-chain-pmm-lps/config/chains.json). @@ -70,7 +72,7 @@ | Cronos (25) | CCIP | Same | ✅ | | | ALL Mainnet (651940) | AlltraAdapter | AlltraAdapter `0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc` | ✅ | 138 ↔ 651940. | | Celo (42220) | CCIP | CCIPWETH9Bridge `0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04`, CCIPWETH10Bridge `0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08` (Celo); 138↔Celo destinations configured 2026-03-04 | ✅ | complete-config-ready-chains.sh Celo→138 OK. | -| Wemix (1111) | CCIP | Bridge addresses in .env when deployed; deployer needs 0.4 WEMIX | ⏳ | Run deploy-bridges-config-ready-chains.sh wemix after funding. | +| Wemix (1111) | CCIP | Deployed and wired but still scaffold-only | ⏳ | Treat as non-live until a bridge proof transfer succeeds and the lane is promoted out of `planned_gas_scaffold`. Full bidirectional activation still needs outbound fee coverage. | ### 3.2 Destination → Chain 138 (inbound) @@ -120,7 +122,7 @@ **Designed (pool-matrix.json):** Per chain, first-tier pools: cWUSDT/USDC or cWUSDT/USDT, cWUSDC/USDC or cWUSDC/USDT, plus cWAUSDT, cWEURC, cWEURT, cWUSDW vs hub stable. Optional: cW*/USDT, cW*/DAI, cW*/BUSD, cW*/mUSD. -**Deployment status:** [cross-chain-pmm-lps/config/deployment-status.json](../../cross-chain-pmm-lps/config/deployment-status.json) — **empty** (no cW* addresses, no PMM pool addresses). Design and simulation only; edge pools and bot **not deployed**. +**Deployment status:** [cross-chain-pmm-lps/config/deployment-status.json](../../cross-chain-pmm-lps/config/deployment-status.json) now contains explicit `cW*` token inventories, bridge availability, and PMM pool inventories across the active public-chain set. For Uniswap V2-compatible rollout state, cross-check [reports/status/cw-mesh-deployment-matrix-latest.json](../../reports/status/cw-mesh-deployment-matrix-latest.json) and [reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json](../../reports/extraction/promod-uniswap-v2-phase2-wave1-completion-status-latest.json). Do not treat the public-chain surface as design-only. **Source:** [cross-chain-pmm-lps/config/pool-matrix.json](../../cross-chain-pmm-lps/config/pool-matrix.json), [cross-chain-pmm-lps/config/token-map.json](../../cross-chain-pmm-lps/config/token-map.json). @@ -160,7 +162,7 @@ | From | To | Route | |------|-----|--------| -| cW* (e.g. cWUSDT) | USDC / USDT (same chain) | Single-sided cW*/hub pool (pool-matrix); **not deployed**. | +| cW* (e.g. cWUSDT) | USDC / USDT (same chain) | Live on some chains and still incomplete on others; use the mesh matrix and wave-1 completion report for the current per-chain truth. | | USDC / USDT | cW* | Same pool (reverse). | | cW* chain A | cW* chain B | Bridge cW* or bridge underlying + mint cW* on dest; depends on bridge and cW* deployment. | @@ -182,9 +184,10 @@ | 138 | DeFi Oracle | cUSDT, cUSDC, cEURT, cXAUC, cXAUT, WETH, WETH10, LINK, official mirrors | — | — | DODO: 6 public pools live + 3 private XAU pools live | | 1 | Ethereum | WETH, USDT, USDC, DAI | ✅ CCIP WETH9/10 | ✅ CCIP relay | Native DEX; cW* design | | 651940 | ALL Mainnet | AUSDT, USDC, WETH, WALL | ✅ AlltraAdapter | ✅ AlltraAdapter | Env placeholders; HYDX | -| 25 | Cronos | USDW, EURW, …; cW* | ✅ CCIP | ✅ CCIP | cW* design only | -| 56, 100, 137, 10, 42161, 8453, 43114 | BSC, Gnosis, Polygon, Optimism, Arbitrum, Base, Avalanche | cW* (partial) | ✅ CCIP | ✅ CCIP | cW* pool-matrix; not deployed | -| 42220, 1111 | Celo, Wemix | — | Config | Config | pool-matrix only | +| 25 | Cronos | cW* active | ✅ CCIP | ✅ CCIP | Wave-1 wrapped-mesh complete; explorer publication still partial | +| 56, 100, 137, 10, 42161, 8453, 43114 | BSC, Gnosis, Polygon, Optimism, Arbitrum, Base, Avalanche | cW* active | ✅ CCIP | ✅ CCIP | Active cW* inventory plus generated wrapped-mesh rollout evidence | +| 42220 | Celo | cW* active | ✅ CCIP | ✅ CCIP | Active cW* inventory plus generated wrapped-mesh rollout evidence | +| 1111 | Wemix | planned_gas_scaffold | ⏳ | ⏳ | Contracts exist and destinations are wired, but the canonical deployment graph still treats Wemix as scaffold-only until proof transfer/promotion is complete | ### 6.2 Route matrix (to and from) @@ -196,8 +199,8 @@ | **138 ↔ 651940** | AlltraAdapter | ✅ | | **1, 56, … → 138** | WETH via CCIP receiver on 138 | ✅ | | **138 → dest** | cUSDT/cUSDC (swap to WETH then bridge) | ✅ (swap leg); bridge per above | -| **Dest cW* → USDC/USDT** | cW* edge pool (single-sided) | ❌ Pools not deployed | -| **Dest USDC/USDT → cW*** | Same pool | ❌ | +| **Dest cW* → USDC/USDT** | cW* edge pool (single-sided) | ⚠️ Live on some chains; check per-chain matrix | +| **Dest USDC/USDT → cW*** | Same pool | ⚠️ Live on some chains; check per-chain matrix | --- diff --git a/docs/11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md b/docs/11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md index 2ce3c0d8..2463df4f 100644 --- a/docs/11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md +++ b/docs/11-references/LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE.md @@ -1,7 +1,7 @@ # Ledger Blockchain Integration — Complete Reference (All Steps) **Last Updated:** 2026-02-13 -**Purpose:** Full 8-step Ledger Wallet blockchain integration with gaps filled. Use for Defi Oracle Meta Mainnet (Chain ID 138) or any EVM chain. +**Purpose:** Full 8-step Ledger Wallet blockchain integration with gaps filled. Use for DeFi Oracle Meta Mainnet (Chain ID 138) or any EVM chain. **Public code review for Ledger team:** [**bis-innovations/LedgerLive**](https://github.com/bis-innovations/LedgerLive) — use this repo for all Chain 138 integration code, specs, and patches intended for Ledger Live team review. @@ -35,7 +35,7 @@ defi_oracle_meta_mainnet: { type: "CryptoCurrency", id: "defi_oracle_meta_mainnet", coinType: 60, // SLIP-44 Ethereum - name: "Defi Oracle Meta Mainnet", + name: "DeFi Oracle Meta Mainnet", managerAppName: "Ethereum", ticker: "ETH", countervalueTicker: "ETH", @@ -215,7 +215,7 @@ Example PRs: [Ethereum adapter](https://github.com/LedgerHQ/ledger-live/pull/318 | Item | Value | |------|--------| -| Chain name | Defi Oracle Meta Mainnet | +| Chain name | DeFi Oracle Meta Mainnet | | Chain ID | 138 (0x8a) | | SLIP-44 | 60 (Ethereum) | | Derivation | 44'/60'/0'/0/0 | diff --git a/docs/11-references/LINK_TOKEN_ADDRESSES_REFERENCE.md b/docs/11-references/LINK_TOKEN_ADDRESSES_REFERENCE.md index 4e8f08ae..0a3cdb73 100644 --- a/docs/11-references/LINK_TOKEN_ADDRESSES_REFERENCE.md +++ b/docs/11-references/LINK_TOKEN_ADDRESSES_REFERENCE.md @@ -4,7 +4,7 @@ --- -## Chain 138 (Defi Oracle Meta Mainnet) +## Chain 138 (DeFi Oracle Meta Mainnet) | Variable | Address | Notes | |----------|---------|------| diff --git a/docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md b/docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md index 6ce01b0b..bbe8467c 100644 --- a/docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md +++ b/docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md @@ -1,221 +1,386 @@ -# Liquidity Pools Master Map — ChainID 138 & ALL Mainnet (Alltra) +# Liquidity Pools Master Map — Chain 138, ALL Mainnet, and Public Networks -**Last Updated:** 2026-03-26 -**Document Version:** 1.2 -**Status:** Reference documentation (live Chain 138 pool state reflected) - ---- +**Last Updated:** 2026-04-22T04:35:32+00:00 +**Document Version:** 2.0 +**Status:** Generated from deployment-status plus live reserve reads where supported ## Overview -This document maps all **private**, **public**, **reserve**, and **stabilization** liquidity pools for tokens on: +This document is generated from the machine-readable deployment graph in `cross-chain-pmm-lps/config/deployment-status.json`, plus live reserve reads from chain RPCs. -| Chain | ChainID | Network Name | RPC | Explorer | -|-------|---------|--------------|-----|----------| -| **Chain 138** | 138 | SMOM-DBIS-138 (DeFi Oracle) | `https://rpc-core.d-bis.org` | https://explorer.d-bis.org | -| **ALL Mainnet** | 651940 | Alltra | `https://mainnet-rpc.alltra.global` | https://alltra.global | +Pool categories: +- `pmmPools`: standard DODO PMM routing pools +- `pmmPoolsVolatile`: volatile-route PMM pools +- `gasPmmPools`: gas-family PMM pools +- `uniswapV2Pools`: Uniswap V2-compatible pairs ---- +## Network Summary -## Token Inventories +| ChainID | Network | Pools | Live Read | Planned Gas Placeholder | Query Failed | Reference Venues | RPC | +| --- | --- | --- | --- | --- | --- | --- | --- | +| 138 | DeFi Oracle Meta Mainnet (Chain 138) | 28 | 28 | 0 | 0 | 0 | https://rpc-core.d-bis.org | +| 651940 | ALL Mainnet (Alltra) | 0 | 0 | 0 | 0 | 0 | https://mainnet-rpc.alltra.global | +| 1 | Ethereum Mainnet | 21 | 21 | 0 | 0 | 4 | https://eth.llamarpc.com | +| 10 | Optimism | 15 | 15 | 0 | 0 | 4 | https://mainnet.optimism.io | +| 25 | Cronos | 15 | 15 | 0 | 0 | 4 | https://evm.cronos.org | +| 56 | BSC (BNB Chain) | 15 | 15 | 0 | 0 | 4 | https://bsc-dataseed.binance.org | +| 100 | Gnosis Chain | 13 | 13 | 0 | 0 | 4 | https://rpc.gnosischain.com | +| 137 | Polygon | 17 | 17 | 0 | 0 | 4 | https://polygon-bor-rpc.publicnode.com | +| 8453 | Base | 13 | 13 | 0 | 0 | 4 | https://mainnet.base.org | +| 42161 | Arbitrum One | 13 | 11 | 2 | 0 | 4 | https://arb1.arbitrum.io/rpc | +| 42220 | Celo | 15 | 15 | 0 | 0 | 4 | https://forno.celo.org | +| 43114 | Avalanche C-Chain | 15 | 15 | 0 | 0 | 4 | https://api.avax.network/ext/bc/C/rpc | +| 1111 | Wemix | 2 | 0 | 2 | 0 | 4 | https://api.wemix.com | -### ChainID 138 — Tokens +## DeFi Oracle Meta Mainnet (Chain 138) (138) -| Token | Symbol | Address | Decimals | Type | -|-------|--------|---------|----------|------| -| Wrapped Ether | WETH | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 18 | Standard | -| Wrapped Ether v10 | WETH10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | 18 | Standard | -| Chainlink | LINK | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | 18 | Standard | -| Compliant USDT | cUSDT | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | 6 | Stablecoin | -| Compliant USDC | cUSDC | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 6 | Stablecoin | -| Tether USD (Official Mirror) | USDT | `0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1` | 6 | Stablecoin | -| USD Coin (Official Mirror) | USDC | `0x71D6687F38b93CCad569Fa6352c876eea967201b` | 6 | Stablecoin | -| Gold (Compliant) | cXAUC | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | 6 | XAU anchor | -| Tether Gold (Compliant) | cXAUT | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | 6 | XAU anchor | -| Tether EUR (Compliant) | cEURT | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | 6 | Stablecoin | +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cUSDT / cUSDC | `0x9e89bAe009adf128782E19e8341996c596ac40dC` | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 983891.197998 | 1016108.797998 | live | +| pmmPools | dodo_pmm | cUSDT / USDT | `0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66` | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | `0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1` | 999872.497998 | 1000127.497998 | live | +| pmmPools | dodo_pmm | cUSDC / USDC | `0xc39B7D0F40838cbFb54649d327f49a6DAC964062` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | `0x71D6687F38b93CCad569Fa6352c876eea967201b` | 1010462.997998 | 989536.997998 | live | +| pmmPools | dodo_pmm | cEURC / cUSDC | `0x5efD4771e35B9A101Bc0f4E44905b3c77292D95D` | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cEURT / cUSDC | `0xC479ad0c2333c7738DFA13Ef9E0d3eD2De53F191` | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cGBPC / cUSDC | `0xb7fe7C3B71580f9BcE496076dc8b0B4B40A06edd` | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cGBPT / cUSDC | `0x77aEfcd4E25eFf32A680057879fB176aF4a66838` | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cAUDC / cUSDC | `0x034B89E3F050F48849139E37813EdFd048253876` | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cJPYC / cUSDC | `0xD6a83bb947Ea062580c220e03B37E44C9532FA2c` | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cCHFC / cUSDC | `0x9fd00d9875cBd1b8F54F51e153ade0D7DC87f05B` | `0x873990849DDa5117d7C644f0aF24370797C03885` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cCADC / cUSDC | `0xf9dEd79Ff2a481C1c6aD6Bfb2114b488Aba567F5` | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cXAUC / cUSDC | `0xDC4968F0B665ccDffBba6eB23902e95b5b3B097B` | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 100 | 450630 | live | +| pmmPools | dodo_pmm | cXAUT / cUSDC | `0x8C7874d1040377be410c1140A1B5E1B869fbBe30` | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 100 | 450630 | live | +| pmmPools | dodo_pmm | cEURC / cEURT | `0x0F2f82bf28e7844898BFABf35A5566681fC2f7ab` | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cGBPC / cGBPT | `0x7B3CD08B46b7b1EAD9F5cB5AcEaf1Db298A39db5` | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | 25000 | 25000 | live | +| pmmPools | dodo_pmm | cXAUC / cXAUT | `0x89e0304B724E87F816A1c72e716949d4DbC9c4d5` | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | 100 | 100 | live | +| pmmPools | dodo_pmm | cUSDT / WETH | `0xaE38a008Ba4Dbf8D9F141D03e9dC8f7Dbe0ce17c` | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 10100000 | 4786.729857819905211639 | live | +| pmmPools | dodo_pmm | cUSDC / WETH | `0xAAE68830a55767722618E869882c6Ed064Cc1eb2` | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 10100000 | 4786.729857819905211639 | live | +| pmmPools | dodo_pmm | cEURC / WETH | `0xbF534b5bc92b43DBC907Dedf3Fc3A23C571C2D77` | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 255.92417061611372544 | live | +| pmmPools | dodo_pmm | cEURT / WETH | `0x4a64c886cedF00db42ea5B946D6b304121ad9529` | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 10100000 | 5169.668246445497634796 | live | +| pmmPools | dodo_pmm | cGBPC / WETH | `0xE4355CaF23B9487758A60e0BA43174A3Eed0Cb1D` | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 300.947867298578235392 | live | +| pmmPools | dodo_pmm | cGBPT / WETH | `0xA55c322580Ae3C14DB6CFA8FbB264a99632186d8` | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 300.947867298578235392 | live | +| pmmPools | dodo_pmm | cAUDC / WETH | `0x3068da5d0aB1E31100910e9c6FCEa72617d42151` | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 151.658767772511862784 | live | +| pmmPools | dodo_pmm | cJPYC / WETH | `0x21C7ED2Ed7fD8A7518F75FFB63BB9029225766dD` | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 1.587677725118483456 | live | +| pmmPools | dodo_pmm | cCHFC / WETH | `0xc316038D686594f6eb5bb7fB87e58e2E4D1A137B` | `0x873990849DDa5117d7C644f0aF24370797C03885` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 260.66350710900473856 | live | +| pmmPools | dodo_pmm | cCADC / WETH | `0xEB8Fc45659A2b911527E2Cd484936C5266B9da9F` | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 500000 | 172.985781990521339904 | live | +| pmmPools | dodo_pmm | cXAUC / WETH | `0x6fcfc82Ff1b795fD8F53eDdD04144F20c1669e38` | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 250 | 533.921800947867254784 | live | +| pmmPools | dodo_pmm | cXAUT / WETH | `0x43fE1A62803C033a9777F48A1BbDd1d66331b1c3` | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 250 | 533.921800947867254784 | live | -**Source:** [CHAIN138_TOKEN_ADDRESSES.md](CHAIN138_TOKEN_ADDRESSES.md), [CONTRACT_ADDRESSES_REFERENCE.md](CONTRACT_ADDRESSES_REFERENCE.md) +## ALL Mainnet (Alltra) (651940) ---- +No pools are listed in the canonical deployment graph for this network. -### ALL Mainnet (651940) — Tokens +## Ethereum Mainnet (1) -| Token | Symbol | Address | Decimals | Type | -|-------|--------|---------|----------|------| -| Alltra USD Token | AUSDT | `0x015B1897Ed5279930bC2Be46F661894d219292A6` | 18 | Stablecoin | -| AUSDT (alt) | USDT | `0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e` | 18 | Stablecoin | -| AUSDC | USDC | `0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881` | 18 | Stablecoin | -| Wrapped Ether | WETH | `0x798F6762BB40d6801A593459d08F890603D3979C` | 18 | Wrapped | -| Wrapped Alltra | WALL | `0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4` | 18 | Wrapped | -| Hyper-Dex Exchange | HYDX | `0x0d9793861AEB9244AD1B34375a83A6730F6AdD38` | 18 | DeFi | -| HYBX | HYBX | `0x1839f77eBed7F388c7035f7061B4B8Ef0E72317a` | 8 | DeFi | -| ChatCoin | CHT | `0xE59Bb804F4884FcEA183a4A67B1bb04f4a4567bc` | 8 | DeFi | -| MOOLA | AUDA | `0x690740f055A41FA7669f5a379Bf71B0cDF353073` | 18 | DeFi | +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWUSDT / USDC | `0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDC / USDC | `0x69776fc607e9edA8042e320e7e43f54d06c68f0E` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDT / USDT | `0x79156F6B7bf71a1B72D78189B540A89A6C13F6FC` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `0xdAC17F958D2ee523a2206206994597C13D831ec7` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDC / USDT | `0xCC0fd27A40775c9AfcD2BBd3f7c902b0192c247A` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `0xdAC17F958D2ee523a2206206994597C13D831ec7` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDT / cWUSDC | `0xe944b7Cb012A0820c07f54D51e92f0e1C74168DB` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x0bC750F9c6DbDcd76B205695A356491b1B9ef098` | `0xD4aEAa8cD3fB41Dc8437FaC7639B6d91B60A5e8d` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0x5488042dF882893a3e7074453E2005CaDE4101b0` | `0xc074007dc0bfb384b1cf6426a56287ed23fe4d52` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0x6c1bD4F43c5f330E50B61DE81066dA7C61a9b5b4` | `0x5020Db641B3Fc0dAbBc0c688C845bc4E3699f35F` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0xE0F35b5736FDd0a2F4B618621b0A08F8D8A3f92A` | `0x209FE32fe7B541751D190ae4e50cd005DcF8EDb4` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794` | `0x07EEd0D7dD40984e47B9D3a3bdded1c536435582` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0x776Ca556deD3245984F504F4bef8Eeec55C50190` | `0x0F91C5E6Ddd46403746aAC970D05d70FFe404780` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0x9cF3DeDAaC0984c530801b9b4881c8f99Bb329c3` | `0x855d74FFB6CF75721a9bAbc8B2ed35c8119241dC` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0xA42566bb730AD6D551Db32d50c0877132fc07c32` | `0x1dDF9970F01c76A692Fdba2706203E6f16e0C46F` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0xf6470219ce7749f8860dEABe9c347Ef2c1075E08` | `0x572Be0fa8CA0534d642A567CEDb398B771D8a715` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0x1D51a38C924382287d770AbB61deb9C39ACa96E9` | `0xACE1DBF857549a11aF1322e1f91F2F64b029c906` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | — | — | live_documented_no_balance | +| pmmPoolsVolatile | dodo_pmm | cWUSDT / TRUU | `0x508E5e80B66204b8CD9869323Fdd3A289ea50993` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `0xDAe0faFD65385E7775Cf75b1398735155EF6aCD2` | 3.257177 | — | live | +| pmmPoolsVolatile | dodo_pmm | cWUSDC / TRUU | `0x9A632F35078b6A4A9bf27806Bb7aFfAA2F16C846` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `0xDAe0faFD65385E7775Cf75b1398735155EF6aCD2` | 0.62394 | — | live | +| gasPmmPools | dodo_pmm | cWETH / WETH | `0x746E5e7382603cbaff985C18262afd4f30C51e39` | `0xf6dc5587e18f27adff60e303fdd98f35b50fa8a5` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWETH / USDC | `0x94ee8EE32FCD86aCa362481160c5eEc1afa6C639` | `0xf6dc5587e18f27adff60e303fdd98f35b50fa8a5` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x422608c5dDff909675ac2C5F872fD42f16B9287A` | `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | 9898542.641851 | 9898540.782562 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDC / USDC | `0xC28706F899266b36BC43cc072b3a921BDf2C48D9` | `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | 0.006267 | 0.006267 | live | -**Source:** [ALL_MAINNET_TOKEN_ADDRESSES.md](ALL_MAINNET_TOKEN_ADDRESSES.md) +### Ethereum Mainnet Reference Venues ---- +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWETH / WETH | `0x7111000000000000000000000000000000000001` | yes | no | no | planned_reference_placeholder | +| balancer | cWETH / USDC | `0xba11000000000000000000000000000000000001` | yes | no | no | planned_reference_placeholder | +| curve | cWETH / USDC | `0xc711000000000000000000000000000000000001` | yes | no | no | planned_reference_placeholder | +| 1inch | cWETH / USDC | — | yes | no | no | supported_not_live | -## ChainID 138 — Liquidity Pool Map +## Optimism (10) -### 1. Public Liquidity Pools (DODO PMM) +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0x4B452800f6cD50326F14a6f089f4bB04e8079250` | `0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0x19e1fdd037F1651AcEE11c5A5Aa246b85FA63f8e` | `0x9f6d2578003fe04e58a9819a4943732f2a203a61` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0xA97D7dfB93CBf0C10243931d93FFEda745222ec6` | `0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x78C6aC6D7CbFcd85A3291D656F2154979a92c00B` | `0x4ab39b5bab7b463435209a9039bd40cf241f5a82` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0x631DfC86A03cB05319d7165198f8099dacF78e56` | `0x6f521cd9fcf7884cd4e9486c7790e818638e09dd` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0x79BE2b70A94E954d095f9F537FAf0741D15dfA31` | `0x3f8c409c6072a2b6a4ff17071927ba70f80c725f` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0x5D6b5d7CA165c39c350083255774DdBf1c858e12` | `0x456373d095d6b9260f01709f93fccf1d8aa14d11` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0x68C1c8a945ddCF3482b73aC09b6B5D4177D564AF` | `0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDC / USDC | `0x022a8835b5c8fd6714cE33c783a426398468702B` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDT / USDT | `0x0630059fc9a629DABAC1244c9f021A33A71B098f` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `0x94b008aA00579c1307B0EF2c499aD98a8ce58e58` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0xCE25c324e41049D75abfB81c23257984A2A97a79` | `0xddc4063f770f7c49d00b5a10fb552e922aa39b2c` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0xb3Ee650019d7F756ce0F79b69614Fa2761871775` | `0x145e8e8c49b6a021969dd9d2c01c8fea44374f61` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWETHL2 / WETH | `0xA9fC99fd6C1B665CC385156a088c637972e3d34A` | `0x95007ec50d0766162f77848edf7bdc4eba147fb4` | `0x4200000000000000000000000000000000000006` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWETHL2 / USDC | `0xB018cdB90ec1EF6cf729Bc7DfF4330EE1D97474a` | `0x95007ec50d0766162f77848edf7bdc4eba147fb4` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0xe28BFf306442a8A512d2441847c27211a7C4C613` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | 3000 | 3000 | live | -| Pool Pair | Type | DEX | Status | Notes | -|-----------|------|-----|--------|-------| -| cUSDT / cUSDC | Public | DODO PMM | ✅ **Funded (live)** | Pool: `0xff8d3b8fDF7B112759F076B69f4271D4209C0849`; seeded `10,000,000 / 10,000,000` | -| cUSDT / USDT (official mirror) | Public | DODO PMM | ✅ **Funded (live)** | Pool: `0x6fc60DEDc92a2047062294488539992710b99D71`; seeded `10,000,000 / 10,000,000` | -| cUSDC / USDC (official mirror) | Public | DODO PMM | ✅ **Funded (live)** | Pool: `0x0309178ae30302D83c76d6Dd402a684eF3160eec`; seeded `10,000,000 / 10,000,000` | -| cUSDT / XAU (cXAUC) | Public | DODO PMM | ✅ **Funded (live)** | Pool: `0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0`; reserves `2,666,965 cUSDT / 519.477 cXAUC` | -| cUSDC / XAU (cXAUC) | Public | DODO PMM | ✅ **Funded (live)** | Pool: `0xEA9Ac6357CaCB42a83b9082B870610363B177cBa`; reserves `1,000,000 cUSDC / 194.782554 cXAUC` | -| cEURT / XAU (cXAUC) | Public | DODO PMM | ✅ **Funded (live)** | Pool: `0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf`; reserves `1,000,000 cEURT / 225.577676 cXAUC` | +### Optimism Reference Venues -**Purpose:** User routing, price discovery, flash loan access. **Not** primary stabilization. +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWETHL2 / WETH | `0x712100000000000000000000000000000000000a` | yes | no | no | planned_reference_placeholder | +| balancer | cWETHL2 / USDC | `0xba2100000000000000000000000000000000000a` | yes | no | no | planned_reference_placeholder | +| curve | cWETHL2 / USDC | `0xc72100000000000000000000000000000000000a` | yes | no | no | planned_reference_placeholder | +| 1inch | cWETHL2 / USDC | — | yes | no | no | supported_not_live | -**Contracts:** `DODOPMMIntegration.sol` at `0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d`; **DODOPMMProvider** at `0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381`; public stable and public XAU pools are live and funded. **Full mesh:** [PMM_FULL_MESH_AND_PUBLIC_SINGLE_SIDED_PLAN.md](../03-deployment/PMM_FULL_MESH_AND_PUBLIC_SINGLE_SIDED_PLAN.md) and `create-pmm-full-mesh-chain138.sh` (all c* vs c* + optional c* vs official). **Add liquidity:** [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md](../03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md). **Pre-deployment steps:** [PRE_DEPLOYMENT_CHECKLIST.md](../03-deployment/PRE_DEPLOYMENT_CHECKLIST.md). -**Config:** `CHAIN_138_DODO_PMM_INTEGRATION` set in .env; `CHAIN_138_DODO_POOL_MANAGER`, `CHAIN_138_DODO_VENDING_MACHINE` (optional). +## Cronos (25) -**Source:** [VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md](../VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md) §4, [DODO_PMM_INTEGRATION.md](../../smom-dbis-138/docs/integration/DODO_PMM_INTEGRATION.md) +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWUSDT / USDT | `0xb4F3d4C8995032690837543438ac40BA5cbfd8Fe` | `0x72948a7a813B60b37Cd0c920C4657DbFF54312b8` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDC / USDC | `0x72c50bb2c621a2C10E162776D0D210d3C9f8Ac02` | `0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec` | `0xc21223249CA28397B4B6541dfFaEcC539BfF0c59` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWAUDC / USDT | `0x5b5fA8664FC1eb630b2D76deAf57Dd35ef326eAE` | `0xff3084410A732231472Ee9f93F5855dA89CC5254` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDT | `0xFFe56BE4628f2863Cd7c38d3fFa70d6A3255FBD3` | `0x32aD687F24F77bF8C86605c202c829163Ac5Ab36` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDT | `0x937E86f21007C15F28081DBD419ea39ef5bc87F2` | `0xB55F49D6316322d5caA96D34C6e4b1003BD3E670` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDT | `0xbe68d6ae47049ce0EA5B6a82AB1c388f4023aec8` | `0x7574d37F42528B47c88962931e48FC61608a4050` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDT | `0xE3bb64f8F05dB65C9bb1103f5D7C445C402161Ec` | `0x9f833b4f1012F52eb3317b09922a79c6EdFca77D` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDT | `0xDa60b22cDb3D3Ec67c309457Bd50C4e67D4611a4` | `0xe5c65A76A541368d3061fe9E7A2140cABB903dbF` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDT | `0x1935d14D513E158D630488f2D20Cd28CFe23aAe6` | `0xBb58fa16bAc8E789f09C14243adEE6480D8213A2` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDT | `0x97fD4E88490D8c4bcbe1930Cece12e8DD22529bE` | `0x52aD62B8bD01154e2A4E067F8Dc4144C9988d203` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDT | `0xAA450B4Cf4EEc28C440850665546D85C67b4B2A6` | `0xf1B771c95573113E993374c0c7cB2dc1a7908B12` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDT | `0x8B11f71C0ABF2f8031c47cFd20d22b2ab2799183` | `0xD517C0cF7013f988946A468c880Cc9F8e2A4BCbE` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWCRO / WCRO | `0x31a1F3fBe7C61936a9c639A355f6b735A53241A1` | `0x9b10eb0f77c45322dbd1fcb07176fd9a7609c164` | `0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWCRO / USDT | `0x0a1e33387d55F726233EDA0ee229047DF9145723` | `0x9b10eb0f77c45322dbd1fcb07176fd9a7609c164` | `0x66e428c3f67a68878562e79A0234c1F83c208770` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x438d8E1a8E311d2ae4b75a38E0044675fD324133` | `0x72948a7a813B60b37Cd0c920C4657DbFF54312b8` | `0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec` | 3000 | 3000 | live | ---- +### Cronos Reference Venues -### 2. Private Stabilization Pools (XAU-anchored) +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWCRO / WCRO | `0x7161000000000000000000000000000000000019` | yes | no | no | planned_reference_placeholder | +| balancer | cWCRO / USDT | — | no | no | no | unsupported | +| curve | cWCRO / USDT | — | no | no | no | unsupported | +| 1inch | cWCRO / USDT | — | yes | no | no | supported_not_live | -| Pool Pair | Type | Registry | Status | Notes | -|-----------|------|----------|--------|-------| -| cUSDT ↔ XAU (cXAUC) | Private | PrivatePoolRegistry | ✅ **Funded (live)** | Pool: `0x94316511621430423a2cff0C036902BAB4aA70c2`; reserves `2,666,965 cUSDT / 519.477 cXAUC` | -| cUSDC ↔ XAU (cXAUC) | Private | PrivatePoolRegistry | ✅ **Funded (live)** | Pool: `0x7867D58567948e5b9908F1057055Ee4440de0851`; reserves `1,000,000 cUSDC / 194.782554 cXAUC` | -| cEURT ↔ XAU (cXAUC) | Private | PrivatePoolRegistry | ✅ **Funded (live)** | Pool: `0x505403093826D494983A93b43Aa0B8601078A44e`; reserves `1,000,000 cEURT / 225.577676 cXAUC` | +## BSC (BNB Chain) (56) -**Purpose:** Stabilizer-only swaps for peg rebalancing. Triangular arbitrage: TokenA ↔ XAU ↔ TokenB. +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDT | `0x85E2C97a931D1e5Ed31F4D6cb4094fB036AE4ED4` | `0x7062f35567BBAb4d98dc33af03B0d14Df42294D5` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDT | `0xE193bd2f602CaC833330c6835f934f3958a7785b` | `0x9AE7a6B311584D60Fa93f973950d609061875775` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDT | `0x02F70D646B57439faF5dF1B16d2B174Ee2A9F373` | `0xD9f8710caeeBA3b3D423D7D14a918701426B5ef3` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDT | `0xaF1EA2c0105C90C819849FBFE931D61a11De4793` | `0x50b073d0D1D2f002745cb9FC28a057d5be84911c` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDT | `0x6b97090c974eCAf77dC4e390B044F87Ec71f5fA1` | `0x1ED9E491A5eCd53BeF21962A5FCE24880264F63f` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDT | `0x5e19913eDaAcaB436AbF635e58f2453323cB2CB3` | `0x8b6EE72001cAFcb21D56a6c4686D6Db951d499A6` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDT | `0x439C447b4FDa58fcAF587F0A042662A46029dC7c` | `0xA6eFb8783C8ad2740ec880e46D4f7E608E893B1B` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDT | `0xBEceD3b25448F648a36Fa9dd6D17a68CB6e61f36` | `0x5fbCE65524211BC1bFb0309fd9EE09E786c6D097` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDT | `0xe9306557758c19cb8FbeEb4777dc7b14f251f67c` | `0xCB145bA9A370681e3545F60e55621eBf218B1031` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDT | `0xfB094EC50d932bCD004E4136EfB62119c0f576E1` | `0x73E0CF8BF861D376B3a4C87c136F975027f045ff` | `0x55d398326f99059fF775485246999027B3197955` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWBNB / WBNB | `0x5183fd157BA046E50E65375136A83FC1BcD88184` | `0x179034a08ac2c9c35d2e41239f68c79dca6f18fa` | `0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWBNB / USDT | `0x5eb7c86c935A22d096D45c2A597B4a8f88Be06e5` | `0x179034a08ac2c9c35d2e41239f68c79dca6f18fa` | `0x55d398326f99059fF775485246999027B3197955` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x7e308c12bd609607DF9C4137E30235D5A9Da2A64` | `0x9a1D0dBEE997929ED02fD19E0E199704d20914dB` | `0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | 3000 | 3000 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDT | `0xe9b082bAa73Fa4DEc7CB3CbD99B19D30BbfE1523` | `0xe1a51Bc037a79AB36767561B147eb41780124934` | `0x9a1D0dBEE997929ED02fD19E0E199704d20914dB` | 1500 | 1000 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDC | `0x639D7e64C6f1fC676226f20a0C42aEcDD66545E8` | `0xe1a51Bc037a79AB36767561B147eb41780124934` | `0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | 1500 | 1000 | live | -**Contracts:** `PrivatePoolRegistry.sol` at `0xb27057B27db09e8Df353AF722c299f200519882A`; `Stabilizer.sol` (Phase 3); `DeployPrivatePoolRegistryAndPools.s.sol`. +### BSC (BNB Chain) Reference Venues -**Env:** `XAU_ADDRESS_138`, `cEURT_ADDRESS_138`, `DODOPMM_INTEGRATION_ADDRESS` — all required for pool creation. +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWBNB / WBNB | `0x7131000000000000000000000000000000000038` | yes | no | no | planned_reference_placeholder | +| balancer | cWBNB / USDT | — | no | no | no | unsupported | +| curve | cWBNB / USDT | — | no | no | no | unsupported | +| 1inch | cWBNB / USDT | — | yes | no | no | supported_not_live | -**Source:** [VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md](../VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md) §5, [CONTRACT_DEPLOYMENT_RUNBOOK.md](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md) § Private stabilization pools +## Gnosis Chain (100) ---- +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0xeb5A688dF70be2F790719872Be9Ecc5648aEE460` | `0xddc4063f770f7c49d00b5a10fb552e922aa39b2c` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0x45177D998F4022aeaa046C60e734aEf8c18aCb70` | `0xa7133c78e0ec74503a5941bcbd44257615b6b4f6` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0x9ff24E16c5687330c271a52655971c7C2498FaC8` | `0x46d90d7947f1139477c206c39268923b99cf09e4` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x8c8d6cc14111443Ef8572D58Df387a1E497b7C43` | `0x25603ae4bff0b71d637b3573d1b6657f5f6d17ef` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0xB73e4C13757EE99540A1F0e973980E423987De19` | `0x8e54c52d34a684e22865ac9f2d7c27c30561a7b9` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0xf060E1B29FF714f5Ac89F8Bd3869cF300C5b387f` | `0x4d9bc6c74ba65e37c4139f0aec9fc5ddff28dcc4` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0x3adB3fB8451727fDEBe3D00617170dAF3725F6B4` | `0x9f6d2578003fe04e58a9819a4943732f2a203a61` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0xe11936EcE13B5f04156898a510B86493F2862042` | `0x145e8e8c49b6a021969dd9d2c01c8fea44374f61` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0x02BE3C506FD5541c8225dB43C6FFC5a39ADd803E` | `0x23873b85cfeb343eb952618e8c9e9bfb7f6a0d45` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0x7069d10A0E4496D0CEa08Ff27EaE9de0BB7D0d23` | `0xc6189d404dc60cae7b48e2190e44770a03193e5f` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWXDAI / WXDAI | `0x528579867e2914723029b18fD0E5798f3DB7D337` | `0x9f833b4f1012f52eb3317b09922a79c6edfca77d` | `0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWXDAI / USDC | `0x6AC4D7E3d2Ef5d94744B3a5BC1f5cE18682383C0` | `0x9f833b4f1012f52eb3317b09922a79c6edfca77d` | `0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x064d782Be0113Cb427f3Af0De9335C9F34A1de34` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | 4000 | 4000 | live | -### 3. Reserve Pools / Vault Backing +### Gnosis Chain Reference Venues -| Component | Type | Address | Status | Backed Tokens | -|-----------|------|---------|--------|---------------| -| **ReserveSystem** | Reserve | `0x607e97cD626f209facfE48c1464815DDE15B5093` | ✅ Deployed | — | -| **ReserveTokenIntegration** | Reserve | `0x34B73e6EDFd9f85a7c25EeD31dcB13aB6E969b96` | ✅ Deployed | — | -| **StablecoinReserveVault** | Reserve | — | ❌ Not on Chain 138 | cUSDT, cUSDC | -| **Bridge_Vault** | Vault | `0x31884f84555210FFB36a19D2471b8eBc7372d0A8` | ✅ Deployed | — | +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWXDAI / WXDAI | `0x7171000000000000000000000000000000000064` | yes | no | no | planned_reference_placeholder | +| balancer | cWXDAI / USDC | `0xba71000000000000000000000000000000000064` | yes | no | no | planned_reference_placeholder | +| curve | cWXDAI / USDC | `0xc771000000000000000000000000000000000064` | yes | no | no | planned_reference_placeholder | +| 1inch | cWXDAI / USDC | — | yes | no | no | supported_not_live | -**StablecoinReserveVault** (1:1 backing): Designed for Ethereum Mainnet; locks official USDT/USDC, mints cUSDT/cUSDC 1:1. Chain 138 compliant tokens receive backing via cross-chain flows. +## Polygon (137) -**Reserve sizing (doc):** Reserve ≥ PeakMinuteOutflow × T; 3–5× safety factor. -**Source:** [RESERVE_BACKING_MECHANISM.md](../../smom-dbis-138/docs/integration/RESERVE_BACKING_MECHANISM.md), [VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md](../VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md) §7 +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWUSDT / USDT | `0xFCB0b0Ac36d67EDBA91100c75C27De945357CD62` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `0xc2132D05D31c914a87C6611C10748AEb04B58e8F` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWUSDC / USDC | `0x8F1038dE06d799a30D16d8B0b0ADEe629e7d4547` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0xbD34966FE5Eed81AFffF8081e9BB527Fc8066783` | `0xFb4B6Cc81211F7d886950158294A44C312abCA29` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0xc79da1E8B33E580d53C683923685B26FFC653650` | `0xc9750828124D4c10e7a6f4B655cA8487bD3842EB` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0x30dAeF9a8Dd4aEc2949013Fe18b5Ab3C2505D825` | `0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x0c6F5D3d8d52cBC52849327F6eC6aE52C8497A8D` | `0x3CD9ee18db7ad13616FCC1c83bC6098e03968E66` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0x36aB6bef2B3335ebf6a762665978bf5e845FDEC0` | `0xBeF5A0Bcc0E77740c910f197138cdD90F98d2427` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0x7a95f67E31f271A6a83219d8368D963Ee2fC106B` | `0x948690147D2e50ffe50C5d38C14125aD6a9FA036` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0xC3645c7153b7B72556e322aA1E72D77536d9A3DE` | `0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0x09658d8d81aa8fa7a21eD973787638f245bc3fe0` | `0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0x3c3b9Bd130fB3aBcC0E0CE6552795DD56BCCc55c` | `0x328Cd365Bb35524297E68ED28c6fF2C9557d1363` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0x37D5587Bbe17571cDe96DAB7b2e7EA234C87f525` | `0x9e6044d730d4183bF7a666293d257d035Fba6d44` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWPOL / WPOL | `0x381E9926115871066f777D69e6Ea4b25E390e1a4` | `0x25980244aacecb6d8c4b887261ed27f87cb2fc73` | `0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWPOL / USDC | `0x3ea5Dfb986BA869106FBE36eA829aCD2e6126f53` | `0x25980244aacecb6d8c4b887261ed27f87cb2fc73` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x3411A20C39773d1A18cb53864893b236f41f1e99` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | 10994.302668 | 10996.392462 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDT | `0x8cD2Cb42B81F894eb10D15446DB22A3B31d6fB2E` | `0xf12e262F85107df26741726b074606CaFa24AAe7` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | 1500 | 1000 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDC | `0xe6a5Cb164D4AF7E9794AEd09EC373392D0E7216c` | `0xf12e262F85107df26741726b074606CaFa24AAe7` | `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | 1500 | 1000 | live | ---- +### Polygon Reference Venues -### 4. Bridge Liquidity Pool (Trustless) +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWPOL / WPOL | `0x7141000000000000000000000000000000000089` | yes | no | no | planned_reference_placeholder | +| balancer | cWPOL / USDC | `0xba41000000000000000000000000000000000089` | yes | no | no | planned_reference_placeholder | +| curve | cWPOL / USDC | `0xc741000000000000000000000000000000000089` | yes | no | no | planned_reference_placeholder | +| 1inch | cWPOL / USDC | — | yes | no | no | supported_not_live | -| Component | Type | Address | Status | Asset Types | -|-----------|------|---------|--------|-------------| -| **LiquidityPoolETH** | Bridge LP | — | ❌ **Placeholder** | ETH, WETH | +## Base (8453) -**Purpose:** Liquidity for trustless bridge (InboxETH, BondManager, ChallengeManager). Holds ETH/WETH for cross-chain releases. +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0xE450F94Dc06036aa80055Db298948C6692819545` | `0xa846aead3071df1b6439d5d813156ace7c2c1da1` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0x5E7448AA0e3172AEFE79439E14F7E59bc1C858E0` | `0xdc383c489533a4dd9a6bd3007386e25d5078b878` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0x0673Fa737f813Af2e37A0ae2CBCf7E225498ed6a` | `0xc1535e88578d984f12eab55863376b8d8b9fb05a` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x72E6D93E9aF317321DF763a34068178c773FdA50` | `0xcb145ba9a370681e3545f60e55621ebf218b1031` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0x51c2C4Dd1fc54E20207D0732f12802B33e0E2251` | `0x73e0cf8bf861d376b3a4c87c136f975027f045ff` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0x5b8B474659A5BA675E74Ef364CcF559C53071B5b` | `0x2a0023ad5ce1ac6072b454575996dffb1bb11b16` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0xD035e0a6b82cDd9653261DC8259a3dbA1cF02C14` | `0x22b98130ab4d9c355512b25ade4c35e75a4e7e89` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0x64D91B738026fE1577773F3F36063d16C834F042` | `0x29828e9ab2057cd3df3c9211455ae1f76e53d2af` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0xb47776505B8E2bFC63197Cf2133857CD91e7abBb` | `0x7e4b4682453bcce19ec903fb69153d3031986bc4` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0xE1C2bC36438B29E3b5092C0cB80531199874080D` | `0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWETHL2 / WETH | `0x3722Ebb81e4Fb97E13A4675Da9db72D55Ed8e73a` | `0x2a0840e5117683b11682ac46f5cf5621e67269e3` | `0x4200000000000000000000000000000000000006` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWETHL2 / USDC | `0x07B2b5A74CD846c4732a7F45DA25e6794c9EBC84` | `0x2a0840e5117683b11682ac46f5cf5621e67269e3` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x56eb93f747D3B8251d43849cC72B39c1899fcaca` | `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6` | `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | 1000 | 1000 | live | -**Config:** `LIQUIDITY_POOL_ADDRESS` in `.env` — placeholder `0x0`. -**Related:** Lockbox138 `0xFce6f50B312B3D936Ea9693C5C9531CF92a3324c` (deployed); full trustless stack not deployed. +### Base Reference Venues -**Source:** [DEX_AND_CROSS_CHAIN_CONTRACTS_NEEDED.md](DEX_AND_CROSS_CHAIN_CONTRACTS_NEEDED.md), [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md) +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWETHL2 / WETH | `0x7121000000000000000000000000000000002105` | yes | no | no | planned_reference_placeholder | +| balancer | cWETHL2 / USDC | `0xba21000000000000000000000000000000002105` | yes | no | no | planned_reference_placeholder | +| curve | cWETHL2 / USDC | `0xc721000000000000000000000000000000002105` | yes | no | no | planned_reference_placeholder | +| 1inch | cWETHL2 / USDC | — | yes | no | no | supported_not_live | ---- +## Arbitrum One (42161) -### 5. Vault / XAU Triangulation (Conceptual) +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0x97f78713f5899a652d955B996BAb99E2CbbEcC5c` | `0xc1535e88578d984f12eab55863376b8d8b9fb05a` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0x6D3b55935F58b9433fc26743cd9E0F8963a4F6D8` | `0xcc6ae6016d564e9ab82aaff44d65e05a9b18951c` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0x88437Cd15CB6b07Fd8cC9830f1b8fFf50275e691` | `0x7e4b4682453bcce19ec903fb69153d3031986bc4` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x34c3Ae728a985Fd27f1887474bCf4e52847Cbb2c` | `0x2a0023ad5ce1ac6072b454575996dffb1bb11b16` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0xEEE8C51107aE64824c4a08a502202fA3E6213702` | `0x22b98130ab4d9c355512b25ade4c35e75a4e7e89` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0xFBa6D6d1471302Bf28CE7d94Be33f034b95d9AD0` | `0xa846aead3071df1b6439d5d813156ace7c2c1da1` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0xDcA29dfa59C8faF90e4437DEAe74474F78735cDe` | `0x29828e9ab2057cd3df3c9211455ae1f76e53d2af` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0xB6eaF7cEB4A6e9Bc6A57fEb51011B6Bb01632C1F` | `0xdc383c489533a4dd9a6bd3007386e25d5078b878` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0x41e67b8b5929e44C2b7A0D772E151FAD8D5303cd` | `0xa7762b63c4871581885ad17c5714ebb286a7480b` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0xB6b15Ba233C95d164504e24209C1fAc3304059C7` | `0x66568899ffe8f00b25dc470e878b65a478994e76` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWETHL2 / WETH | `0xd02100000000000000000000000000000000a4b1` | `0xe27be001bc55cb2a8ed5ba5a62c834ca135244a3` | `0x82aF49447D8a07e3bd95BD0d56f35241523fBab1` | — | — | planned_gas_placeholder | +| gasPmmPools | dodo_pmm | cWETHL2 / USDC | `0xd02200000000000000000000000000000000a4b1` | `0xe27be001bc55cb2a8ed5ba5a62c834ca135244a3` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | — | — | planned_gas_placeholder | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x2b2ea2EA9e7617de09FCb5063BEfafa01A9ef2b4` | `0x73ADaF7dBa95221c080db5631466d2bC54f6a76B` | `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | 3000 | 3000 | live | -| Component | Address | Role | -|-----------|---------|------| -| **XAU Oracle** | `0xf23E1eDa304082ab7a81531dFE6020E6105e77A8` | ETH/XAU price for vault valuations | -| **Ledger** | `0x67b3831dc64C14FB9352B2a45C6Dd69b3C86B7af` | XAU-denominated accounting | -| **VaultFactory** | `0xB2Ac70f35A81481B005067ed6567a5043BA32336` | Vault creation | +### Arbitrum One Reference Venues -Not liquidity pools per se; they support XAU triangulation for private mesh parity (TokenA → XAU → TokenB). +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWETHL2 / WETH | `0x712100000000000000000000000000000000a4b1` | yes | no | no | planned_reference_placeholder | +| balancer | cWETHL2 / USDC | `0xba2100000000000000000000000000000000a4b1` | yes | no | no | planned_reference_placeholder | +| curve | cWETHL2 / USDC | `0xc72100000000000000000000000000000000a4b1` | yes | no | no | planned_reference_placeholder | +| 1inch | cWETHL2 / USDC | — | yes | no | no | supported_not_live | ---- +## Celo (42220) -## ALL Mainnet (651940) — Liquidity Pool Map +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0xA9EC7819a009d05B16907FEC96426ed35D5fa0e3` | `0x2d3a2ED4Ca4d69912d217c305EE921609F7906A8` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0xBB7f2A2360eC02CaFe433d8b6D8BB7a418B2342f` | `0x0C242b513008Cd49C89078F5aFb237A3112251EB` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0xfD8E36E2a4A462A33b5faF18DF927d3FA19daaEa` | `0x8142BA530B08f3950128601F00DaaA678213DFdf` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0x0Bb6fCd38D5CeB702d4B359159dE7734619c5c32` | `0xb6D2f38b9015F32ccE8818509c712264E7fceeD3` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0x0d7a90CA1FfFC3Fa6F1A12D38c34F2628D8F6b4e` | `0x7e6fB8D80f81430e560F8232b2A4fd06249d74ce` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0xd0dC102c96AF36f4a99DA435bE4Ee4758E5B3cf2` | `0xE37c332a88f112F9e039C5d92D821402A89c7052` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0x4f87cf23f503810253fac18aEd5797bE04A88CEC` | `0x1dBa81f91f1BeC47FFf60eC3e7DeD780ad9968E3` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0x15Db8FD5bAAb52511c7dF94d793AFe7d1dad06d0` | `0x0b39F47D2E68aB0eB18d4b637Bbd1dD8E97cFbB5` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0xa9d3fdE50A5843682A9477E5DF7643D273ae36C9` | `0x61D642979eD75c1325f35b9275C5A7FE97F22451` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0x2900a6FA8Cef1bd5e6511172dc8580ECa6eE316b` | `0x30751782486eed825187C1EAe5DE4b4baD428AaE` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWCELO / WCELO | `0x7f84A510a4eeCf9AbCd498Fc5DE89112e8C8754d` | `0xb0fa7ec4123c7c275b3a89d9239569707ea3c66a` | `0x2021B12D8138e2D63cF0895eccABC0DFc92416c6` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWCELO / USDC | `0xdBc8cAc647CEA82f402a0E7bcdb19865D54F85DF` | `0xb0fa7ec4123c7c275b3a89d9239569707ea3c66a` | `0xcebA9300f2b948710d2653dD7B07f33A8B32118C` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x6F97dE8AB68c722DcBC02cEA0cE6B587b8210052` | `0x73376eB92c16977B126dB9112936A20Fa0De3442` | `0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | 1000 | 1000 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDT | `0xEe9eEBf89C1424e63eFc888929E43a9423357D39` | `0xC158b6cD3A3088C52F797D41f5Aa02825361629e` | `0x73376eB92c16977B126dB9112936A20Fa0De3442` | 1500 | 1000 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDC | `0xd3B55d6d7C08fDbF5F201e486992643cfF410d91` | `0xC158b6cD3A3088C52F797D41f5Aa02825361629e` | `0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | 1500 | 1000 | live | -### 1. Public DEX Pools +### Celo Reference Venues -| Pool Type | DEX | Status | Config / Notes | -|-----------|-----|--------|----------------| -| Uniswap V2 | — | ⚠️ Env-based | `CHAIN_651940_UNISWAP_V2_FACTORY`, `_ROUTER`, `_START_BLOCK` | -| Uniswap V3 | — | ⚠️ Env-based | `CHAIN_651940_UNISWAP_V3_FACTORY`, `_ROUTER`, `_START_BLOCK` | -| DODO PMM | — | ⚠️ Env-based | `CHAIN_651940_DODO_POOL_MANAGER`, `_DODO_VENDING_MACHINE` | +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWCELO / WCELO | `0x718100000000000000000000000000000000a4ec` | yes | no | no | planned_reference_placeholder | +| balancer | cWCELO / USDC | — | no | no | no | unsupported | +| curve | cWCELO / USDC | `0xc78100000000000000000000000000000000a4ec` | yes | no | no | planned_reference_placeholder | +| 1inch | cWCELO / USDC | — | yes | no | no | supported_not_live | -**HYDX** (Hyper-Dex Exchange) token exists (`0x0d9793861AEB9244AD1B34375a83A6730F6AdD38`) — indicates a DEX on ALL Mainnet. **No pool addresses or factory addresses are documented** in this repo. +## Avalanche C-Chain (43114) -**Source:** [dex-factories.ts](../../smom-dbis-138/services/token-aggregation/src/config/dex-factories.ts), [ALL_MAINNET_TOKEN_ADDRESSES.md](ALL_MAINNET_TOKEN_ADDRESSES.md) +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| pmmPools | dodo_pmm | cWAUDC / USDC | `0x287edaBDA35195592d7CACe2C1A75eC66caF1D70` | `0x04e1e22b0d41e99f4275bd40a50480219bc9a223` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCADC / USDC | `0x75Ec85467927512b01C9e0481Fb1902d2d7210dC` | `0x1872e033b30f3ce0498847926857433e0146394e` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWCHFC / USDC | `0x3a224eae91ac813a03E15d0c37B641bC6c2237d7` | `0xc2fa05f12a75ac84ea778af9d6935ca807275e55` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURC / USDC | `0xEE2742Fa6f70A40aB16c9b613c5cF6933bA92Cc3` | `0x84353ed1f0c7a703a17abad19b0db15bc9a5e3e5` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWEURT / USDC | `0x8507F3F3cB121072c1e3f2D912d269CA9829eEF8` | `0xfc7d256e48253f7a7e08f0e55b9ff7039eb2524c` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPC / USDC | `0x73542F7B1CBd4552Eb8FeFEB3D1884527424da58` | `0xbdf0c4ea1d81e8e769b0f41389a2c733e3ff723e` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWGBPT / USDC | `0xa07dEe884555f2E9D04d0039FEF0b746987a8441` | `0x4611d3424e059392a52b957e508273bc761c80f2` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWJPYC / USDC | `0x6175D065c602dab71A03753987D1ebEc99eFcC2e` | `0x3714b1a312e0916c7dcdc4edf480fc0339e59a59` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUC / USDC | `0x5d3a4A3Dae9FEcFe979A784F55d994c9a9fBeAfB` | `0x4f95297c23d9f4a1032b1c6a2e553225cb175bee` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| pmmPools | dodo_pmm | cWXAUT / USDC | `0x1392bb9f23F938E6c1cDaAAE5c45d29BE5f8C828` | `0xd2b4dbf2f6bd6704e066d752eec61fb0be953fd3` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | — | — | live_documented_no_balance | +| gasPmmPools | dodo_pmm | cWAVAX / WAVAX | `0x19F7649Ef0C7D5e721BF63e4B383b1023200AF0C` | `0xe1d4aee2ef8f48a20338935188a8fe7f7c7de7d0` | `0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7` | 0 | 0 | live | +| gasPmmPools | dodo_pmm | cWAVAX / USDC | `0x8607546F7f3D836Ceb048fb707E4C61A33401c77` | `0xe1d4aee2ef8f48a20338935188a8fe7f7c7de7d0` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | 0 | 0 | live | +| uniswapV2Pools | uniswap_v2_pair | cWUSDT / cWUSDC | `0x79c8eA153e77BC69b989f59F69BfA44c466D5DEE` | `0x8142BA530B08f3950128601F00DaaA678213DFdf` | `0x0C242b513008Cd49C89078F5aFb237A3112251EB` | 10000.8 | 10000.8 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDT | `0x418322F48D857277ec4BCc96Bc1580aCCB7EA253` | `0xff3084410A732231472Ee9f93F5855dA89CC5254` | `0x8142BA530B08f3950128601F00DaaA678213DFdf` | 1500 | 1000 | live | +| uniswapV2Pools | uniswap_v2_pair | cWAUSDT / cWUSDC | `0xaaD6aed8d28B0195D19B4d17F8ee9A1837ff2DCE` | `0xff3084410A732231472Ee9f93F5855dA89CC5254` | `0x0C242b513008Cd49C89078F5aFb237A3112251EB` | 1500 | 1000 | live | ---- +### Avalanche C-Chain Reference Venues -### 2. Reserve / Stabilization Pools (ALL Mainnet) +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWAVAX / WAVAX | `0x715100000000000000000000000000000000a86a` | yes | no | no | planned_reference_placeholder | +| balancer | cWAVAX / USDC | — | no | no | no | unsupported | +| curve | cWAVAX / USDC | `0xc75100000000000000000000000000000000a86a` | yes | no | no | planned_reference_placeholder | +| 1inch | cWAVAX / USDC | — | yes | no | no | supported_not_live | -| Type | Status | Notes | -|------|--------|-------| -| Reserve | ❌ Not documented | No ReserveSystem or StablecoinReserveVault equivalent in docs | -| Stabilization | ❌ Not documented | No PrivatePoolRegistry or XAU mesh on 651940 | -| Bridge liquidity | — | AlltraAdapter (`0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc` on Chain 138) bridges 138 ↔ 651940; no on-chain LP contract listed | +## Wemix (1111) ---- +| Group | Venue | Pair | Pool | Base Token | Quote Token | Base Balance | Quote Balance | Status | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| gasPmmPools | dodo_pmm | cWWEMIX / WWEMIX | `0xd091000000000000000000000000000000000457` | `0xc111000000000000000000000000000000000457` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` | — | — | planned_gas_placeholder | +| gasPmmPools | dodo_pmm | cWWEMIX / USDC | `0xd092000000000000000000000000000000000457` | `0xc111000000000000000000000000000000000457` | `0xE3F5a90F9cb311505cd691a46596599aA1A0AD7D` | — | — | planned_gas_placeholder | -## Public-chain cW* stabilization (edge pools + bot) +### Wemix Reference Venues -M1 tokens on Chain 138 (cUSDT, cUSDC, cAUSDT, cEURC, cEURT, cUSDW) are bridged to public chains as **cW\*** wrappers (cWUSDT, cWUSDC, etc.). **Single-sided PMM edge pools** (cW* / USDC, cW* / USDT, etc.) on each public chain and a **bot-driven stabilization mesh** maintain the peg. Specs, pool matrix, peg bands, and deployment recipe: +| Protocol | Pair | Venue Address | Supported | Live | Routing Visible | Status | +| --- | --- | --- | --- | --- | --- | --- | +| uniswap_v3 | cWWEMIX / WWEMIX | `0x7191000000000000000000000000000000000457` | yes | no | no | planned_reference_placeholder | +| balancer | cWWEMIX / USDC | — | no | no | no | unsupported | +| curve | cWWEMIX / USDC | — | no | no | no | unsupported | +| 1inch | cWWEMIX / USDC | — | yes | no | no | supported_not_live | -- **[cross-chain-pmm-lps/README.md](../../cross-chain-pmm-lps/README.md)** — Submodule overview and quick start -- **[cross-chain-pmm-lps/docs/06-deployment-recipe.md](../../cross-chain-pmm-lps/docs/06-deployment-recipe.md)** — Step-by-step deployment -- **[cross-chain-pmm-lps/config/](../../cross-chain-pmm-lps/config/)** — token-map.json, pool-matrix.json, peg-bands.json, chains.json +## Source Files -See [SUBMODULE_RELATIONSHIP_MAP.md](SUBMODULE_RELATIONSHIP_MAP.md) for submodule status. +- `cross-chain-pmm-lps/config/deployment-status.json` +- `smom-dbis-138/config/chain138-eth-pmm-pools-execution.json` +- `smom-dbis-138/config/chain138-pmm-pools.json` +- `reports/status/liquidity-pools-master-map-latest.json` ---- - -## Summary Matrix - -| Category | Chain 138 | ALL Mainnet (651940) | -|----------|-----------|----------------------| -| **Public DEX pools** | DODO PMM: stable + XAU pools live and funded | Uniswap V2/V3, DODO (env placeholders); HYDX DEX present, pools undisclosed | -| **Private stabilization** | XAU-anchored private pools live and funded | Not documented | -| **Reserve / vault** | ReserveSystem, ReserveTokenIntegration ✅ | Not documented | -| **Bridge liquidity** | LiquidityPoolETH (placeholder) | Not documented | -| **Vault / XAU** | XAU Oracle, Ledger ✅ | Not applicable | - ---- - -## Deployment Roadmap (Chain 138) - -From [VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md](../VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md): - -1. **Phase 1:** Deploy public DODO PMM pools (completed for cUSDT/cUSDC, official mirrors, and the three public XAU pools) -2. **Phase 2:** Deploy private XAU-anchored stabilization pools (completed for cUSDT, cUSDC, and cEURT against cXAUC) -3. **Phase 3:** Deploy Stabilizer contract (`checkDeviation` → `executePrivateSwap`) -4. **Phase 4:** Cross-chain arbitrage engine (138 ↔ Alltra) -5. **Phase 5:** Stress testing -6. **Phase 6:** Flash loan containment (TWAP, N-block sustain, per-block cap) - ---- - -## References - -| Document | Purpose | -|----------|---------| -| [DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md](DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md) | **Status + full route map:** deployed tokens/coins and bridges per network, DODO/Uniswap LPs, routing to and from all chains. | -| [POOLS_AND_NETWORKS_FULL_DESIGN.md](POOLS_AND_NETWORKS_FULL_DESIGN.md) | **Full design:** every pool and network (61 pools, 6 networks). | -| [POOL_ACCESS_DASHBOARD_API_MCP.md](POOL_ACCESS_DASHBOARD_API_MCP.md) | Whether pools are accessible via standard DODO dashboard, API, and MCP. | -| [GAPS_FILLED_2026-02-27.md](GAPS_FILLED_2026-02-27.md) | Summary of gaps filled (API cW* chains, MCP mock_dvm, pool-matrix 11 chains, docs). | -| [CHAIN138_TOKEN_ADDRESSES.md](CHAIN138_TOKEN_ADDRESSES.md) | Token list Chain 138 | -| [ALL_MAINNET_TOKEN_ADDRESSES.md](ALL_MAINNET_TOKEN_ADDRESSES.md) | Token list ALL Mainnet | -| [VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md](../VAULT_SYSTEM_MASTER_TECHNICAL_PLAN.md) | Pool architecture, capital buckets | -| [DODO_PMM_INTEGRATION.md](../../smom-dbis-138/docs/integration/DODO_PMM_INTEGRATION.md) | DODO pool creation | -| [DEX_AND_CROSS_CHAIN_CONTRACTS_NEEDED.md](DEX_AND_CROSS_CHAIN_CONTRACTS_NEEDED.md) | Deployed vs needed | -| [CONTRACT_DEPLOYMENT_RUNBOOK.md](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md) | Deployment steps | -| [config/smart-contracts-master.json](../../config/smart-contracts-master.json) | Contract addresses | -| [dex-factories.ts](../../smom-dbis-138/services/token-aggregation/src/config/dex-factories.ts) | DEX config per chain | -| [cross-chain-pmm-lps/](../../cross-chain-pmm-lps/README.md) | Public-chain cW* edge pools + stabilization bot (token map, pool matrix, peg bands, deployment) | diff --git a/docs/GALATIC_SUMMARY.md b/docs/GALATIC_SUMMARY.md index bcd7de96..e2509c17 100644 --- a/docs/GALATIC_SUMMARY.md +++ b/docs/GALATIC_SUMMARY.md @@ -11,7 +11,7 @@ ### 1.1 Core Network: Chain 138 (DeFi Oracle Meta Mainnet) - **Chain ID:** 138 -- **Name:** Defi Oracle Meta Mainnet (D-BIS) +- **Name:** DeFi Oracle Meta Mainnet (D-BIS) - **Consensus:** Besu (EVM); validator set and RPC nodes on Proxmox/LAN. - **Public RPCs:** - `https://rpc-http-pub.d-bis.org`, `https://rpc.d-bis.org`, `https://rpc2.d-bis.org` diff --git a/docs/MASTER_INDEX.md b/docs/MASTER_INDEX.md index 9c6c741c..bf506a2b 100644 --- a/docs/MASTER_INDEX.md +++ b/docs/MASTER_INDEX.md @@ -1,9 +1,9 @@ # Documentation — Master Index -**Last Updated:** 2026-03-28 +**Last Updated:** 2026-04-21 **Purpose:** Single entry point for all project documentation. Use this index to find canonical sources and avoid deprecated or duplicate content. -**Status:** Preflight and Chain 138 next steps completed (59/59 on-chain per [check-contracts-on-chain-138.sh](../../scripts/verify/check-contracts-on-chain-138.sh), 12 c* GRU-registered). **2026-03-06:** Contract check list expanded to 59 addresses (PMM, vault/reserve, CompliantFiatTokens); doc refs updated. **2026-03-04:** Celo CCIP bridges deployed; Phase A–D tracked in [03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md). Phase C: [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md); Phase D: [PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md). **On-chain verification:** DODOPMMIntegration canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. **Remaining:** Wemix 0.4 WEMIX, LINK fund, cW* + edge pools — see [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md). +**Status:** Preflight and Chain 138 next steps completed (**61/61** on-chain per [check-contracts-on-chain-138.sh](../../scripts/verify/check-contracts-on-chain-138.sh), 12 c* GRU-registered). **2026-03-06:** Contract check list expanded (PMM, vault/reserve, CompliantFiatTokens); **current** script checks **61** addresses; doc refs updated. **2026-03-04:** Celo CCIP bridges deployed; Phase A–D tracked in [03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md](03-deployment/REMAINING_DEPLOYMENTS_FOR_FULL_NETWORK_COVERAGE.md). Phase C: [PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md); Phase D: [PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md). **On-chain verification:** DODOPMMIntegration canonical cUSDT/cUSDC — [EXPLORER_TOKEN_LIST_CROSSCHECK](11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §8. **Remaining:** Wemix LINK funding + proof transfer, ALL Mainnet public DEX inventory, optional expansion work — see [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md). **Continue and complete (operator/LAN):** (1) `./scripts/run-completable-tasks-from-anywhere.sh` then (2) `./scripts/run-all-operator-tasks-from-lan.sh` (use `--skip-backup` if `NPM_PASSWORD` not set; add `--deploy` or `--create-vms` as needed). Operator scripts load dotenv from repo `.env` and `smom-dbis-138/.env` automatically. @@ -15,6 +15,7 @@ |--------|----------| | **Agent / IDE instructions** | [AGENTS.md](../AGENTS.md) (repo root) | | **Git submodule hygiene + explorer remotes** | [00-meta/SUBMODULE_HYGIENE.md](00-meta/SUBMODULE_HYGIENE.md) — detached HEAD, push order, Gitea/GitHub, `submodules-clean.sh` | +| **Atomic swap dApp submodule** | [03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md](03-deployment/ATOMIC_SWAP_DAPP_SUBMODULE.md) — dedicated swap + bridge dApp repo, manifest sync, and bootstrap-remote note | | **What to do next** | [00-meta/NEXT_STEPS_INDEX.md](00-meta/NEXT_STEPS_INDEX.md) — ordered actions, by audience, execution plan | | **Your personal checklist** | [00-meta/NEXT_STEPS_FOR_YOU.md](00-meta/NEXT_STEPS_FOR_YOU.md) | | **Operator runbook (LAN/creds)** | [00-meta/NEXT_STEPS_OPERATOR.md](00-meta/NEXT_STEPS_OPERATOR.md) | @@ -30,6 +31,9 @@ | **Mr. Promod Uniswap V2 liquidity program** | [03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md](03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md) — wrapped-depth-first Uniswap V2 rollout for cW* and cWAUSDT on bridged public networks | | **Mr. Promod Uniswap V2 promotion gates** | [03-deployment/PROMOD_UNISWAP_V2_PROMOTION_GATES.md](03-deployment/PROMOD_UNISWAP_V2_PROMOTION_GATES.md) — exact per-chain env vars and registry records required before any live Uniswap V2 pool can be promoted | | **Mr. Promod Uniswap V2 live pair discovery** | [03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md](03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md) — env-ready chain scan for live cW Uniswap V2-compatible pairs and the path to record them | +| **cW\* mesh deployment matrix (CI)** | [`scripts/verify/build-cw-mesh-deployment-matrix.sh`](../scripts/verify/build-cw-mesh-deployment-matrix.sh) — read-only merge of PMM deploy graph + Uni V2 discovery; JSON artifact [`reports/status/cw-mesh-deployment-matrix-latest.json`](../reports/status/cw-mesh-deployment-matrix-latest.json); step 3 of [`scripts/verify/run-all-validation.sh`](../scripts/verify/run-all-validation.sh) when `reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json` exists | +| **cW\* USD pricing (Ethereum Mainnet)** | [03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md](03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md) — accounting vs PMM vs reserve-implied; script [`scripts/deployment/price-cw-token-mainnet.sh`](../scripts/deployment/price-cw-token-mainnet.sh); multi-chain mid table [03-deployment/CW_PUBLIC_NETWORK_PRICES.md](03-deployment/CW_PUBLIC_NETWORK_PRICES.md) | +| **Etherscan “Value” $0 (Mainnet `cW*`)** | [04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md](04-configuration/coingecko/ETHERSCAN_USD_VALUE_MAINNET_TOKENS.md) — why; CoinGecko/CMC listing path (not a contract fix) | | **Mr. Promod Uniswap V2 first deployment target matrix** | [03-deployment/PROMOD_UNISWAP_V2_FIRST_DEPLOYMENT_TARGET_MATRIX.md](03-deployment/PROMOD_UNISWAP_V2_FIRST_DEPLOYMENT_TARGET_MATRIX.md) — exact first pair per chain, why it goes first, required tokens, and post-deploy commands | | **Mr. Promod Uniswap V2 phase order** | [03-deployment/PROMOD_UNISWAP_V2_PHASE_ORDER.md](03-deployment/PROMOD_UNISWAP_V2_PHASE_ORDER.md) — strict rollout order: phase 1 core rail, phase 2 full cW* wrapped mesh, phase 3 settlement rails | | **Mr. Promod Uniswap V2 phase 2 operator sequence** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_SEQUENCE.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_SEQUENCE.md) — exact chain-by-chain phase-2 cW* wrapped-mesh rollout with per-pair probe, create, and deploy blocks | @@ -40,7 +44,7 @@ | **Mr. Promod Uniswap V2 phase 2 shell paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_SHELL_PASTE_PACK.sh](03-deployment/PROMOD_UNISWAP_V2_PHASE2_SHELL_PASTE_PACK.sh) — pure shell-only sequence for phase-2 wrapped-mesh pair creation and seeding | | **Mr. Promod Uniswap V2 phase 2 wave 1 completion status** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE1_COMPLETION_STATUS.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE1_COMPLETION_STATUS.md) — live reserve-backed completion report for the six wave-1 wrapped pairs on all target networks, plus current explorer-publication blockers | | **Mr. Promod GRU v2 full mesh gap report** | [03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md](03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md) — strict per-network gap report for the remaining cW mesh across DODO PMM, Uniswap V2, Balancer, Curve, and other venue surfaces | -| **Chain 138 -> Wemix 1111 bridge completion checklist** | [03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md](03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md) — exact operator checklist for deploying the WEMIX WETH bridges, wiring destinations, funding LINK, and promoting `1111` out of deferred state | +| **Chain 138 -> Wemix 1111 bridge completion checklist** | [03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md](03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md) — exact operator checklist for funding the deployed WEMIX WETH bridges with LINK, proving the lane, and promoting `1111` out of non-live state | | **WEMIX bridge verification status** | [03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md](03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md) — current explorer-publication state for the deployed WEMIX bridges and the repo-native verification command | | **Mr. Promod Uniswap V2 phase 1 execution checklist** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_EXECUTION_CHECKLIST.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_EXECUTION_CHECKLIST.md) — exact chain-by-chain operator checklist for the first full `cWUSDT/cWUSDC` rollout | | **Mr. Promod Uniswap V2 phase 1 funding readiness** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_READINESS.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_READINESS.md) — live deployer-wallet balances and max equal-sided seed size for each `cWUSDT/cWUSDC` target chain | @@ -57,7 +61,7 @@ | **Next steps (concise)** | [00-meta/NEXT_STEPS_LIST.md](00-meta/NEXT_STEPS_LIST.md) — bridge/swap/Phase C status, quick commands | | **Still not done (operator/external)** | [00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md](00-meta/STILL_NOT_DONE_EXECUTION_CHECKLIST.md) | | **Remaining tasks (one page)** | [00-meta/REMAINING_TASKS.md](00-meta/REMAINING_TASKS.md) | -| **Contract next steps (Chain 138)** | [11-references/CONTRACT_NEXT_STEPS_LIST.md](11-references/CONTRACT_NEXT_STEPS_LIST.md) — on-chain check (59 addr), Blockscout, env | +| **Contract next steps (Chain 138)** | [11-references/CONTRACT_NEXT_STEPS_LIST.md](11-references/CONTRACT_NEXT_STEPS_LIST.md) — on-chain check (61 addr), Blockscout, env | | **Task check report (verify before completing)** | [00-meta/TASK_CHECK_REPORT.md](00-meta/TASK_CHECK_REPORT.md) | | **Gaps status (all gap sources + fixes)** | [00-meta/GAPS_STATUS.md](00-meta/GAPS_STATUS.md) | @@ -75,7 +79,7 @@ | Phase C (cW* + edge pools) | [03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md](03-deployment/PHASE_C_CW_AND_EDGE_POOLS_RUNBOOK.md) | — | | Phase D (optional XAU/vaults/trustless) | [03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md](03-deployment/PHASE_D_OPTIONAL_CHECKLIST.md) | — | | Operational runbooks | [03-deployment/OPERATIONAL_RUNBOOKS.md](03-deployment/OPERATIONAL_RUNBOOKS.md) | RUNBOOKS_MASTER_INDEX.md — use OPERATIONAL_RUNBOOKS as single source | -| Contract / address status | [11-references/ADDRESS_MATRIX_AND_STATUS.md](11-references/ADDRESS_MATRIX_AND_STATUS.md), [11-references/CONTRACT_ADDRESSES_REFERENCE.md](11-references/CONTRACT_ADDRESSES_REFERENCE.md), [11-references/CONTRACT_NEXT_STEPS_LIST.md](11-references/CONTRACT_NEXT_STEPS_LIST.md) (59-addr check) | CONTRACT_INVENTORY_AND_VERIFICATION (deleted) | +| Contract / address status | [11-references/ADDRESS_MATRIX_AND_STATUS.md](11-references/ADDRESS_MATRIX_AND_STATUS.md), [11-references/CONTRACT_ADDRESSES_REFERENCE.md](11-references/CONTRACT_ADDRESSES_REFERENCE.md), [11-references/CONTRACT_NEXT_STEPS_LIST.md](11-references/CONTRACT_NEXT_STEPS_LIST.md) (61-addr check) | CONTRACT_INVENTORY_AND_VERIFICATION (deleted) | | **Proxmox VMIDs, LAN IPs, NPM targets** | [04-configuration/ALL_VMIDS_ENDPOINTS.md](04-configuration/ALL_VMIDS_ENDPOINTS.md), [`config/ip-addresses.conf`](../config/ip-addresses.conf), [11-references/NETWORK_CONFIGURATION_MASTER.md](11-references/NETWORK_CONFIGURATION_MASTER.md), [`config/proxmox-operational-template.json`](../config/proxmox-operational-template.json) | Dated inventories under `docs/archive/` (paths on disk only) | | **FQDN → expected content (web / API / RPC)** | [04-configuration/FQDN_EXPECTED_CONTENT.md](04-configuration/FQDN_EXPECTED_CONTENT.md) | — | | **IP conflict resolutions** | [reports/status/IP_CONFLICTS_RESOLUTION_COMPLETE.md](../reports/status/IP_CONFLICTS_RESOLUTION_COMPLETE.md), `scripts/resolve-ip-conflicts.sh` | — | @@ -87,7 +91,7 @@ | Area | Index / key doc | |------|-----------------| | **00-meta** (tasks, next steps, phases) | [00-meta/NEXT_STEPS_INDEX.md](00-meta/NEXT_STEPS_INDEX.md), [00-meta/PHASES_AND_TASKS_MASTER.md](00-meta/PHASES_AND_TASKS_MASTER.md) | -| **02-architecture** | [02-architecture/](02-architecture/) — **Public sector + Phoenix catalog baseline:** [02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md](02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md); **non-goals (incl. catalog vs marketing §9):** [02-architecture/NON_GOALS.md](02-architecture/NON_GOALS.md); **DBIS Chain 138:** [dbis_chain_138_technical_master_plan.md](../dbis_chain_138_technical_master_plan.md), [02-architecture/DBIS_NODE_ROLE_MATRIX.md](02-architecture/DBIS_NODE_ROLE_MATRIX.md), [02-architecture/DBIS_PHASE2_PROXMOX_SOVEREIGNIZATION_ROADMAP.md](02-architecture/DBIS_PHASE2_PROXMOX_SOVEREIGNIZATION_ROADMAP.md) | +| **02-architecture** | [02-architecture/](02-architecture/) — **Public sector + Phoenix catalog baseline:** [02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md](02-architecture/PUBLIC_SECTOR_TENANCY_MARKETPLACE_AND_DEPLOYMENT_BASELINE.md); **non-goals (incl. catalog vs marketing §9):** [02-architecture/NON_GOALS.md](02-architecture/NON_GOALS.md); **DeFi Oracle Meta Mainnet (Chain 138):** [dbis_chain_138_technical_master_plan.md](../dbis_chain_138_technical_master_plan.md), [02-architecture/DBIS_NODE_ROLE_MATRIX.md](02-architecture/DBIS_NODE_ROLE_MATRIX.md), [02-architecture/DBIS_PHASE2_PROXMOX_SOVEREIGNIZATION_ROADMAP.md](02-architecture/DBIS_PHASE2_PROXMOX_SOVEREIGNIZATION_ROADMAP.md) | | **03-deployment** | [03-deployment/OPERATIONAL_RUNBOOKS.md](03-deployment/OPERATIONAL_RUNBOOKS.md), [03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md](03-deployment/DEPLOYMENT_ORDER_OF_OPERATIONS.md), **Public sector live checklist:** [03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md](03-deployment/PUBLIC_SECTOR_LIVE_DEPLOYMENT_CHECKLIST.md), **Proxmox VE ops template:** [03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md](03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md) · [`config/proxmox-operational-template.json`](config/proxmox-operational-template.json); **DBIS Phase 1–3:** [03-deployment/PHASE1_DISCOVERY_RUNBOOK.md](03-deployment/PHASE1_DISCOVERY_RUNBOOK.md), [03-deployment/DBIS_PHASE3_E2E_PRODUCTION_SIMULATION_RUNBOOK.md](03-deployment/DBIS_PHASE3_E2E_PRODUCTION_SIMULATION_RUNBOOK.md), [03-deployment/CALIPER_CHAIN138_PERF_HOOK.md](03-deployment/CALIPER_CHAIN138_PERF_HOOK.md), [03-deployment/DBIS_HYPERLEDGER_RUNTIME_STATUS.md](03-deployment/DBIS_HYPERLEDGER_RUNTIME_STATUS.md), [03-deployment/DBIS_PHASES_1_TO_3_PRODUCTION_GATE.md](03-deployment/DBIS_PHASES_1_TO_3_PRODUCTION_GATE.md), **RTGS canonical production checklist and institutional-finance layers:** [03-deployment/DBIS_RTGS_E2E_REQUIREMENTS_MATRIX.md](03-deployment/DBIS_RTGS_E2E_REQUIREMENTS_MATRIX.md), [03-deployment/DBIS_RTGS_FX_TRANSACTION_CATALOG.md](03-deployment/DBIS_RTGS_FX_TRANSACTION_CATALOG.md), [03-deployment/DBIS_RTGS_DEPOSITORY_AND_CUSTODY_OPERATING_MODEL.md](03-deployment/DBIS_RTGS_DEPOSITORY_AND_CUSTODY_OPERATING_MODEL.md), [03-deployment/DBIS_RTGS_FX_AND_LIQUIDITY_OPERATING_MODEL.md](03-deployment/DBIS_RTGS_FX_AND_LIQUIDITY_OPERATING_MODEL.md), [03-deployment/DBIS_RTGS_CONTROL_PLANE_DEPLOYMENT_CHECKLIST.md](03-deployment/DBIS_RTGS_CONTROL_PLANE_DEPLOYMENT_CHECKLIST.md), [03-deployment/DBIS_RTGS_LATER_PHASE_SIDECARS_DEPLOYMENT_CHECKLIST.md](03-deployment/DBIS_RTGS_LATER_PHASE_SIDECARS_DEPLOYMENT_CHECKLIST.md), [03-deployment/DBIS_OMNL_INDONESIA_BNI_E2E_INTEGRATION_BLUEPRINT.md](03-deployment/DBIS_OMNL_INDONESIA_BNI_E2E_INTEGRATION_BLUEPRINT.md), [03-deployment/DBIS_RTGS_FIRST_SLICE_ARCHITECTURE.md](03-deployment/DBIS_RTGS_FIRST_SLICE_ARCHITECTURE.md), [03-deployment/DBIS_RTGS_FIRST_SLICE_DEPLOYMENT_CHECKLIST.md](03-deployment/DBIS_RTGS_FIRST_SLICE_DEPLOYMENT_CHECKLIST.md), [03-deployment/DBIS_HYBX_SIDECAR_BOUNDARY_MATRIX.md](03-deployment/DBIS_HYBX_SIDECAR_BOUNDARY_MATRIX.md), [03-deployment/DBIS_MOJALOOP_INTEGRATION_STATUS.md](03-deployment/DBIS_MOJALOOP_INTEGRATION_STATUS.md), [03-deployment/DBIS_HYPERLEDGER_IDENTITY_STACK_DECISION.md](03-deployment/DBIS_HYPERLEDGER_IDENTITY_STACK_DECISION.md) | | **04-configuration** | [04-configuration/README.md](04-configuration/README.md), [04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md](04-configuration/ADDITIONAL_PATHS_AND_EXTENSIONS.md) (paths, registry, token-mapping, LiFi/Jumper); **Chain 138 wallets:** [04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md](04-configuration/CHAIN138_WALLET_CONFIG_VALIDATION.md); **Chain 2138 testnet wallets:** [04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md](04-configuration/CHAIN2138_WALLET_CONFIG_VALIDATION.md); **OMNL Indonesia / HYBX-BATCH-001:** [04-configuration/mifos-omnl-central-bank/HYBX_BATCH_001_OPERATOR_CHECKLIST.md](04-configuration/mifos-omnl-central-bank/HYBX_BATCH_001_OPERATOR_CHECKLIST.md), [04-configuration/mifos-omnl-central-bank/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md](04-configuration/mifos-omnl-central-bank/INDONESIA_PACKAGE_4_995_EVIDENCE_STANDARD.md) | | **06-besu** | [06-besu/MASTER_INDEX.md](06-besu/MASTER_INDEX.md) | @@ -99,6 +103,15 @@ --- +## Current decision docs + +| Topic | Document | +|-------|----------| +| **Vault shard custody policy decision** | [04-configuration/VAULT_SHARD_CUSTODY_POLICY.md](04-configuration/VAULT_SHARD_CUSTODY_POLICY.md) | +| **Multi-chain rotation rollout order** | [runbooks/MULTI_CHAIN_ROTATION_ROLLOUT_ORDER_MEMO.md](runbooks/MULTI_CHAIN_ROTATION_ROLLOUT_ORDER_MEMO.md) | + +--- + ## Deprecated / superseded (do not use as primary source) | Document | Use instead | diff --git a/docs/archive/completion/CLOUDFLARED_UPDATE_COMPLETE.md b/docs/archive/completion/CLOUDFLARED_UPDATE_COMPLETE.md index 069da615..17eebc59 100644 --- a/docs/archive/completion/CLOUDFLARED_UPDATE_COMPLETE.md +++ b/docs/archive/completion/CLOUDFLARED_UPDATE_COMPLETE.md @@ -70,7 +70,7 @@ curl -X POST https://rpc-http-pub.d-bis.org \ 1. **Remove existing network** in MetaMask (if previously added) 2. **Add network manually**: - - Network Name: `Defi Oracle Meta Mainnet` + - Network Name: `DeFi Oracle Meta Mainnet` - RPC URL: `https://rpc-http-pub.d-bis.org` - Chain ID: `138` - Currency Symbol: `ETH` diff --git a/docs/archive/completion/FINAL_BRIDGE_VERIFICATION_COMPLETE.md b/docs/archive/completion/FINAL_BRIDGE_VERIFICATION_COMPLETE.md index 752e80ce..f7f74257 100644 --- a/docs/archive/completion/FINAL_BRIDGE_VERIFICATION_COMPLETE.md +++ b/docs/archive/completion/FINAL_BRIDGE_VERIFICATION_COMPLETE.md @@ -15,7 +15,7 @@ **Source**: [thirdweb Chainlist](https://thirdweb.com/chainlist?query=138) **Chain Details**: -- Name: Defi Oracle Meta Mainnet +- Name: DeFi Oracle Meta Mainnet - Chain ID: 138 - Native Token: ETH - Bridge Service: ✅ Available diff --git a/docs/archive/completion/THIRDWEB_BRIDGE_FINAL_SUMMARY.md b/docs/archive/completion/THIRDWEB_BRIDGE_FINAL_SUMMARY.md index bb89592f..4be66479 100644 --- a/docs/archive/completion/THIRDWEB_BRIDGE_FINAL_SUMMARY.md +++ b/docs/archive/completion/THIRDWEB_BRIDGE_FINAL_SUMMARY.md @@ -11,7 +11,7 @@ ### ChainID 138 IS Supported by thirdweb Bridge! **Verified Sources**: -- ✅ [thirdweb Chainlist](https://thirdweb.com/chainlist?query=138) - ChainID 138 listed as "Defi Oracle Meta Mainnet" +- ✅ [thirdweb Chainlist](https://thirdweb.com/chainlist?query=138) - ChainID 138 listed as "DeFi Oracle Meta Mainnet" - ✅ [Defi Oracle Meta Page](https://thirdweb.com/defi-oracle-meta) - Bridge service confirmed - ✅ Credentials configured and working @@ -68,7 +68,7 @@ npm install @thirdweb-dev/react @thirdweb-dev/sdk 1. Go to Bridge tab in project dashboard 2. Settings → "Don't see your token listed?" 3. Submit: - - Chain: Defi Oracle Meta Mainnet (138) + - Chain: DeFi Oracle Meta Mainnet (138) - Token: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` 4. Wait 20-40 minutes for route discovery @@ -92,7 +92,7 @@ npm install @thirdweb-dev/react @thirdweb-dev/sdk ## References - [thirdweb Chainlist - ChainID 138](https://thirdweb.com/chainlist?query=138) -- [Defi Oracle Meta Mainnet](https://thirdweb.com/defi-oracle-meta) +- [DeFi Oracle Meta Mainnet](https://thirdweb.com/defi-oracle-meta) - [Bridge FAQ](https://portal.thirdweb.com/bridge/faq) - [Bridge Widget Documentation](https://portal.thirdweb.com/bridge/widget) diff --git a/docs/archive/fixes/METAMASK_RPC_CHAIN_ID_ERROR_FIX.md b/docs/archive/fixes/METAMASK_RPC_CHAIN_ID_ERROR_FIX.md index 13b06467..da51525d 100644 --- a/docs/archive/fixes/METAMASK_RPC_CHAIN_ID_ERROR_FIX.md +++ b/docs/archive/fixes/METAMASK_RPC_CHAIN_ID_ERROR_FIX.md @@ -37,7 +37,7 @@ The most common cause is that the RPC endpoint is requiring **JWT authentication 1. Open MetaMask 2. Click the network dropdown (top center) 3. Click "Settings" (gear icon) or go to Settings → Networks -4. Find "Defi Oracle Meta Mainnet" or "SMOM-DBIS-138" +4. Find "DeFi Oracle Meta Mainnet" or "SMOM-DBIS-138" 5. Click "Delete" or "Remove" to remove the network ### Step 2: Add Network with Correct RPC URL @@ -46,7 +46,7 @@ The most common cause is that the RPC endpoint is requiring **JWT authentication 2. Enter these **exact** values: ``` - Network Name: Defi Oracle Meta Mainnet + Network Name: DeFi Oracle Meta Mainnet RPC URL: https://rpc-http-pub.d-bis.org Chain ID: 138 Currency Symbol: ETH diff --git a/docs/archive/fixes/METAMASK_WETH9_FIX_INSTRUCTIONS.md b/docs/archive/fixes/METAMASK_WETH9_FIX_INSTRUCTIONS.md index 8a15787f..f79bb30d 100644 --- a/docs/archive/fixes/METAMASK_WETH9_FIX_INSTRUCTIONS.md +++ b/docs/archive/fixes/METAMASK_WETH9_FIX_INSTRUCTIONS.md @@ -27,7 +27,7 @@ Since the contract's `decimals()` function is incorrect, you need to manually sp ### Step-by-Step Instructions 1. **Open MetaMask** - - Make sure you're connected to "Defi Oracle Meta Mainnet" (ChainID 138) + - Make sure you're connected to "DeFi Oracle Meta Mainnet" (ChainID 138) 2. **Go to Import Tokens** - Click on the token list (where you see "Wrapped Ether") diff --git a/docs/archive/fixes/THIRDWEB_BRIDGE_CORRECTED_ANALYSIS.md b/docs/archive/fixes/THIRDWEB_BRIDGE_CORRECTED_ANALYSIS.md index f5e4a66f..e54d5baf 100644 --- a/docs/archive/fixes/THIRDWEB_BRIDGE_CORRECTED_ANALYSIS.md +++ b/docs/archive/fixes/THIRDWEB_BRIDGE_CORRECTED_ANALYSIS.md @@ -25,7 +25,7 @@ ### ChainID 138 on thirdweb **Chain Details**: -- **Name**: Defi Oracle Meta Mainnet +- **Name**: DeFi Oracle Meta Mainnet - **Chain ID**: 138 - **Native Token**: ETH - **Available Services**: 1 @@ -108,7 +108,7 @@ According to [Bridge FAQ](https://portal.thirdweb.com/bridge/faq): 1. Go to Bridge tab in project dashboard 2. Settings → "Don't see your token listed?" 3. Submit: - - **Chain**: Defi Oracle Meta Mainnet (138) + - **Chain**: DeFi Oracle Meta Mainnet (138) - **Token Address**: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` 4. Wait 20-40 minutes for route discovery @@ -127,7 +127,7 @@ According to [Bridge FAQ](https://portal.thirdweb.com/bridge/faq): **What Works**: - ✅ ChainID 138 is supported by thirdweb Bridge -- ✅ Bridge service available for Defi Oracle Meta Mainnet +- ✅ Bridge service available for DeFi Oracle Meta Mainnet - ✅ Credentials configured and working - ✅ RPC endpoint available @@ -185,7 +185,7 @@ If WETH not recognized: ### ✅ Corrected Understanding -1. **ChainID 138 IS Supported**: ✅ Listed as "Defi Oracle Meta Mainnet" +1. **ChainID 138 IS Supported**: ✅ Listed as "DeFi Oracle Meta Mainnet" 2. **Bridge Service Available**: ✅ Confirmed on thirdweb website 3. **Use Bridge Widget**: ✅ Recommended approach 4. **Credentials Ready**: ✅ Already configured @@ -201,7 +201,7 @@ If WETH not recognized: ## References - [thirdweb Chainlist - ChainID 138](https://thirdweb.com/chainlist?query=138) -- [Defi Oracle Meta Mainnet](https://thirdweb.com/defi-oracle-meta) +- [DeFi Oracle Meta Mainnet](https://thirdweb.com/defi-oracle-meta) - [Bridge FAQ](https://portal.thirdweb.com/bridge/faq) - [Bridge Widget Docs](https://portal.thirdweb.com/bridge/widget) diff --git a/docs/archive/historical/METAMASK_WETH9_DISPLAY_BUG.md b/docs/archive/historical/METAMASK_WETH9_DISPLAY_BUG.md index 937e5277..a49f3d55 100644 --- a/docs/archive/historical/METAMASK_WETH9_DISPLAY_BUG.md +++ b/docs/archive/historical/METAMASK_WETH9_DISPLAY_BUG.md @@ -3,7 +3,7 @@ **Date**: $(date) **Issue**: MetaMask displaying "6,000,000,000.0T WETH" instead of "6 WETH" **Contract**: WETH9 (`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`) -**Network**: Defi Oracle Meta Mainnet (ChainID 138) +**Network**: DeFi Oracle Meta Mainnet (ChainID 138) --- @@ -147,7 +147,7 @@ If WETH9 cannot be fixed, consider: - Should verify actual ETH balance - May be another display formatting issue -2. **Network Name**: "Defi Oracle Meta Mainnet" +2. **Network Name**: "DeFi Oracle Meta Mainnet" - This is ChainID 138 - Network configuration appears correct diff --git a/docs/archive/historical/SOLACESCANSCOUT_COMPREHENSIVE_RECOMMENDATIONS.md b/docs/archive/historical/SOLACESCANSCOUT_COMPREHENSIVE_RECOMMENDATIONS.md index 7f781976..3fbdbbde 100644 --- a/docs/archive/historical/SOLACESCANSCOUT_COMPREHENSIVE_RECOMMENDATIONS.md +++ b/docs/archive/historical/SOLACESCANSCOUT_COMPREHENSIVE_RECOMMENDATIONS.md @@ -1,7 +1,7 @@ # SolaceScanScout - Comprehensive Recommendations & Suggestions **Date**: $(date) -**Project**: SolaceScanScout - The Defi Oracle Meta Explorer +**Project**: SolaceScanScout - The DeFi Oracle Meta Explorer **Status**: Review & Recommendations --- @@ -15,7 +15,7 @@ This document provides comprehensive recommendations for SolaceScanScout across ## 1. 🎨 Branding & Consistency ### Current Status -- ✅ Frontend HTML updated to "SolaceScanScout | The Defi Oracle Meta Explorer" +- ✅ Frontend HTML updated to "SolaceScanScout | The DeFi Oracle Meta Explorer" - ✅ Logo updated in navigation - ⚠️ Some legacy references remain @@ -57,9 +57,9 @@ This document provides comprehensive recommendations for SolaceScanScout across # SolaceScanScout Branding Guide ## Name Usage -- Full Name: "SolaceScanScout - The Defi Oracle Meta Explorer" +- Full Name: "SolaceScanScout - The DeFi Oracle Meta Explorer" - Short Name: "SolaceScanScout" -- Tagline: "The Defi Oracle Meta Explorer" +- Tagline: "The DeFi Oracle Meta Explorer" ## Logo Guidelines - Primary logo: [Design needed] @@ -78,9 +78,9 @@ This document provides comprehensive recommendations for SolaceScanScout across **Update HTML Meta Tags**: ```html - + - + @@ -1027,7 +1027,7 @@ openapi: 3.0.0 info: title: SolaceScanScout API version: 1.0.0 - description: The Defi Oracle Meta Explorer API + description: The DeFi Oracle Meta Explorer API paths: /api/v1/blocks/{number}: diff --git a/docs/archive/historical/SOLACESCANSCOUT_IMPLEMENTATION_SUMMARY.md b/docs/archive/historical/SOLACESCANSCOUT_IMPLEMENTATION_SUMMARY.md index e44fce4f..e31d7f6a 100644 --- a/docs/archive/historical/SOLACESCANSCOUT_IMPLEMENTATION_SUMMARY.md +++ b/docs/archive/historical/SOLACESCANSCOUT_IMPLEMENTATION_SUMMARY.md @@ -2,7 +2,7 @@ ## Overview -This document summarizes all the improvements and implementations completed for SolaceScanScout - The Defi Oracle Meta Explorer. +This document summarizes all the improvements and implementations completed for SolaceScanScout - The DeFi Oracle Meta Explorer. ## Completed Implementations diff --git a/docs/archive/historical/SOLACESCANSCOUT_QUICK_ACTIONS.md b/docs/archive/historical/SOLACESCANSCOUT_QUICK_ACTIONS.md index 3cc521e2..0a4552ed 100644 --- a/docs/archive/historical/SOLACESCANSCOUT_QUICK_ACTIONS.md +++ b/docs/archive/historical/SOLACESCANSCOUT_QUICK_ACTIONS.md @@ -82,7 +82,7 @@ w.Header().Set("Strict-Transport-Security", "max-age=31536000") ```html - + ``` diff --git a/docs/archive/historical/THIRDWEB_BRIDGE_CHAIN138_SUPPORTED.md b/docs/archive/historical/THIRDWEB_BRIDGE_CHAIN138_SUPPORTED.md index 973f5b12..dbb36ec6 100644 --- a/docs/archive/historical/THIRDWEB_BRIDGE_CHAIN138_SUPPORTED.md +++ b/docs/archive/historical/THIRDWEB_BRIDGE_CHAIN138_SUPPORTED.md @@ -13,7 +13,7 @@ **Source**: [thirdweb Chainlist](https://thirdweb.com/chainlist?query=138) **Chain Details**: -- **Name**: Defi Oracle Meta Mainnet +- **Name**: DeFi Oracle Meta Mainnet - **Chain ID**: 138 - **Native Token**: ETH - **Available Services**: 1 @@ -33,7 +33,7 @@ **Previous Test**: Used `/v1/bridge/chains` endpoint which may not include all chains **Actual Support**: ChainID 138 is supported via thirdweb Bridge service, but may be: -1. Listed under "Defi Oracle Meta Mainnet" name +1. Listed under "DeFi Oracle Meta Mainnet" name 2. Available through Bridge widget/UI rather than direct API 3. Using different API endpoint structure @@ -70,7 +70,7 @@ ### ✅ What's Actually True -1. **ChainID 138 IS Supported**: ✅ Listed as "Defi Oracle Meta Mainnet" +1. **ChainID 138 IS Supported**: ✅ Listed as "DeFi Oracle Meta Mainnet" 2. **Bridge Service Available**: ✅ "Bridge assets to and from Defi Oracle Meta" 3. **RPC Endpoint**: ✅ `https://138.rpc.thirdweb.com` 4. **Credentials Configured**: ✅ Working @@ -101,7 +101,7 @@ 2. Bridge → Settings 3. "Don't see your token listed?" 4. Submit: - - Chain: Defi Oracle Meta Mainnet (138) + - Chain: DeFi Oracle Meta Mainnet (138) - Token: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` - Wait 20-40 minutes @@ -132,7 +132,7 @@ import { Bridge } from "@thirdweb-dev/react"; **What Changed**: - ✅ ChainID 138 is listed in thirdweb chainlist -- ✅ Bridge service available for Defi Oracle Meta Mainnet +- ✅ Bridge service available for DeFi Oracle Meta Mainnet - ✅ RPC endpoint available: `https://138.rpc.thirdweb.com` **Remaining Questions**: @@ -167,7 +167,7 @@ import { Bridge } from "@thirdweb-dev/react"; ## References - [thirdweb Chainlist - ChainID 138](https://thirdweb.com/chainlist?query=138) -- [Defi Oracle Meta Mainnet](https://thirdweb.com/defi-oracle-meta) +- [DeFi Oracle Meta Mainnet](https://thirdweb.com/defi-oracle-meta) - [Bridge FAQ](https://portal.thirdweb.com/bridge/faq) - [Bridge Widget Documentation](https://portal.thirdweb.com/bridge/widget) diff --git a/docs/dbis-rail/DBIS_RAIL_AND_PROJECT_COMPLETION_MASTER_V1.md b/docs/dbis-rail/DBIS_RAIL_AND_PROJECT_COMPLETION_MASTER_V1.md index 3bc85d77..0a720813 100644 --- a/docs/dbis-rail/DBIS_RAIL_AND_PROJECT_COMPLETION_MASTER_V1.md +++ b/docs/dbis-rail/DBIS_RAIL_AND_PROJECT_COMPLETION_MASTER_V1.md @@ -131,7 +131,7 @@ Every task below is to be completed; optional items are explicitly marked so pri | # | Task | Evidence / reference | |---|------|----------------------| -| F1 | Update chain metadata so "DBIS Mainnet (Chain 138)" is the authoritative public identity (e.g. eip155-138.json, ChainList, explorer branding, token list name). | Regulator Brief; prior DBIS identity discussion. | +| F1 | Update chain metadata so "DeFi Oracle Meta Mainnet" is the authoritative public identity (e.g. eip155-138.json, ChainList, explorer branding, token list name). | Regulator Brief; prior DBIS identity discussion. | | F2 | Publish Regulator Brief (or Public Overview) as standalone PDF for examiners and counterparties. | Regulator Brief v1; optional Public Overview. | --- diff --git a/docs/dbis-rail/DBIS_RAIL_TECHNICAL_SPEC_V1.md b/docs/dbis-rail/DBIS_RAIL_TECHNICAL_SPEC_V1.md index 088d5c78..9fa912bc 100644 --- a/docs/dbis-rail/DBIS_RAIL_TECHNICAL_SPEC_V1.md +++ b/docs/dbis-rail/DBIS_RAIL_TECHNICAL_SPEC_V1.md @@ -438,7 +438,7 @@ If you want "retry safe" behavior: ### Naming/identity alignment -* Update chain metadata artifacts so canonical identity is DBIS Mainnet (Chain 138). +* Update chain metadata artifacts so canonical identity is DeFi Oracle Meta Mainnet. * Keep a compatibility alias field if needed, but ensure DBIS is primary. --- diff --git a/docs/dbis-rail/E2E_WHITEPAPER_SIMPLE.md b/docs/dbis-rail/E2E_WHITEPAPER_SIMPLE.md index 8202d187..5c429318 100644 --- a/docs/dbis-rail/E2E_WHITEPAPER_SIMPLE.md +++ b/docs/dbis-rail/E2E_WHITEPAPER_SIMPLE.md @@ -153,6 +153,6 @@ The DBIS Rail turns **compliant, ledger-anchored banking instructions** into **o | Field | Value | |-------|--------| | Title | DBIS Rail — End-to-End White Paper (Simple Terms) | -| Network | DBIS Mainnet (Chain 138) | +| Network | DeFi Oracle Meta Mainnet | | Audience | General technical and business readers | | Companion docs | Technical Spec v1, Rulebook v1, Regulator Brief v1, ISO Gateway & Relayer Spec | diff --git a/docs/runbooks/MAINNET_CWUSDC_USDC_PREFLIGHT_RUNBOOK.md b/docs/runbooks/MAINNET_CWUSDC_USDC_PREFLIGHT_RUNBOOK.md new file mode 100644 index 00000000..1d8651e5 --- /dev/null +++ b/docs/runbooks/MAINNET_CWUSDC_USDC_PREFLIGHT_RUNBOOK.md @@ -0,0 +1,92 @@ +# Mainnet cWUSDC/USDC Preflight Runbook + +**Purpose:** Capture a read-only snapshot of the Mainnet `cWUSDC/USDC` rail before the first rebalance / peg-defense cycle. +**Scope:** Public Uniswap V2 discovery pair, defended DODO PMM venue, treasury-manager quote availability, receiver surplus, and defended-lane quote sizing inputs. +**Safety:** Read-only only. No broadcasts, no state writes, no liquidity moves. + +## What this captures + +- Public pair reserves and current price drift +- Defended DODO PMM reserves and mid-price drift +- Policy decision from the health checker +- Treasury-manager quote balance and available quote +- Receiver quote balance and sweepable quote +- `querySellQuote` outputs for the current policy tranches + +## Prereqs + +- `cast` installed +- `python3` installed +- Mainnet RPC available through `ETHEREUM_MAINNET_RPC` +- Optional but recommended: + - `QUOTE_PUSH_TREASURY_MANAGER_MAINNET` + - `AAVE_QUOTE_PUSH_RECEIVER_MAINNET` + +The wrapper loads env from the repo root `.env` and `smom-dbis-138/.env` through [load-project-env.sh](/home/intlc/projects/proxmox/scripts/lib/load-project-env.sh:1). + +## Command + +Run from the repo root: + +```bash +bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh +``` + +## Artifacts + +The command writes: + +- `reports/status/mainnet-cwusdc-usdc-preflight-.json` +- `reports/status/mainnet-cwusdc-usdc-preflight-latest.json` + +The latest file is the easiest input for the first rebalance decision. + +## What to inspect + +Use the summary printed by the wrapper first, then open the JSON if something looks off. + +Required checks: + +- `summary.publicPairDeviationBps` +- `summary.publicPairBaseReserveUnits` +- `summary.publicPairQuoteReserveUnits` +- `summary.defendedMidPrice` +- `summary.managerAvailableQuoteUnits` +- `summary.receiverSweepableQuoteUnits` +- `summary.decisionSeverity` +- `summary.decisionAction` +- `summary.flashQuoteAmountRaw` + +Deep checks in the JSON: + +- `health.publicPairHealth` +- `health.defendedVenueHealth` +- `treasuryManager` +- `receiver` +- `defendedLaneQuotes` +- `warnings` + +## Decision gate before first rebalance + +Do not run the first rebalance cycle until all of these are true: + +- `health.publicPairHealth.live` is `true` +- `health.defendedVenueHealth.live` is `true` +- `warnings` is empty, or every warning is understood and accepted +- `summary.flashQuoteAmountRaw` is non-zero if intervention is expected +- `treasuryManager.isReceiverOwnedByManager` is `true` when using the managed cycle +- `summary.managerAvailableQuoteUnits` is enough for planned gas holdback / recycle handling + +## Related commands + +Health-only decision: + +```bash +python3 scripts/verify/check-mainnet-cwusdc-usdc-support-health.py +``` + +Managed-cycle simulation after preflight: + +```bash +bash scripts/maintenance/run-mainnet-cwusdc-usdc-support.sh --health-only +``` diff --git a/docs/runbooks/MAINNET_CWUSDC_USDC_REPEG_RUNBOOK.md b/docs/runbooks/MAINNET_CWUSDC_USDC_REPEG_RUNBOOK.md new file mode 100644 index 00000000..91f33ecf --- /dev/null +++ b/docs/runbooks/MAINNET_CWUSDC_USDC_REPEG_RUNBOOK.md @@ -0,0 +1,83 @@ +# Mainnet cWUSDC/USDC Repeg Runbook + +**Purpose:** Turn the latest read-only preflight into an exact inventory plan for restoring the Mainnet `cWUSDC/USDC` rail toward `1:1`. +**Scope:** Defended DODO PMM reserve-gap sizing, public Uniswap V2 floor shortfalls, treasury-manager funding needs, and copy-paste operator commands. +**Safety:** The planner is read-only. It does not broadcast or move funds. + +## What this planner answers + +- How far the defended PMM is from simple `1:1` reserve parity +- How much USDC is needed to fund one max-sized automated defense cycle +- How far the public pair is below the current policy floor +- Whether the current operator wallet can cover any of those gaps +- Exact commands to fund the manager, top up the defended PMM, and reseed the public pair once inventory exists + +## Prereqs + +- Run the preflight first: + +```bash +bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh +``` + +- `cast` installed +- `python3` installed +- `ETHEREUM_MAINNET_RPC` available +- Optional but useful: + - `PRIVATE_KEY` or `KEEPER_PRIVATE_KEY` so the planner can inspect the current operator wallet + +## Command + +Run from the repo root: + +```bash +bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh +``` + +## Artifacts + +The wrapper writes: + +- `reports/status/mainnet-cwusdc-usdc-repeg-plan-.json` +- `reports/status/mainnet-cwusdc-usdc-repeg-plan-latest.json` + +## Key fields to inspect + +- `defendedVenue.simpleReserveParity.addQuoteUnits` +- `automation.managerFundingForOneMaxCycle.shortfallUnits` +- `publicLane.policyFloorBaseShortfallUnits` +- `publicLane.policyFloorQuoteShortfallUnits` +- `holderState` +- `holderFundingChecks` +- `blockers` +- `operatorCommands` + +## Interpretation notes + +- The defended-pool `1:1` number is an inference from matched 6-decimal tokens and equal reserve targets. +- DODO PMM price can still differ from reserve ratio because the PMM curve is not a constant-product pool. +- Re-run the preflight after every liquidity move. Treat the planner as a live calculator, not a one-time document. + +## Operator sequence once funding exists + +1. Fund the treasury manager with at least one max-sized automated tranche. +Use `operatorCommands.fundManagerUsdc`. + +2. Sell the planned USDC amount into the defended PMM. +Use `operatorCommands.tradeDefendedPoolQuoteIn`. + +3. Reseed the public pair to at least the current policy floor if public routing / discovery should be healthy again. +Use `operatorCommands.reseedPublicPair`. + +4. Re-run both read-only checks. + +```bash +bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh +bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh +``` + +5. Only after the defended lane is re-funded should you consider a managed quote-push cycle. + +```bash +bash scripts/maintenance/run-mainnet-cwusdc-usdc-support.sh --health-only +``` diff --git a/docs/runbooks/MULTI_CHAIN_ROTATION_ROLLOUT_ORDER_MEMO.md b/docs/runbooks/MULTI_CHAIN_ROTATION_ROLLOUT_ORDER_MEMO.md new file mode 100644 index 00000000..fc5c9b2a --- /dev/null +++ b/docs/runbooks/MULTI_CHAIN_ROTATION_ROLLOUT_ORDER_MEMO.md @@ -0,0 +1,147 @@ +# Multi-Chain Rotation Rollout Order Memo + +**Last Updated:** 2026-04-18 +**Status:** Proposed decision draft for approve/revise +**Scope:** Ordering for Chain 138 and follow-on per-chain admin-rotation work + +--- + +## 1. Purpose + +This memo recommends the rollout order for the staged admin-rotation work so the next decision is a simple approve/revise call instead of an open-ended planning discussion. + +--- + +## 2. Recommendation + +Use a **serial canary rollout**, not a fully parallel rollout. + +Recommended order: + +1. **Chain 138 first** +2. **Ethereum mainnet second** +3. **Remaining production chains in risk-ranked waves** + +This gives us one internal canary and one public/mainnet canary before we multiply coordination and incident surface area. + +--- + +## 3. Why This Order + +### 3.1 Chain 138 first + +Chain 138 is the correct first execution environment because: + +- the new Forge rotation scripts already exist there; +- the current work is explicitly scoped and reviewable; +- it is the best place to validate operator muscle memory before public-chain repetition; +- it lets us prove the Safe target, ceremony steps, verification steps, and rollback notes in one contained place. + +### 3.2 Ethereum mainnet second + +Ethereum mainnet should be the first follow-on public chain because: + +- it has the highest governance and reputational weight; +- success there validates the public-facing pattern reviewers will expect on the other chains; +- it is a better second canary than attempting many lower-priority chains in parallel. + +### 3.3 Do not start parallel live rotations yet + +Parallel live rotations increase the chance of: + +- admin-address mismatch between docs, env, and on-chain execution; +- signer-coordination failures; +- incomplete verification notes; +- inconsistent lessons learned being copied into later chains. + +Parallel PR drafting is fine. Parallel live execution is not recommended for the first wave. + +--- + +## 4. Proposed Wave Plan + +### Wave 0: Governance prerequisites + +Complete these before any live rotation: + +- approve `VAULT_SHARD_CUSTODY_POLICY.md §3`; +- choose and create `NEW_ADMIN_ADDRESS` as a Chain 138 Safe; +- confirm signer roster and Safe threshold; +- identify the Gitea admin owner for Phase 2 branch-protection and force-push coordination. + +### Wave 1: Chain 138 + +Deliverables: + +- review and merge the Chain 138 Forge-script PR; +- run the non-broadcast verification path; +- execute Stage 1 and Stage 2 only after change approval; +- run `VerifyChain138RotationComplete`; +- record exact post-rotation outputs, tx hashes, and rollback notes. + +Exit criteria: + +- new Safe confirmed as admin on-chain; +- old admin path retired or explicitly documented as no longer authoritative; +- operator runbook updated with anything learned during execution. + +### Wave 2: Ethereum mainnet + +Deliverables: + +- open the per-chain Forge PR using the Chain 138 pattern; +- reuse the same decision language and verification structure; +- run a second full ceremony with the same custody policy and Safe-first control plane. + +Exit criteria: + +- no material runbook deltas discovered late in execution; +- verification checklist passes without ad hoc steps; +- signers confirm the process is repeatable. + +### Wave 3: Remaining chains + +After Waves 1 and 2 succeed, continue in risk-ranked sequence: + +1. chains with the highest treasury, admin, or routing importance; +2. chains with the most mature monitoring and explorer visibility; +3. long-tail or lower-value chains last. + +At that point, limited parallelism may be acceptable for **PR preparation** and possibly for **execution** if the same signer set is not overloaded and the verification path is already proven. + +--- + +## 5. Recommended Decision on “Mainnet First or Parallel?” + +**Recommendation:** neither. + +Do **Chain 138 first**, then **mainnet**, then the rest. + +That is better than “mainnet first” because the current scripts and review context are already centered on Chain 138. It is better than “parallel” because we have not yet validated the live ceremony under the new custody and Safe model. + +--- + +## 6. Approve / Revise Checklist + +Approve if you agree with all of the following: + +- first live rotation is **Chain 138**; +- second live rotation is **Ethereum mainnet**; +- other-chain PRs may be drafted in parallel, but not executed live in parallel yet; +- broad parallel live execution is deferred until after two successful canaries. + +Revise if you want to change: + +- the second chain after Chain 138; +- whether Wave 3 permits partial parallel execution; +- the chain-ranking criteria for the remaining waves. + +--- + +## 7. Recommendation + +Approve the rollout order as: + +`Wave 0 prerequisites -> Chain 138 -> Ethereum mainnet -> remaining chains in risk-ranked waves` + +This is the lowest-risk path that still keeps momentum high, preserves review clarity, and turns Chain 138 into the template for every per-chain follow-up PR. diff --git a/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md b/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md index 172d7de8..8f2b0c8d 100644 --- a/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md +++ b/docs/testnet/DEFI_ORACLE_META_TESTNET_2138_RUNBOOK.md @@ -1,8 +1,8 @@ -# Defi Oracle Meta Testnet (Chain ID 2138) — Runbook +# DeFi Oracle Meta Testnet (Chain ID 2138) — Runbook **Last Updated:** 2026-03-27 **Status:** Active -**Purpose:** Map creation and deployment of **Defi Oracle Meta Testnet** (EIP-155 chain ID **2138**) to this repository’s layouts, scripts, and docs. Use alongside mainnet Chain 138 material as a parallel path. +**Purpose:** Map creation and deployment of **DeFi Oracle Meta Testnet** (EIP-155 chain ID **2138**) to this repository’s layouts, scripts, and docs. Use alongside mainnet Chain 138 material as a parallel path. --- diff --git a/docs/testnet/TESTNET_DEPLOYMENT.md b/docs/testnet/TESTNET_DEPLOYMENT.md index 6b61b55d..17927d88 100644 --- a/docs/testnet/TESTNET_DEPLOYMENT.md +++ b/docs/testnet/TESTNET_DEPLOYMENT.md @@ -8,7 +8,7 @@ --- -## Defi Oracle Meta Testnet (chain ID 2138) +## DeFi Oracle Meta Testnet (chain ID 2138) For **this project’s** L1 testnet (EIP-155 chain ID **2138**, CAIP-2 `eip155:2138`), use the mapped runbook: diff --git a/forge-verification-proxy/server.js b/forge-verification-proxy/server.js index 843e478a..442c3425 100644 --- a/forge-verification-proxy/server.js +++ b/forge-verification-proxy/server.js @@ -362,7 +362,8 @@ const server = http.createServer(async (req, res) => { result = await forwardV2Flattened(payload); out = toEtherscanResponse(result); if (out.status !== '1') { - console.error('[forge-verification-proxy] v2 API failed:', out.message, '- trying Etherscan format...'); + // Expected: Blockscout v2 often returns non-1 for flattened; Etherscan-compat path succeeds. + console.log('[forge-verification-proxy] v2 API fallback:', (out.message || '').slice(0, 120), '→ Etherscan-compat…'); result = await forwardEtherscanFormat(payload); const etherOut = toEtherscanResponse(result); send(res, 200, etherOut.status === '1' ? etherOut : out); @@ -372,7 +373,7 @@ const server = http.createServer(async (req, res) => { result = await forwardV2StandardInput(payload); out = toEtherscanResponse(result); if (out.status !== '1') { - console.error('[forge-verification-proxy] v2 standard-input failed:', out.message, '- trying Etherscan format...'); + console.log('[forge-verification-proxy] v2 standard-input fallback → Etherscan-compat…', (out.message || '').slice(0, 120)); result = await forwardEtherscanFormat(payload); const etherOut = toEtherscanResponse(result); send(res, 200, etherOut.status === '1' ? etherOut : out); diff --git a/mcp-proxmox b/mcp-proxmox index 3cd98f97..b2fde60e 160000 --- a/mcp-proxmox +++ b/mcp-proxmox @@ -1 +1 @@ -Subproject commit 3cd98f979a37952eb98eb09a55e0a1366dc599cb +Subproject commit b2fde60eeea5ac1e980309d909412463d4465b8d diff --git a/metamask-integration b/metamask-integration index 7e5f65a0..265b96e0 160000 --- a/metamask-integration +++ b/metamask-integration @@ -1 +1 @@ -Subproject commit 7e5f65a0863578c83c5f309a49014134d2b9fb51 +Subproject commit 265b96e0ca84b75e55e12469f8793871aaaa6d3c diff --git a/phoenix-deploy-api/.env.example b/phoenix-deploy-api/.env.example index 41cbfa08..2422f8a9 100644 --- a/phoenix-deploy-api/.env.example +++ b/phoenix-deploy-api/.env.example @@ -4,6 +4,7 @@ PORT=4001 GITEA_URL=https://gitea.d-bis.org GITEA_TOKEN= PHOENIX_DEPLOY_SECRET= +PHOENIX_WEBHOOK_DEPLOY_ENABLED=0 # Proxmox (for Infra/VE API; omit for stub responses) PROXMOX_HOST= @@ -32,4 +33,6 @@ PHOENIX_PARTNER_KEYS= # Optional: override path for GET /api/v1/public-sector/programs (else bundled copy, repo config/, or ../config/) PUBLIC_SECTOR_MANIFEST_PATH= # Optional: proxmox repo root on host (manifest = $PHOENIX_REPO_ROOT/config/public-sector-program-manifest.json) -PHOENIX_REPO_ROOT= +PHOENIX_REPO_ROOT=/home/intlc/projects/proxmox +# Optional: deploy target config file (defaults to phoenix-deploy-api/deploy-targets.json) +DEPLOY_TARGETS_PATH= diff --git a/phoenix-deploy-api/DEPLOY.md b/phoenix-deploy-api/DEPLOY.md index d9c24648..4bc45a5d 100644 --- a/phoenix-deploy-api/DEPLOY.md +++ b/phoenix-deploy-api/DEPLOY.md @@ -28,7 +28,9 @@ npm start ```bash sudo nano /opt/phoenix-deploy-api/.env - # Set GITEA_TOKEN=... and optionally PHOENIX_DEPLOY_SECRET + # Set GITEA_TOKEN=..., PHOENIX_DEPLOY_SECRET=..., PHOENIX_REPO_ROOT=... + # Optional: PHOENIX_WEBHOOK_DEPLOY_ENABLED=1 only for repos using webhook-triggered deploys + # Optional: SANKOFA_PORTAL_SRC=/home/intlc/projects/Sankofa/portal for the portal-live target sudo systemctl restart phoenix-deploy-api ``` diff --git a/phoenix-deploy-api/README.md b/phoenix-deploy-api/README.md index 68eb542a..525a6a55 100644 --- a/phoenix-deploy-api/README.md +++ b/phoenix-deploy-api/README.md @@ -1,13 +1,14 @@ # Phoenix Deploy API -Gitea webhook receiver and deploy endpoint stub for Gitea → Phoenix deployment integration. +Gitea webhook receiver and deploy endpoint for Gitea → Phoenix / Proxmox deployment integration. ## Endpoints | Method | Path | Description | |--------|------|-------------| -| POST | /webhook/gitea | Receives Gitea push/tag/PR webhooks | -| POST | /api/deploy | Deploy request (repo, branch, target) | +| POST | /webhook/gitea | Receives Gitea push/tag/PR webhooks; executes deploys only when `PHOENIX_WEBHOOK_DEPLOY_ENABLED=1` | +| POST | /api/deploy | Deploy request (repo, branch, target); resolves a target from `deploy-targets.json` and runs its command | +| GET | /api/deploy-targets | Lists configured deploy targets and whether each has a health check | | GET | /api/v1/infra/nodes | Cluster nodes (Proxmox; stub if PROXMOX_* unset) | | GET | /api/v1/infra/storage | Storage pools (Proxmox; stub if unset) | | GET | /api/v1/ve/vms | List VMs/CTs (optional `?node=`) | @@ -31,10 +32,11 @@ Copy `.env.example` to `.env` and set `GITEA_TOKEN` (and optionally `PHOENIX_DEP | GITEA_URL | https://gitea.d-bis.org | Gitea instance URL | | GITEA_TOKEN | | Token for commit status API | | PHOENIX_DEPLOY_SECRET | | Optional secret for webhook/deploy auth | -| PROXMOX_HOST | | Proxmox host (IP or hostname) for API Railing | +| PHOENIX_WEBHOOK_DEPLOY_ENABLED | 0 | Set to 1 to allow `/webhook/gitea` to execute the default target on matching pushes | +| PROXMOX_HOST | proxmox-api.d-bis.org | Proxmox host (IP or hostname) for API Railing | | PROXMOX_PORT | 8006 | Proxmox API port | | PROXMOX_USER | root@pam | Proxmox API user | -| PROXMOX_TOKEN_NAME | | Proxmox API token name | +| PROXMOX_TOKEN_NAME | | Proxmox API token name; bare token name preferred, full token id also accepted | | PROXMOX_TOKEN_VALUE | | Proxmox API token secret | | PROXMOX_TLS_VERIFY | 1 | Set to 0 to allow self-signed Proxmox certs | | PHOENIX_VE_LIFECYCLE_ENABLED | 0 | Set to 1 to enable VM/CT start/stop/reboot | @@ -45,6 +47,7 @@ Copy `.env.example` to `.env` and set `GITEA_TOKEN` (and optionally `PHOENIX_DEP | PHOENIX_PARTNER_KEYS | | Comma-separated API keys for /api/v1/* (optional) | | PUBLIC_SECTOR_MANIFEST_PATH | | Override JSON path for `/api/v1/public-sector/programs` | | PHOENIX_REPO_ROOT | | Proxmox repo root; loads `config/public-sector-program-manifest.json` if present | +| DEPLOY_TARGETS_PATH | | Override deploy target file; default is `phoenix-deploy-api/deploy-targets.json` | **Program manifest:** From a full repo checkout, the file is `config/public-sector-program-manifest.json`. `scripts/install-systemd.sh` copies it next to `server.js` on `/opt/phoenix-deploy-api` so the endpoint works without a full tree. @@ -52,11 +55,13 @@ Copy `.env.example` to `.env` and set `GITEA_TOKEN` (and optionally `PHOENIX_DEP In Gitea: Repository → Settings → Webhooks → Add Webhook -- **URL:** `https://phoenix-api-host/api/webhook/gitea` (or your Phoenix API URL) +- **URL:** `https://phoenix-api-host/webhook/gitea` (or your Phoenix API URL) - **Content type:** application/json - **Events:** Push events, Tag creation (and optionally Pull requests) - **Secret:** Optional, set PHOENIX_DEPLOY_SECRET to match +Use webhook-triggered deploys only for repos that are not already deploying through Gitea Actions, unless you intentionally want both paths. + ## Deploy API (Trigger from Gitea Actions) ```bash @@ -66,9 +71,56 @@ curl -X POST "https://phoenix-api-host/api/deploy" \ -d '{"repo":"d-bis/proxmox","branch":"main","sha":"abc123","target":"default"}' ``` +The API returns `404` when no matching deploy target exists for `{repo, branch, target}` and `500` when the target command fails. +If a target defines `healthcheck`, the deploy is only marked successful after the post-deploy URL check passes. + +## Deploy target configuration + +Targets live in [`deploy-targets.json`](deploy-targets.json). Each entry maps a `{repo, branch, target}` tuple to a command array and working directory. + +Example: + +```json +{ + "repo": "d-bis/proxmox", + "branch": "main", + "target": "default", + "cwd": "${PHOENIX_REPO_ROOT}", + "command": ["bash", "scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh", "--apply", "--start-ct"], + "required_env": ["PHOENIX_REPO_ROOT"] +} +``` + +Use this to promote different repos to different VMIDs or CTs by adding more entries. + +Optional per-target health check: + +```json +{ + "healthcheck": { + "url": "http://192.168.11.59:4001/health", + "expect_status": 200, + "expect_body_includes": "phoenix-deploy-api", + "attempts": 8, + "delay_ms": 3000, + "timeout_ms": 10000 + } +} +``` + +## Manual smoke trigger + +From the repo root: + +```bash +bash scripts/dev-vm/trigger-phoenix-deploy.sh +``` + +This calls `/api/deploy` directly using `PHOENIX_DEPLOY_URL` and `PHOENIX_DEPLOY_TOKEN` from root `.env`. + ## Integration with Sankofa Phoenix -This service is a standalone stub. Full deployment logic should be implemented in the Sankofa Phoenix API (VMID 8600). Migrate the webhook handler and deploy logic into the Phoenix API when ready. +This service is still standalone, but it now executes real target commands. If you later fold it into the Sankofa Phoenix API (VMID 8600), keep the same target-file pattern so repo-to-VM routing stays declarative. ## OpenAPI / Swagger diff --git a/phoenix-deploy-api/deploy-targets.json b/phoenix-deploy-api/deploy-targets.json new file mode 100644 index 00000000..8aae46d2 --- /dev/null +++ b/phoenix-deploy-api/deploy-targets.json @@ -0,0 +1,101 @@ +{ + "defaults": { + "timeout_sec": 1800 + }, + "targets": [ + { + "repo": "d-bis/proxmox", + "branch": "main", + "target": "default", + "description": "Deploy the Phoenix deploy API bundle to the dev VM on Proxmox.", + "cwd": "${PHOENIX_REPO_ROOT}", + "command": [ + "bash", + "scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh", + "--apply", + "--start-ct" + ], + "required_env": [ + "PHOENIX_REPO_ROOT" + ], + "healthcheck": { + "url": "http://192.168.11.59:4001/health", + "expect_status": 200, + "expect_body_includes": "phoenix-deploy-api", + "attempts": 8, + "delay_ms": 3000, + "timeout_ms": 10000 + } + }, + { + "repo": "d-bis/proxmox", + "branch": "main", + "target": "portal-live", + "description": "Deploy the Sankofa portal to CT 7801 on Proxmox.", + "cwd": "${PHOENIX_REPO_ROOT}", + "command": [ + "bash", + "scripts/deployment/sync-sankofa-portal-7801.sh" + ], + "required_env": [ + "PHOENIX_REPO_ROOT", + "SANKOFA_PORTAL_SRC" + ], + "healthcheck": { + "url": "http://192.168.11.51:3000/", + "expect_status": 200, + "expect_body_includes": "/dev/null || cp -a "$APP_DIR/server.js" "$APP_DIR/package.json" "$TARGET/" +cp -a "$APP_DIR/server.js" "$APP_DIR/package.json" "$APP_DIR/package-lock.json" "$APP_DIR/deploy-targets.json" "$TARGET/" 2>/dev/null || \ + cp -a "$APP_DIR/server.js" "$APP_DIR/package.json" "$APP_DIR/deploy-targets.json" "$TARGET/" # Program manifest for GET /api/v1/public-sector/programs (server loads from cwd-adjacent copy on /opt) if [[ -f "$REPO_ROOT/config/public-sector-program-manifest.json" ]]; then cp -a "$REPO_ROOT/config/public-sector-program-manifest.json" "$TARGET/public-sector-program-manifest.json" diff --git a/phoenix-deploy-api/server.js b/phoenix-deploy-api/server.js index dd45c505..448b209f 100644 --- a/phoenix-deploy-api/server.js +++ b/phoenix-deploy-api/server.js @@ -1,6 +1,6 @@ #!/usr/bin/env node /** - * Phoenix Deploy API — Gitea webhook receiver, deploy stub, and Phoenix API Railing (Infra/VE) + * Phoenix Deploy API — Gitea webhook receiver, deploy execution API, and Phoenix API Railing (Infra/VE) * * Endpoints: * POST /webhook/gitea — Receives Gitea push/tag/PR webhooks @@ -19,6 +19,8 @@ import crypto from 'crypto'; import https from 'https'; import path from 'path'; +import { promisify } from 'util'; +import { execFile as execFileCallback } from 'child_process'; import { readFileSync, existsSync } from 'fs'; import { fileURLToPath } from 'url'; import express from 'express'; @@ -42,6 +44,13 @@ const PROMETHEUS_URL = (process.env.PROMETHEUS_URL || 'http://localhost:9090').r const PHOENIX_WEBHOOK_URL = process.env.PHOENIX_WEBHOOK_URL || ''; const PHOENIX_WEBHOOK_SECRET = process.env.PHOENIX_WEBHOOK_SECRET || ''; const PARTNER_KEYS = (process.env.PHOENIX_PARTNER_KEYS || '').split(',').map((k) => k.trim()).filter(Boolean); +const WEBHOOK_DEPLOY_ENABLED = process.env.PHOENIX_WEBHOOK_DEPLOY_ENABLED === '1' || process.env.PHOENIX_WEBHOOK_DEPLOY_ENABLED === 'true'; +const execFile = promisify(execFileCallback); + +function expandEnvTokens(value) { + if (typeof value !== 'string') return value; + return value.replace(/\$\{([A-Z0-9_]+)\}/gi, (_, key) => process.env[key] || ''); +} /** * Manifest resolution order: @@ -63,15 +72,249 @@ function resolvePublicSectorManifestPath() { return path.join(__dirname, '..', 'config', 'public-sector-program-manifest.json'); } +function resolveDeployTargetsPath() { + const override = (process.env.DEPLOY_TARGETS_PATH || '').trim(); + if (override && existsSync(override)) return override; + const bundled = path.join(__dirname, 'deploy-targets.json'); + if (existsSync(bundled)) return bundled; + return bundled; +} + +function loadDeployTargetsConfig() { + const configPath = resolveDeployTargetsPath(); + if (!existsSync(configPath)) { + return { + path: configPath, + defaults: {}, + targets: [], + }; + } + const raw = readFileSync(configPath, 'utf8'); + const parsed = JSON.parse(raw); + return { + path: configPath, + defaults: parsed.defaults || {}, + targets: Array.isArray(parsed.targets) ? parsed.targets : [], + }; +} + +function findDeployTarget(repo, branch, requestedTarget) { + const config = loadDeployTargetsConfig(); + const wantedTarget = requestedTarget || 'default'; + const match = config.targets.find((entry) => { + if (entry.repo !== repo) return false; + if ((entry.branch || 'main') !== branch) return false; + return (entry.target || 'default') === wantedTarget; + }); + return { config, match, wantedTarget }; +} + +async function sleep(ms) { + await new Promise((resolve) => setTimeout(resolve, ms)); +} + +async function verifyHealthCheck(healthcheck) { + if (!healthcheck || !healthcheck.url) return null; + + const attempts = Math.max(1, Number(healthcheck.attempts || 1)); + const delayMs = Math.max(0, Number(healthcheck.delay_ms || 0)); + const timeoutMs = Math.max(1000, Number(healthcheck.timeout_ms || 10000)); + const expectedStatus = Number(healthcheck.expect_status || 200); + const expectBodyIncludes = healthcheck.expect_body_includes || ''; + + let lastError = null; + for (let attempt = 1; attempt <= attempts; attempt += 1) { + try { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), timeoutMs); + const res = await fetch(healthcheck.url, { signal: controller.signal }); + const body = await res.text(); + clearTimeout(timeout); + + if (res.status !== expectedStatus) { + throw new Error(`Expected HTTP ${expectedStatus}, got ${res.status}`); + } + if (expectBodyIncludes && !body.includes(expectBodyIncludes)) { + throw new Error(`Health body missing expected text: ${expectBodyIncludes}`); + } + + return { + ok: true, + url: healthcheck.url, + status: res.status, + attempt, + }; + } catch (err) { + lastError = err; + if (attempt < attempts && delayMs > 0) { + await sleep(delayMs); + } + } + } + + throw new Error(`Health check failed for ${healthcheck.url}: ${lastError?.message || 'unknown error'}`); +} + +async function runDeployTarget(definition, configDefaults, context) { + if (!Array.isArray(definition.command) || definition.command.length === 0) { + throw new Error('Deploy target is missing a command array'); + } + + const cwd = expandEnvTokens(definition.cwd || configDefaults.cwd || process.cwd()); + const timeoutSeconds = Number(definition.timeout_sec || configDefaults.timeout_sec || 1800); + const timeout = Number.isFinite(timeoutSeconds) && timeoutSeconds > 0 ? timeoutSeconds * 1000 : 1800 * 1000; + const command = definition.command.map((part) => expandEnvTokens(part)); + const missingEnv = (definition.required_env || []).filter((key) => !process.env[key]); + if (missingEnv.length > 0) { + throw new Error(`Missing required env for deploy target: ${missingEnv.join(', ')}`); + } + if (!existsSync(cwd)) { + throw new Error(`Deploy working directory does not exist: ${cwd}`); + } + + const childEnv = { + ...process.env, + PHOENIX_DEPLOY_REPO: context.repo, + PHOENIX_DEPLOY_BRANCH: context.branch, + PHOENIX_DEPLOY_SHA: context.sha || '', + PHOENIX_DEPLOY_TARGET: context.target, + PHOENIX_DEPLOY_TRIGGER: context.trigger, + }; + + const { stdout, stderr } = await execFile(command[0], command.slice(1), { + cwd, + env: childEnv, + timeout, + maxBuffer: 10 * 1024 * 1024, + }); + + const healthcheck = await verifyHealthCheck(definition.healthcheck || configDefaults.healthcheck || null); + + return { + cwd, + command, + stdout: stdout || '', + stderr: stderr || '', + timeout_sec: timeoutSeconds, + healthcheck, + }; +} + +async function executeDeploy({ repo, branch = 'main', target = 'default', sha = '', trigger = 'api' }) { + if (!repo) { + const error = new Error('repo required'); + error.statusCode = 400; + error.payload = { error: error.message }; + throw error; + } + + const [owner, repoName] = repo.includes('/') ? repo.split('/') : ['d-bis', repo]; + const commitSha = sha || ''; + const requestedTarget = target || 'default'; + const { config, match, wantedTarget } = findDeployTarget(repo, branch, requestedTarget); + + if (!match) { + const error = new Error('Deploy target not configured'); + error.statusCode = 404; + error.payload = { + error: error.message, + repo, + branch, + target: wantedTarget, + config_path: config.path, + }; + if (commitSha && GITEA_TOKEN) { + await setGiteaCommitStatus(owner, repoName, commitSha, 'failure', `No deploy target for ${repo} ${branch} ${wantedTarget}`); + } + throw error; + } + + if (commitSha && GITEA_TOKEN) { + await setGiteaCommitStatus(owner, repoName, commitSha, 'pending', 'Phoenix deployment in progress'); + } + + console.log(`[deploy] ${repo} branch=${branch} target=${wantedTarget} sha=${commitSha} trigger=${trigger}`); + + let deployResult = null; + let deployError = null; + + try { + deployResult = await runDeployTarget(match, config.defaults, { + repo, + branch, + sha: commitSha, + target: wantedTarget, + trigger, + }); + if (commitSha && GITEA_TOKEN) { + await setGiteaCommitStatus(owner, repoName, commitSha, 'success', `Deployed to ${wantedTarget}`); + } + return { + status: 'completed', + repo, + branch, + target: wantedTarget, + config_path: config.path, + command: deployResult.command, + cwd: deployResult.cwd, + stdout: deployResult.stdout, + stderr: deployResult.stderr, + healthcheck: deployResult.healthcheck, + }; + } catch (err) { + deployError = err; + if (commitSha && GITEA_TOKEN) { + await setGiteaCommitStatus(owner, repoName, commitSha, 'failure', `Deploy failed: ${err.message.slice(0, 120)}`); + } + err.statusCode = err.statusCode || 500; + err.payload = err.payload || { + error: err.message, + repo, + branch, + target: wantedTarget, + config_path: config.path, + }; + throw err; + } finally { + if (PHOENIX_WEBHOOK_URL) { + const payload = { + event: 'deploy.completed', + repo, + branch, + target: wantedTarget, + sha: commitSha, + success: Boolean(deployResult), + command: deployResult?.command, + cwd: deployResult?.cwd, + error: deployError?.message || null, + }; + const body = JSON.stringify(payload); + const sig = crypto.createHmac('sha256', PHOENIX_WEBHOOK_SECRET || '').update(body).digest('hex'); + fetch(PHOENIX_WEBHOOK_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json', 'X-Phoenix-Signature': `sha256=${sig}` }, + body, + }).catch((e) => console.error('[webhook] outbound failed', e.message)); + } + } +} + const httpsAgent = new https.Agent({ rejectUnauthorized: process.env.PROXMOX_TLS_VERIFY !== '0' }); +function formatProxmoxAuthHeader(user, tokenName, tokenValue) { + if (tokenName.includes('!')) { + return `PVEAPIToken=${tokenName}=${tokenValue}`; + } + return `PVEAPIToken=${user}!${tokenName}=${tokenValue}`; +} + async function proxmoxRequest(endpoint, method = 'GET', body = null) { const baseUrl = `https://${PROXMOX_HOST}:${PROXMOX_PORT}/api2/json`; const url = `${baseUrl}${endpoint}`; const options = { method, headers: { - Authorization: `PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}`, + Authorization: formatProxmoxAuthHeader(PROXMOX_USER, PROXMOX_TOKEN_NAME, PROXMOX_TOKEN_VALUE), 'Content-Type': 'application/json', }, agent: httpsAgent, @@ -162,12 +405,44 @@ app.post('/webhook/gitea', async (req, res) => { if (action === 'push' || (action === 'synchronize' && payload.pull_request)) { if (branch === 'main' || branch === 'master' || ref.startsWith('refs/tags/')) { - if (sha && GITEA_TOKEN) { - await setGiteaCommitStatus(owner, repoName, sha, 'pending', 'Phoenix deployment triggered'); + if (!WEBHOOK_DEPLOY_ENABLED) { + return res.status(200).json({ + received: true, + repo: fullName, + branch, + sha, + deployed: false, + message: 'Webhook accepted; set PHOENIX_WEBHOOK_DEPLOY_ENABLED=1 to execute deploys from webhook events.', + }); + } + + try { + const result = await executeDeploy({ + repo: fullName, + branch, + sha, + target: 'default', + trigger: 'webhook', + }); + return res.status(200).json({ + received: true, + repo: fullName, + branch, + sha, + deployed: true, + result, + }); + } catch (err) { + return res.status(200).json({ + received: true, + repo: fullName, + branch, + sha, + deployed: false, + error: err.message, + details: err.payload || null, + }); } - // Stub: enqueue deploy; actual implementation would call Proxmox/deploy logic - console.log(`[deploy-stub] Would deploy ${fullName} branch=${branch} sha=${sha}`); - // Stub: when full deploy runs, call setGiteaCommitStatus(owner, repoName, sha, 'success'|'failure', ...) } } @@ -185,47 +460,36 @@ app.post('/api/deploy', async (req, res) => { } const { repo, branch = 'main', target, sha } = req.body; - if (!repo) { - return res.status(400).json({ error: 'repo required' }); + try { + const result = await executeDeploy({ + repo, + branch, + sha, + target, + trigger: 'api', + }); + res.status(200).json(result); + } catch (err) { + res.status(err.statusCode || 500).json(err.payload || { error: err.message }); } +}); - const [owner, repoName] = repo.includes('/') ? repo.split('/') : ['d-bis', repo]; - const commitSha = sha || ''; - - if (commitSha && GITEA_TOKEN) { - await setGiteaCommitStatus(owner, repoName, commitSha, 'pending', 'Phoenix deployment in progress'); - } - - console.log(`[deploy] ${repo} branch=${branch} target=${target || 'default'} sha=${commitSha}`); - // Stub: no real deploy yet — report success so Gitea shows green; replace with real deploy + setGiteaCommitStatus on completion - const deploySuccess = true; - if (commitSha && GITEA_TOKEN) { - await setGiteaCommitStatus( - owner, - repoName, - commitSha, - deploySuccess ? 'success' : 'failure', - deploySuccess ? 'Deploy accepted (stub)' : 'Deploy failed (stub)' - ); - } - res.status(202).json({ - status: 'accepted', - repo, - branch, - target: target || 'default', - message: 'Deploy request queued (stub). Implement full deploy logic in Sankofa Phoenix API.', +app.get('/api/deploy-targets', (req, res) => { + const config = loadDeployTargetsConfig(); + const targets = config.targets.map((entry) => ({ + repo: entry.repo, + branch: entry.branch || 'main', + target: entry.target || 'default', + description: entry.description || '', + cwd: entry.cwd || config.defaults.cwd || '', + command: entry.command || [], + has_healthcheck: Boolean(entry.healthcheck || config.defaults.healthcheck), + })); + res.json({ + config_path: config.path, + count: targets.length, + targets, }); - - if (PHOENIX_WEBHOOK_URL) { - const payload = { event: 'deploy.completed', repo, branch, target: target || 'default', sha: commitSha, success: deploySuccess }; - const body = JSON.stringify(payload); - const sig = crypto.createHmac('sha256', PHOENIX_WEBHOOK_SECRET || '').update(body).digest('hex'); - fetch(PHOENIX_WEBHOOK_URL, { - method: 'POST', - headers: { 'Content-Type': 'application/json', 'X-Phoenix-Signature': `sha256=${sig}` }, - body, - }).catch((e) => console.error('[webhook] outbound failed', e.message)); - } }); /** @@ -474,7 +738,10 @@ app.listen(PORT, () => { if (!GITEA_TOKEN) console.warn('GITEA_TOKEN not set — commit status updates disabled'); if (!hasProxmox) console.warn('PROXMOX_* not set — Infra/VE API returns stub data'); if (PHOENIX_WEBHOOK_URL) console.log('Outbound webhook enabled:', PHOENIX_WEBHOOK_URL); + if (WEBHOOK_DEPLOY_ENABLED) console.log('Inbound webhook deploy execution enabled'); if (PARTNER_KEYS.length > 0) console.log('Partner API key auth enabled for /api/v1/* (except GET /api/v1/public-sector/programs)'); const mpath = resolvePublicSectorManifestPath(); + const dpath = resolveDeployTargetsPath(); console.log(`Public-sector manifest: ${mpath} (${existsSync(mpath) ? 'ok' : 'missing'})`); + console.log(`Deploy targets: ${dpath} (${existsSync(dpath) ? 'ok' : 'missing'})`); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2fb087b..f6023231 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -118,7 +118,7 @@ importers: version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) nuqs: specifier: ^2.8.8 - version: 2.8.9(next@15.5.8(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 2.8.9(next@15.5.8(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-router-dom@6.30.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-router@6.30.3(react@19.2.3))(react@19.2.3) react: specifier: 19.2.3 version: 19.2.3 @@ -148,7 +148,7 @@ importers: version: 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) recharts: specifier: 3.6.0 - version: 3.6.0(react-dom@19.2.3(react@19.2.3))(react-is@16.13.1)(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1) + version: 3.6.0(react-dom@19.2.3(react@19.2.3))(react-is@18.3.1)(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1) sharp: specifier: ^0.34.5 version: 0.34.5 @@ -164,7 +164,7 @@ importers: devDependencies: '@antfu/eslint-config': specifier: ^6.7.3 - version: 6.7.3(@eslint-react/eslint-plugin@2.13.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.14)(@typescript-eslint/rule-tester@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3))(@typescript-eslint/utils@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@vue/compiler-sfc@3.5.31)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3))) + version: 6.7.3(@eslint-react/eslint-plugin@2.13.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.14)(@typescript-eslint/rule-tester@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3))(@typescript-eslint/utils@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@vue/compiler-sfc@3.5.31)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3))) '@eslint-react/eslint-plugin': specifier: ^2.13.0 version: 2.13.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) @@ -209,7 +209,7 @@ importers: version: 0.4.26(eslint@9.39.4(jiti@1.21.7)) jsdom: specifier: ^27.4.0 - version: 27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + version: 27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10) postcss: specifier: ^8.5.6 version: 8.5.8 @@ -226,6 +226,52 @@ importers: specifier: ^5.9.3 version: 5.9.3 + alltra-lifi-settlement: + dependencies: + '@lifi/sdk': + specifier: ^2.5.2 + version: 2.5.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ethers: + specifier: ^6.16.0 + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + uuid: + specifier: ^9.0.1 + version: 9.0.1 + devDependencies: + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/node': + specifier: ^20.19.33 + version: 20.19.33 + '@types/uuid': + specifier: ^9.0.8 + version: 9.0.8 + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + eslint: + specifier: ^8.57.1 + version: 8.57.1 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + prettier: + specifier: ^3.8.1 + version: 3.8.1 + ts-jest: + specifier: ^29.4.6 + version: 29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)))(typescript@5.9.3) + typescript: + specifier: ^5.9.3 + version: 5.9.3 + mcp-proxmox: dependencies: '@modelcontextprotocol/sdk': @@ -314,10 +360,10 @@ importers: version: 10.4.27(postcss@8.5.8) eslint: specifier: ^9.39.2 - version: 9.39.4(jiti@1.21.7) + version: 9.39.4(jiti@2.6.1) eslint-config-next: specifier: 15.5.8 - version: 15.5.8(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) + version: 15.5.8(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) postcss: specifier: ^8.5.6 version: 8.5.8 @@ -329,7 +375,7 @@ importers: version: 5.9.3 vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@22.19.15)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0) + version: 2.1.9(@types/node@22.19.15)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0) multi-chain-execution: dependencies: @@ -412,6 +458,212 @@ importers: specifier: ^5.9.3 version: 5.9.3 + smom-dbis-138/frontend-dapp: + dependencies: + '@safe-global/api-kit': + specifier: ^4.0.1 + version: 4.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/protocol-kit': + specifier: ^1.3.0 + version: 1.3.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + '@tanstack/react-query': + specifier: ^5.90.21 + version: 5.95.2(react@18.3.1) + '@thirdweb-dev/react': + specifier: ^4.9.4 + version: 4.9.4(@babel/core@7.29.0)(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@thirdweb-dev/sdk@4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(express@4.22.1)(fastify@4.29.1)(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@thirdweb-dev/sdk': + specifier: ^4.0.99 + version: 4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@wagmi/core': + specifier: ^3.3.4 + version: 3.4.5(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@walletconnect/ethereum-provider': + specifier: ^2.23.5 + version: 2.23.9(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + autoprefixer: + specifier: ^10.4.24 + version: 10.4.27(postcss@8.5.8) + ethers: + specifier: ^5.8.0 + version: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + postcss: + specifier: ^8.5.6 + version: 8.5.8 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-hot-toast: + specifier: ^2.6.0 + version: 2.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router-dom: + specifier: ^6.30.3 + version: 6.30.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwindcss: + specifier: ^3.4.19 + version: 3.4.19(yaml@2.8.3) + thirdweb: + specifier: ^5.29.6 + version: 5.119.4(@hey-api/openapi-ts@0.96.1(typescript@5.9.3))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.95.2)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + viem: + specifier: ^2.46.1 + version: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + wagmi: + specifier: ^2.19.5 + version: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + devDependencies: + '@testing-library/jest-dom': + specifier: ^6.9.1 + version: 6.9.1 + '@testing-library/react': + specifier: ^14.3.1 + version: 14.3.1(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.1(@testing-library/dom@9.3.4) + '@types/react': + specifier: ^18.3.28 + version: 18.3.28 + '@types/react-dom': + specifier: ^18.3.7 + version: 18.3.7(@types/react@18.3.28) + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@vitejs/plugin-react': + specifier: ^4.7.0 + version: 4.7.0(vite@5.4.21(@types/node@25.5.0)(lightningcss@1.32.0)) + '@vitest/ui': + specifier: ^1.6.1 + version: 1.6.1(vitest@1.6.1) + eslint: + specifier: ^8.57.1 + version: 8.57.1 + eslint-plugin-react-hooks: + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.1) + eslint-plugin-react-refresh: + specifier: ^0.4.26 + version: 0.4.26(eslint@8.57.1) + identity-obj-proxy: + specifier: ^3.0.0 + version: 3.0.0 + jsdom: + specifier: ^23.2.0 + version: 23.2.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ts-jest: + specifier: ^29.4.6 + version: 29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)))(typescript@5.9.3) + typescript: + specifier: ^5.9.3 + version: 5.9.3 + vite: + specifier: ^5.4.21 + version: 5.4.21(@types/node@25.5.0)(lightningcss@1.32.0) + vite-plugin-node-polyfills: + specifier: ^0.24.0 + version: 0.24.0(rollup@4.60.0)(vite@5.4.21(@types/node@25.5.0)(lightningcss@1.32.0)) + vitest: + specifier: ^1.6.1 + version: 1.6.1(@types/node@25.5.0)(@vitest/ui@1.6.1)(jsdom@23.2.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0) + + smom-dbis-138/services/token-aggregation: + dependencies: + axios: + specifier: ^1.13.5 + version: 1.13.5 + bcrypt: + specifier: ^5.1.1 + version: 5.1.1 + compression: + specifier: ^1.8.1 + version: 1.8.1 + cors: + specifier: ^2.8.6 + version: 2.8.6 + dotenv: + specifier: ^16.6.1 + version: 16.6.1 + ethers: + specifier: ^6.16.0 + version: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + express: + specifier: ^4.22.1 + version: 4.22.1 + express-rate-limit: + specifier: ^7.5.1 + version: 7.5.1(express@4.22.1) + jsonwebtoken: + specifier: ^9.0.3 + version: 9.0.3 + node-cron: + specifier: ^3.0.3 + version: 3.0.3 + pg: + specifier: ^8.18.0 + version: 8.20.0 + winston: + specifier: ^3.19.0 + version: 3.19.0 + devDependencies: + '@types/bcrypt': + specifier: ^5.0.2 + version: 5.0.2 + '@types/compression': + specifier: ^1.8.1 + version: 1.8.1 + '@types/cookie-parser': + specifier: ^1.4.10 + version: 1.4.10(@types/express@4.17.25) + '@types/cors': + specifier: ^2.8.19 + version: 2.8.19 + '@types/express': + specifier: ^4.17.25 + version: 4.17.25 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/jsonwebtoken': + specifier: ^9.0.10 + version: 9.0.10 + '@types/node': + specifier: ^20.19.33 + version: 20.19.33 + '@types/node-cron': + specifier: ^3.0.11 + version: 3.0.11 + '@types/pg': + specifier: ^8.16.0 + version: 8.20.0 + '@typescript-eslint/eslint-plugin': + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': + specifier: ^6.21.0 + version: 6.21.0(eslint@8.57.1)(typescript@5.9.3) + eslint: + specifier: ^8.57.1 + version: 8.57.1 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + ts-jest: + specifier: ^29.4.6 + version: 29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)))(typescript@5.9.3) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.19.33)(typescript@5.9.3) + typescript: + specifier: ^5.9.3 + version: 5.9.3 + unifi-api: dependencies: commander: @@ -427,12 +679,24 @@ importers: packages: + '@account-abstraction/contracts@0.5.0': + resolution: {integrity: sha512-CKyS9Zh5rcYUM+4B6TlaB9+THHzJ+6TY3tWF5QofqvFpqGNvIhF8ddy6wyCmqZw6TB74/yYv7cYD/RarVudfDg==} + '@acemir/cssom@0.9.31': resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + + '@adraffy/ens-normalize@1.10.0': + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + '@adraffy/ens-normalize@1.10.1': resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + '@adraffy/ens-normalize@1.11.1': + resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -495,9 +759,15 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@4.1.2': resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} + '@asamuzakjp/dom-selector@2.0.2': + resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==} + '@asamuzakjp/dom-selector@6.8.1': resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} @@ -563,6 +833,97 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.28.6': + resolution: {integrity: sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.28.6': + resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.28.6': + resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -591,20 +952,68 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@base-org/account@2.4.0': + resolution: {integrity: sha512-A4Umpi8B9/pqR78D1Yoze4xHyQaujioVRqqO3d6xuDFw9VRtjg6tK3bPlwE0aW+nVH/ntllCpPa2PbI8Rnjcug==} + + '@base-org/account@2.5.0': + resolution: {integrity: sha512-cXFL3CHRHwgZ0NPhIeDRatwqaOiVP+EdwZj3qzflj8zQ9OWycybpJoiQ3DEDX8BHKbMZr9e2DzswS+fyal2iNA==} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@blocto/sdk@0.10.2': + resolution: {integrity: sha512-9gCIUKA7/7/hMHaa5n94+OYU/3tHd6vmBgTgv4o2h3z9SFueQXAJMO4aBggH9+EldgHQDI6wHsnvytEt9AWb6g==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + aptos: ^1.3.14 + peerDependenciesMeta: + aptos: + optional: true + '@clack/core@0.5.0': resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} '@clack/prompts@0.11.0': resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + '@coinbase/cdp-sdk@1.48.0': + resolution: {integrity: sha512-lSIOSO5ODhit7JmnZjwh0g6k8pgd2U/n+0IatxqaHzN4kouA+5jGdkF+A0nGol7mR/CyTouMteL7v9e2Gng48Q==} + + '@coinbase/wallet-sdk@3.9.3': + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + + '@coinbase/wallet-sdk@4.0.3': + resolution: {integrity: sha512-y/OGEjlvosikjfB+wk+4CVb9OxD1ob9cidEBLI5h8Hxaf/Qoob2XoVT1uvhtAzBx34KpGYSd+alKvh/GCRre4Q==} + + '@coinbase/wallet-sdk@4.3.0': + resolution: {integrity: sha512-T3+SNmiCw4HzDm4we9wCHCxlP0pqCiwKe4sOwPH3YAK2KSKjxPRydKu6UQJrdONFVLG7ujXvbd/6ZqmvJb8rkw==} + + '@coinbase/wallet-sdk@4.3.6': + resolution: {integrity: sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + '@csstools/color-helpers@6.0.2': resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} engines: {node: '>=20.19.0'} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-calc@3.1.1': resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} engines: {node: '>=20.19.0'} @@ -612,6 +1021,13 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-color-parser@4.0.2': resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==} engines: {node: '>=20.19.0'} @@ -619,6 +1035,12 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms@4.0.0': resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} engines: {node: '>=20.19.0'} @@ -633,10 +1055,17 @@ packages: css-tree: optional: true + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.0': resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} engines: {node: '>=20.19.0'} + '@dabh/diagnostics@2.0.8': + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} + '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} @@ -649,6 +1078,12 @@ packages: '@dprint/toml@0.7.0': resolution: {integrity: sha512-eFaQTcfxKHB+YyTh83x7GEv+gDPuj9q5NFOTaoj5rZmQTbj6OgjjMxUicmS1R8zYcx8YAq5oA9J3YFa5U6x2gA==} + '@ecies/ciphers@0.2.6': + resolution: {integrity: sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==} + engines: {bun: '>=1', deno: '>=2.7.10', node: '>=16'} + peerDependencies: + '@noble/ciphers': ^1.0.0 + '@emnapi/core@1.9.1': resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} @@ -658,15 +1093,90 @@ packages: '@emnapi/wasi-threads@1.2.0': resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/css@11.10.5': + resolution: {integrity: sha512-maJy0wG82hWsiwfJpc3WrYsyVwUbdu+sdIseKUB+/OLjB8zgc3tqkT6eO0Yt0AhIkJwGGnmMY/xmQwEAgQ4JHA==} + peerDependencies: + '@babel/core': ^7.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + '@emotion/is-prop-valid@1.4.0': resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} '@emotion/memoize@0.9.0': resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + '@emotion/react@11.11.4': + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.11.0': + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/styled@11.14.1': + resolution: {integrity: sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + '@emotion/unitless@0.10.0': resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@es-joy/jsdoccomment@0.78.0': resolution: {integrity: sha512-rQkU5u8hNAq2NVRzHnIUUvR6arbO0b6AOlvpTNS48CkiKSn/xtNfOzBK23JE4SiW89DgvU7GtxLVgV4Vn2HBAw==} engines: {node: '>=20.11.0'} @@ -897,10 +1407,18 @@ packages: resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.3.5': resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.39.4': resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -917,6 +1435,224 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eth-optimism/contracts@0.6.0': + resolution: {integrity: sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==} + peerDependencies: + ethers: ^5 + + '@eth-optimism/core-utils@0.12.0': + resolution: {integrity: sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==} + + '@eth-optimism/core-utils@0.13.2': + resolution: {integrity: sha512-u7TOKm1RxH1V5zw7dHmfy91bOuEAZU68LT/9vJPkuWEjaTl+BgvPDRDTurjzclHzN0GbWdcpOqPZg4ftjkJGaw==} + + '@eth-optimism/sdk@3.3.2': + resolution: {integrity: sha512-+zhxT0YkBIEzHsuIayQGjr8g9NawZo6/HYfzg1NSEFsE2Yt0NyCWqVDFTuuak0T6AvIa2kNcl3r0Z8drdb2QmQ==} + peerDependencies: + ethers: ^5 + + '@ethereumjs/common@2.6.5': + resolution: {integrity: sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==} + + '@ethereumjs/common@3.2.0': + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/tx@3.5.2': + resolution: {integrity: sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==} + + '@ethereumjs/tx@4.2.0': + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abi@5.8.0': + resolution: {integrity: sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-provider@5.8.0': + resolution: {integrity: sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/abstract-signer@5.8.0': + resolution: {integrity: sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/address@5.8.0': + resolution: {integrity: sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/base64@5.8.0': + resolution: {integrity: sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/basex@5.8.0': + resolution: {integrity: sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bignumber@5.8.0': + resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/bytes@5.8.0': + resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/constants@5.8.0': + resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/contracts@5.8.0': + resolution: {integrity: sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hash@5.8.0': + resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/hdnode@5.8.0': + resolution: {integrity: sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/json-wallets@5.8.0': + resolution: {integrity: sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/keccak256@5.8.0': + resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/logger@5.8.0': + resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/networks@5.8.0': + resolution: {integrity: sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/pbkdf2@5.8.0': + resolution: {integrity: sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/properties@5.8.0': + resolution: {integrity: sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/providers@5.8.0': + resolution: {integrity: sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/random@5.8.0': + resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/rlp@5.8.0': + resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/sha2@5.8.0': + resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/signing-key@5.8.0': + resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/solidity@5.8.0': + resolution: {integrity: sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/strings@5.8.0': + resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/transactions@5.8.0': + resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/units@5.8.0': + resolution: {integrity: sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/wallet@5.8.0': + resolution: {integrity: sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/web@5.8.0': + resolution: {integrity: sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@ethersproject/wordlists@5.8.0': + resolution: {integrity: sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==} + '@exodus/bytes@1.15.0': resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -926,6 +1662,21 @@ packages: '@noble/hashes': optional: true + '@fastify/ajv-compiler@3.6.0': + resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==} + + '@fastify/cookie@9.4.0': + resolution: {integrity: sha512-Th+pt3kEkh4MQD/Q2q1bMuJIB5NX/D5SwSpOKu3G/tjoGbwfpurIMJsWSPS0SJJ4eyjtmQ8OipDQspf8RbUOlg==} + + '@fastify/error@3.4.1': + resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} + + '@fastify/fast-json-stringify-compiler@4.3.0': + resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} + + '@fastify/merge-json-schemas@0.1.1': + resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} + '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} @@ -947,6 +1698,71 @@ packages: '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + '@gemini-wallet/core@0.3.2': + resolution: {integrity: sha512-Z4aHi3ECFf5oWYWM3F1rW83GJfB9OvhBYPTmb5q+VyK3uvzvS48lwo+jwh2eOoCRWEuT/crpb9Vwp2QaS5JqgQ==} + peerDependencies: + viem: '>=2.0.0' + + '@google-cloud/kms@4.5.0': + resolution: {integrity: sha512-i2vC0DI7bdfEhQszqASTw0KVvbB7HsO2CwTBod423NawAu7FWi+gVVa7NLfXVNGJaZZayFfci2Hu+om/HmyEjQ==} + engines: {node: '>=14.0.0'} + + '@google/model-viewer@2.1.1': + resolution: {integrity: sha512-5umyLoD5vMxlSVQwtmUXeNCNWs9dzmWykGm1qrHe/pCYrj/1lyJIgJRw+IxoMNodGqtcHEtfDhdNjRDM9yo/TA==} + engines: {node: '>=6.0.0'} + + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.7.15': + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} + engines: {node: '>=6'} + hasBin: true + + '@grpc/proto-loader@0.8.0': + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} + engines: {node: '>=6'} + hasBin: true + + '@headlessui/react@1.7.18': + resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + + '@hey-api/client-fetch@0.10.0': + resolution: {integrity: sha512-C7vzj4t52qPiHCqjn1l8cRTI2p4pZCd7ViLtJDTHr5ZwI4sWOYC1tmv6bd529qqY6HFFbhGCz4TAZSwKAMJncg==} + deprecated: Starting with v0.73.0, this package is bundled directly inside @hey-api/openapi-ts. + peerDependencies: + '@hey-api/openapi-ts': < 2 + + '@hey-api/codegen-core@0.8.0': + resolution: {integrity: sha512-OuF/jenX9wz7AWHRBfb37v+jLkrfCt0FJXQuALNH2UsW6+bdZBmoibHl0K778SiHwneotJbAaEvX2S05wEqUQw==} + engines: {node: '>=22.13.0'} + + '@hey-api/json-schema-ref-parser@1.4.1': + resolution: {integrity: sha512-DoPJGxVApDlktP1yYLjmOrF0YBEqb32ieCbx1S1i09n8TyCgdoh4yQaQ3kp0sMTauH+bwNKPsFh7S8qiWCoKZA==} + engines: {node: '>=22.13.0'} + + '@hey-api/openapi-ts@0.96.1': + resolution: {integrity: sha512-EnH+6ncaVC1yNvYWcsO7MoeBSqCvYZaKvRDRqh+S7dsfb9lhe2mKUR2+7sDacGUBm7VDZZ7hg4q4egxlpZaf0g==} + engines: {node: '>=22.13.0'} + hasBin: true + peerDependencies: + typescript: '>=5.5.3 || >=6.0.0 || 6.0.1-rc' + + '@hey-api/shared@0.4.1': + resolution: {integrity: sha512-EDAjvGpEamn2fOB7W87ZStyDSv5mEpnQCciVbiZ+Ll4EfawwIjHMMtDtRQOYol0YjTkAeEm274GFPAtg3xfPGA==} + engines: {node: '>=22.13.0'} + + '@hey-api/spec-types@0.2.0': + resolution: {integrity: sha512-ibQ8Is7evMavzr8GNyJCcTg975d8DpaMUyLmOrQ85UBdy1l6t1KuRAwgChAbesJsIlNV6gjmlXruWyegDX18Fg==} + + '@hey-api/types@0.1.4': + resolution: {integrity: sha512-thWfawrDIP7wSI9ioT13I5soaaqB5vAPIiZmgD8PbeEVKNrkonc0N/Sjj97ezl7oQgusZmaNphGdMKipPO6IBg==} + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -955,10 +1771,19 @@ packages: resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.4.3': resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} @@ -1107,6 +1932,80 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1126,12 +2025,196 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@json-rpc-tools/provider@1.7.6': + resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@json-rpc-tools/types@1.7.6': + resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@json-rpc-tools/utils@1.7.6': + resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + '@kurkle/color@0.3.4': resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + '@lifi/sdk@2.5.2': + resolution: {integrity: sha512-LljyEU3OARdHp+PJstWhI/ZdRDeBrd0MOYDeecTUp3Ox+B2WaZlz/qCd3HsaW9Rqr1RWP6Sge8t5BjjZaXXfsQ==} + + '@lifi/types@9.3.3': + resolution: {integrity: sha512-XY8S6RZMPf5d8XR4Pux2Iko6scBmH60gHm5BtPX2BF7x5eqZJ1Umyv/ael9MvBtjIzs9mroJZ1NTUL4pdWVu9Q==} + + '@lit-labs/ssr-dom-shim@1.5.1': + resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==} + + '@lit/react@1.0.8': + resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} + peerDependencies: + '@types/react': 17 || 18 || 19 + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + + '@lit/reactive-element@2.1.2': + resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} + + '@magic-ext/connect@6.7.2': + resolution: {integrity: sha512-b56mYYzgeXmRzZ8DgsUV6hFKFidaoRJvibUgcRwSuGElDdQxuhkz6FUyTLLS0zGbGdg4lfa7F1J/II1NrxA+lQ==} + deprecated: Connect extension has been merged to magic-sdk, please download the latest magic-sdk to unlock more features + + '@magic-ext/oauth@7.6.2': + resolution: {integrity: sha512-yqQBdtkMouD+owAJkPlevLbal/iCREH/D3PmDW9a7Dsfjy2xs557oIpGkLSZexTIHd3Cxga9hWNpdqFukUfzYg==} + deprecated: This package is deprecated. Please use @magic-ext/oauth2 instead. + + '@magic-sdk/commons@9.6.2': + resolution: {integrity: sha512-PgYznuO9GV5wiKgzP3bEQJTnAbvfHmAPTBmwbP/ESag3FrOyXxuk7PIWpeGmnFa/i6SSQUsmKp8sr/BN0dU5vg==} + peerDependencies: + '@magic-sdk/provider': '>=4.3.0' + '@magic-sdk/types': '>=3.1.1' + + '@magic-sdk/provider@13.6.2': + resolution: {integrity: sha512-ecrTyL4NaploZ/cX1b+NGiWYMSAWVseE7xa7tvmkejZgQCrcJQd8UXb3LPVPmF7kQPKGutJSdkeGJCDKwsGKIA==} + peerDependencies: + localforage: ^1.7.4 + + '@magic-sdk/types@11.6.2': + resolution: {integrity: sha512-+Emd+9HeeVi2E0bktJ33YleA/ozEuKYCBfmSbGRxlntdyUvaojeC+WPf2jN1WH8FjUEiljAjrEJTTZyRGCL8SQ==} + + '@mapbox/node-pre-gyp@1.0.11': + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + + '@metamask/eth-json-rpc-provider@1.0.1': + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + + '@metamask/eth-sig-util@4.0.1': + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-engine@8.0.2': + resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-middleware-stream@7.0.2': + resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@2.1.0': + resolution: {integrity: sha512-4vKIiv0DQxljcXwfpnbsXcfa5glMj5Zg9mqn4xpIWqkv6uJ2ma5/GtUfLFSxhlxnR8asRMv8dDmWya1Tc1sDFA==} + engines: {node: ^16.20 || ^18.16 || >=20} + + '@metamask/onboarding@1.0.1': + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + + '@metamask/providers@16.1.0': + resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} + engines: {node: ^18.18 || >=20} + + '@metamask/rpc-errors@6.4.0': + resolution: {integrity: sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==} + engines: {node: '>=16.0.0'} + + '@metamask/rpc-errors@7.0.2': + resolution: {integrity: sha512-YYYHsVYd46XwY2QZzpGeU4PSdRhHdxnzkB8piWGvJW2xbikZ3R+epAYEL4q/K8bh9JPTucsUdwRFnACor1aOYw==} + engines: {node: ^18.20 || ^20.17 || >=22} + + '@metamask/safe-event-emitter@2.0.0': + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + + '@metamask/safe-event-emitter@3.1.2': + resolution: {integrity: sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==} + engines: {node: '>=12.0.0'} + + '@metamask/sdk-analytics@0.0.5': + resolution: {integrity: sha512-fDah+keS1RjSUlC8GmYXvx6Y26s3Ax1U9hGpWb6GSY5SAdmTSIqp2CvYy6yW0WgLhnYhW+6xERuD0eVqV63QIQ==} + + '@metamask/sdk-communication-layer@0.33.1': + resolution: {integrity: sha512-0bI9hkysxcfbZ/lk0T2+aKVo1j0ynQVTuB3sJ5ssPWlz+Z3VwveCkP1O7EVu1tsVVCb0YV5WxK9zmURu2FIiaA==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: '*' + eventemitter2: ^6.4.9 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-install-modal-web@0.32.1': + resolution: {integrity: sha512-MGmAo6qSjf1tuYXhCu2EZLftq+DSt5Z7fsIKr2P+lDgdTPWgLfZB1tJKzNcwKKOdf6q9Qmmxn7lJuI/gq5LrKw==} + + '@metamask/sdk@0.33.1': + resolution: {integrity: sha512-1mcOQVGr9rSrVcbKPNVzbZ8eCl1K0FATsYH3WJ/MH4WcZDWGECWrXJPNMZoEAkLxWiMe8jOQBumg2pmcDa9zpQ==} + + '@metamask/superstruct@3.2.1': + resolution: {integrity: sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@11.11.0': + resolution: {integrity: sha512-0nF2CWjWQr/m0Y2t2lJnBTU1/CZPPTvKvcESLplyWe/tyeb8zFOi/FeneDmaFnML6LYRIGZU6f+xR0jKAIUZfw==} + engines: {node: ^18.18 || ^20.14 || >=22} + + '@metamask/utils@5.0.2': + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + + '@metamask/utils@8.5.0': + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@9.3.0': + resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} + engines: {node: '>=16.0.0'} + '@modelcontextprotocol/sdk@0.4.0': resolution: {integrity: sha512-79gx8xh4o9YzdbtqMukOe5WKzvEZpvBA1x8PAgJWL7J5k06+vJx8NK2kWzOazPgqnfDego7cNEO8tjai/nOPAA==} + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.18.0': + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + + '@msgpack/msgpack@3.1.2': + resolution: {integrity: sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==} + engines: {node: '>= 18'} + + '@msgpack/msgpack@3.1.3': + resolution: {integrity: sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==} + engines: {node: '>= 18'} + + '@multiformats/base-x@4.0.1': + resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1195,13 +2278,71 @@ packages: cpu: [x64] os: [win32] + '@noble/ciphers@1.2.1': + resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.2.0': resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.4.0': + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/curves@1.8.0': + resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.8.1': + resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.8.2': + resolution: {integrity: sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.2': + resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.7': + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} + engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.7.0': + resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.7.1': + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.7.2': + resolution: {integrity: sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1218,6 +2359,12 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} + '@openzeppelin/contracts-upgradeable@4.9.6': + resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} + + '@openzeppelin/contracts@4.9.6': + resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} + '@oxc-project/types@0.122.0': resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} @@ -1335,6 +2482,34 @@ packages: cpu: [x64] os: [win32] + '@paperxyz/embedded-wallet-service-sdk@1.2.5': + resolution: {integrity: sha512-FuAMdMmpB55K5jNS2Em6TtqJdXNLPdFxReITd2uS2lMgCtmlUP4aLLFsx+fDEVsAP3hg4FVueqGQWilII/7i0A==} + + '@paperxyz/sdk-common-utilities@0.1.1': + resolution: {integrity: sha512-RefjXB3d5Ub1I3GoIf/mfgTsvmAneWoeQwpmiuXYx1NmmSdbtBxDUk4POtSWUCnvoiJP0Y2frATnYMV30J1b1A==} + + '@passwordless-id/webauthn@1.6.2': + resolution: {integrity: sha512-52Cna/kaJ6iuYgTko+LuHCY5NUgoJTQ+iLWbvCHWiI0pT+zUeKz1+g22mWGlSi/JDrFGwZTKG/PL2YDaQGo0qQ==} + + '@passwordless-id/webauthn@2.3.5': + resolution: {integrity: sha512-b/Nrsd9nkkLAKDybUmgQOLcjF5eILO3vjo6uVsvmCGD0XDacGB9b8wFnZGMnBMqvu8eDl5wYGrZ9PoaZ1ODlhw==} + + '@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' + + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} + + '@pedrouid/environment@1.0.1': + resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} + + '@phosphor-icons/webcomponents@2.1.5': + resolution: {integrity: sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==} + + '@pinojs/redact@0.4.0': + resolution: {integrity: sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1343,6 +2518,9 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@postman/form-data@3.1.1': resolution: {integrity: sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==} engines: {node: '>= 6'} @@ -1354,9 +2532,48 @@ packages: '@postman/tunnel-agent@0.6.8': resolution: {integrity: sha512-2U42SmZW5G+suEcS++zB94sBWNO4qD4bvETGFRFDTqSpYl5ksfjcPqzYpgQgXgUmb6dfz+fAGbkcRamounGm0w==} + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@radix-ui/colors@0.1.9': + resolution: {integrity: sha512-Vxq944ErPJsdVepjEUhOLO9ApUVOocA63knc+V2TkJ09D/AVOjiMIgkca/7VoYgODcla0qbSIBjje0SMfZMbAw==} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + '@radix-ui/primitive@1.0.1': + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + '@radix-ui/primitive@1.1.3': resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} @@ -1373,6 +2590,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-arrow@1.0.3': + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-arrow@1.1.7': resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: @@ -1412,6 +2642,15 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: @@ -1421,6 +2660,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-context@1.0.1': + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: @@ -1430,6 +2678,32 @@ packages: '@types/react': optional: true + '@radix-ui/react-dialog@1.0.5': + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dialog@1.1.14': + resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-dialog@1.1.15': resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: @@ -1452,6 +2726,32 @@ packages: '@types/react': optional: true + '@radix-ui/react-dismissable-layer@1.0.5': + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.10': + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-dismissable-layer@1.1.11': resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: @@ -1478,6 +2778,24 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-focus-guards@1.0.1': + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-focus-guards@1.1.3': resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: @@ -1487,6 +2805,19 @@ packages: '@types/react': optional: true + '@radix-ui/react-focus-scope@1.0.4': + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-focus-scope@1.1.7': resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: @@ -1500,11 +2831,25 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-icons@1.3.0': + resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x + '@radix-ui/react-icons@1.3.2': resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} peerDependencies: react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + '@radix-ui/react-id@1.0.1': + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: @@ -1566,6 +2911,32 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-popper@1.1.3': + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.7': + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-popper@1.2.8': resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: @@ -1579,6 +2950,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-portal@1.0.4': + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-portal@1.1.9': resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: @@ -1592,6 +2976,32 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-presence@1.0.1': + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.4': + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-presence@1.1.5': resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: @@ -1605,6 +3015,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@1.0.3': + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-primitive@2.1.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: @@ -1683,6 +3106,15 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: @@ -1727,6 +3159,32 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-tooltip@1.0.7': + resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.2.7': + resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-tooltip@1.2.8': resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: @@ -1740,6 +3198,15 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: @@ -1749,6 +3216,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: @@ -1767,6 +3243,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: @@ -1776,6 +3261,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: @@ -1794,6 +3288,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-rect@1.0.1': + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-rect@1.1.1': resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: @@ -1803,6 +3306,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-size@1.0.1': + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-size@1.1.1': resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: @@ -1812,6 +3324,19 @@ packages: '@types/react': optional: true + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-visually-hidden@1.2.3': resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: @@ -1825,6 +3350,9 @@ packages: '@types/react-dom': optional: true + '@radix-ui/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} @@ -1839,6 +3367,68 @@ packages: react-redux: optional: true + '@remix-run/router@1.23.2': + resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} + engines: {node: '>=14.0.0'} + + '@reown/appkit-common@1.7.8': + resolution: {integrity: sha512-ridIhc/x6JOp7KbDdwGKY4zwf8/iK8EYBl+HtWrruutSLwZyVi5P8WaZa+8iajL6LcDcDF7LoyLwMTym7SRuwQ==} + + '@reown/appkit-common@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-wf53EzDmCJ5ICtDY5B1MddVeCwoqDGPVmaxD4wQJLR9uanhBXfKq1sJou+Uj8lZCyI72Z+r9YlsePOlYH2Ge3A==} + + '@reown/appkit-controllers@1.7.8': + resolution: {integrity: sha512-IdXlJlivrlj6m63VsGLsjtPHHsTWvKGVzWIP1fXZHVqmK+rZCBDjCi9j267Rb9/nYRGHWBtlFQhO8dK35WfeDA==} + + '@reown/appkit-controllers@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-wY5yvMB0o2AwitwDHHO0u2tmqR+n3Crv0AHjIcY037PC3mhF9TPEUKqE9vlrFImQWQRxl0WRfuKfzmUAPxZExw==} + + '@reown/appkit-pay@1.7.8': + resolution: {integrity: sha512-OSGQ+QJkXx0FEEjlpQqIhT8zGJKOoHzVnyy/0QFrl3WrQTjCzg0L6+i91Ad5Iy1zb6V5JjqtfIFpRVRWN4M3pw==} + + '@reown/appkit-pay@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-sVE8UT7CDA8zsg3opvbGjSZHSnohOVPF77vP6Ln4G0+vfoiXNhZaZa89Pg0MDjh+KGy0OulWVUdXuZ9jJQFvPg==} + + '@reown/appkit-polyfills@1.7.8': + resolution: {integrity: sha512-W/kq786dcHHAuJ3IV2prRLEgD/2iOey4ueMHf1sIFjhhCGMynMkhsOhQMUH0tzodPqUgAC494z4bpIDYjwWXaA==} + + '@reown/appkit-polyfills@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-OyYavslCegfUlKu8Ah6BZhbqQrK7bImvUm+EKjjvnfNN9J0F9uWMFwbTpZxenBcfAI6cyaD9aTTUunMn5no1Og==} + + '@reown/appkit-scaffold-ui@1.7.8': + resolution: {integrity: sha512-RCeHhAwOrIgcvHwYlNWMcIDibdI91waaoEYBGw71inE0kDB8uZbE7tE6DAXJmDkvl0qPh+DqlC4QbJLF1FVYdQ==} + + '@reown/appkit-scaffold-ui@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-f+SYFGDy+uY1EAvWcH6vZgga1bOuzBvYSKYiRX2QQy8INtZqwwiLLvS4cgm5Yp1WvYRal5RdfZkKl5qha498gw==} + + '@reown/appkit-ui@1.7.8': + resolution: {integrity: sha512-1hjCKjf6FLMFzrulhl0Y9Vb9Fu4royE+SXCPSWh4VhZhWqlzUFc7kutnZKx8XZFVQH4pbBvY62SpRC93gqoHow==} + + '@reown/appkit-ui@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-E1u2ZVZV0iFDSgrgtdQTZAXNbI+Lakj8E8V+jJQ47JaEVKv9SROvPu2fVqfIrqHQF68NmAk1dnbYi4luOiM0Fg==} + + '@reown/appkit-utils@1.7.8': + resolution: {integrity: sha512-8X7UvmE8GiaoitCwNoB86pttHgQtzy4ryHZM9kQpvjQ0ULpiER44t1qpVLXNM4X35O0v18W0Dk60DnYRMH2WRw==} + peerDependencies: + valtio: 1.13.2 + + '@reown/appkit-utils@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-9El8sYbXDaMYxg4R6LujA965yYQGjNcPMXqympLtzNl1es5qkniW7eAdEpLmZrsaqNrfTaHT1G65wYy7sA595w==} + peerDependencies: + valtio: 2.1.7 + + '@reown/appkit-wallet@1.7.8': + resolution: {integrity: sha512-kspz32EwHIOT/eg/ZQbFPxgXq0B/olDOj3YMu7gvLEFz4xyOFd/wgzxxAXkp5LbG4Cp++s/elh79rVNmVFdB9A==} + + '@reown/appkit-wallet@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-s0RTVNtgPtXGs+eZELVvTu1FRLuN15MyhVS//3/4XafVQkBBJarciXk9pFP71xeSHRzjYR1lXHnVw28687cUvQ==} + + '@reown/appkit@1.7.8': + resolution: {integrity: sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==} + + '@reown/appkit@1.8.17-wc-circular-dependencies-fix.0': + resolution: {integrity: sha512-7JjEp+JNxRUDOa7CxOCbUbG8uYVo38ojc9FN/fuzJuJADUzKDaH287MLV9qI1ZyQyXA8qXvhXRqjtw+3xo2/7A==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1928,12 +3518,33 @@ packages: cpu: [x64] os: [win32] + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/pluginutils@1.0.0-rc.12': resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.60.0': resolution: {integrity: sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==} cpu: [arm] @@ -2065,10 +3676,765 @@ packages: '@rushstack/eslint-patch@1.16.1': resolution: {integrity: sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==} + '@safe-global/api-kit@4.1.0': + resolution: {integrity: sha512-UlLG5bY1dR3zKKJxv0/d4bsR0zkFiC52aXJDg4/BTXGge51CZdG/d/5Z+V/IQX6fC09QiLPT1D3VquO0oc9Ecg==} + + '@safe-global/protocol-kit@1.3.0': + resolution: {integrity: sha512-zBhwHpaUggywmnR1Xm5RV22DpyjmVWYP3pnOl4rcf9LAc1k7IVmw6WIt2YVhHRaWGxVYMd4RitJX8Dx2+8eLZQ==} + + '@safe-global/protocol-kit@7.1.0': + resolution: {integrity: sha512-eFJ6SwxF9TIDpQkQj8bTP9ma1zpf1C1nhdhAwx16rUX749CWT6styg7e9dSmeV40zSleWFeQUWcqgLOaRnxj1g==} + + '@safe-global/safe-apps-provider@0.18.6': + resolution: {integrity: sha512-4LhMmjPWlIO8TTDC2AwLk44XKXaK6hfBTWyljDm0HQ6TWlOEijVWNrt2s3OCVMSxlXAcEzYfqyu1daHZooTC2Q==} + + '@safe-global/safe-apps-sdk@9.1.0': + resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} + + '@safe-global/safe-core-sdk-types@1.10.1': + resolution: {integrity: sha512-BKvuYTLOlY16Rq6qCXglmnL6KxInDuXMFqZMaCzwDKiEh+uoHu3xCumG5tVtWOkCgBF4XEZXMqwZUiLcon7IsA==} + deprecated: 'WARNING: This project has been renamed to @safe-global/types-kit. Please, migrate from @safe-global/safe-core-sdk-types@5.1.0 to @safe-global/types-kit@1.0.0.' + + '@safe-global/safe-core-sdk-utils@1.7.4': + resolution: {integrity: sha512-ITocwSWlFUA1K9VMP/eJiMfgbP/I9qDxAaFz7ukj5N5NZD3ihVQZkmqML6hjse5UhrfjCnfIEcLkNZhtB2XC2Q==} + + '@safe-global/safe-core-sdk@3.3.5': + resolution: {integrity: sha512-ul+WmpxZOXgDIXrZ6MIHptThYbm0CVV3/rypMQEn4tZLkudh/yXK7EuWBFnx9prR3MePuku51Zcz9fu1vi7sfQ==} + deprecated: 'WARNING: This project has been renamed to @safe-global/protocol-kit. Please, follow the migration guide https://docs.safe.global/safe-core-aa-sdk/protocol-kit/reference/v1' + + '@safe-global/safe-deployments@1.37.55': + resolution: {integrity: sha512-vI7jgwV4XukOniAziybjoXzw9lYFXqNF4NVU7ytKCymnjzfNSnzCIJgM2kaGmA+eKlMm8XbIbdMRHtKTwIAzUw==} + + '@safe-global/safe-ethers-adapters@0.1.0-alpha.19': + resolution: {integrity: sha512-FKd1XySR/FGfEY/HDGfQPByTnOPWE4m6HuH/Q4PgizsGdgYa6kjUy0/UWTb42bOdkqeVm2XffPxErHK/BaUhaQ==} + deprecated: 'WARNING: This project is currently unmaintained. Please, use the combination of kits to achieve the desired functionality. Documentation can be found at https://docs.safe.global/sdk/overview' + peerDependencies: + '@ethersproject/abstract-provider': ^5.7.0 + '@ethersproject/abstract-signer': ^5.7.0 + '@ethersproject/bignumber': ^5.7.0 + '@ethersproject/properties': ^5.7.0 + + '@safe-global/safe-ethers-lib@1.9.4': + resolution: {integrity: sha512-WhzcmNun0s0VxeVQKRqaapV0vEpdm76zZBR2Du+S+58u1r57OjZkOSL2Gru0tdwkt3FIZZtE3OhDu09M70pVkA==} + deprecated: 'WARNING: This package is now bundled in @safe-global/protocol-kit. Please, follow the migration guide https://docs.safe.global/safe-core-aa-sdk/protocol-kit/reference/v1' + + '@safe-global/safe-gateway-typescript-sdk@3.23.1': + resolution: {integrity: sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==} + engines: {node: '>=16'} + + '@safe-global/safe-modules-deployments@3.0.3': + resolution: {integrity: sha512-buagqAbogvJp7WLJNV2t3/QrSEDlOdyIMiOuEY1TOR3Q+BTDhFcrolQ30tBqohj6pdojOW6NNcv6ITzpUz/X4w==} + + '@safe-global/types-kit@3.1.0': + resolution: {integrity: sha512-uI6lFV8wOji4rb7juu0/LRMND0rq2NWaqH4zFzE2FUjO8lTvbCT+/5W/+flUUfkcaqyLDlJ1OPjasa2bEakrbw==} + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + + '@scure/bip32@1.3.2': + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip32@1.6.2': + resolution: {integrity: sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==} + + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + + '@scure/bip39@1.2.1': + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@scure/bip39@1.5.4': + resolution: {integrity: sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==} + + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + '@sindresorhus/base62@1.0.0': resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} engines: {node: '>=18'} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@so-ric/colorspace@1.1.6': + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@solana-program/compute-budget@0.8.0': + resolution: {integrity: sha512-qPKxdxaEsFxebZ4K5RPuy7VQIm/tfJLa1+Nlt3KNA8EYQkz9Xm8htdoEaXVrer9kpgzzp9R3I3Bh6omwCM06tQ==} + peerDependencies: + '@solana/kit': ^2.1.0 + + '@solana-program/system@0.10.0': + resolution: {integrity: sha512-Go+LOEZmqmNlfr+Gjy5ZWAdY5HbYzk2RBewD9QinEU/bBSzpFfzqDRT55JjFRBGJUvMgf3C2vfXEGT4i8DSI4g==} + peerDependencies: + '@solana/kit': ^5.0 + + '@solana-program/token-2022@0.4.2': + resolution: {integrity: sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw==} + peerDependencies: + '@solana/kit': ^2.1.0 + '@solana/sysvars': ^2.1.0 + + '@solana-program/token@0.5.1': + resolution: {integrity: sha512-bJvynW5q9SFuVOZ5vqGVkmaPGA0MCC+m9jgJj1nk5m20I389/ms69ASnhWGoOPNcie7S9OwBX0gTj2fiyWpfag==} + peerDependencies: + '@solana/kit': ^2.1.0 + + '@solana-program/token@0.9.0': + resolution: {integrity: sha512-vnZxndd4ED4Fc56sw93cWZ2djEeeOFxtaPS8SPf5+a+JZjKA/EnKqzbE1y04FuMhIVrLERQ8uR8H2h72eZzlsA==} + peerDependencies: + '@solana/kit': ^5.0 + + '@solana/accounts@2.3.0': + resolution: {integrity: sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/accounts@5.5.1': + resolution: {integrity: sha512-TfOY9xixg5rizABuLVuZ9XI2x2tmWUC/OoN556xwfDlhBHBjKfszicYYOyD6nbFmwTGYarCmyGIdteXxTXIdhQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/addresses@2.3.0': + resolution: {integrity: sha512-ypTNkY2ZaRFpHLnHAgaW8a83N0/WoqdFvCqf4CQmnMdFsZSdC7qOwcbd7YzdaQn9dy+P2hybewzB+KP7LutxGA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/addresses@5.5.1': + resolution: {integrity: sha512-5xoah3Q9G30HQghu/9BiHLb5pzlPKRC3zydQDmE3O9H//WfayxTFppsUDCL6FjYUHqj/wzK6CWHySglc2RkpdA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/assertions@2.3.0': + resolution: {integrity: sha512-Ekoet3khNg3XFLN7MIz8W31wPQISpKUGDGTylLptI+JjCDWx3PIa88xjEMqFo02WJ8sBj2NLV64Xg1sBcsHjZQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/assertions@5.5.1': + resolution: {integrity: sha512-YTCSWAlGwSlVPnWtWLm3ukz81wH4j2YaCveK+TjpvUU88hTy6fmUqxi0+hvAMAe4zKXpJyj3Az7BrLJRxbIm4Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-core@2.3.0': + resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/codecs-core@5.5.1': + resolution: {integrity: sha512-TgBt//bbKBct0t6/MpA8ElaOA3sa8eYVvR7LGslCZ84WiAwwjCY0lW/lOYsFHJQzwREMdUyuEyy5YWBKtdh8Rw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-data-structures@2.3.0': + resolution: {integrity: sha512-qvU5LE5DqEdYMYgELRHv+HMOx73sSoV1ZZkwIrclwUmwTbTaH8QAJURBj0RhQ/zCne7VuLLOZFFGv6jGigWhSw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/codecs-data-structures@5.5.1': + resolution: {integrity: sha512-97bJWGyUY9WvBz3mX1UV3YPWGDTez6btCfD0ip3UVEXJbItVuUiOkzcO5iFDUtQT5riKT6xC+Mzl+0nO76gd0w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-numbers@2.3.0': + resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/codecs-numbers@5.5.1': + resolution: {integrity: sha512-rllMIZAHqmtvC0HO/dc/21wDuWaD0B8Ryv8o+YtsICQBuiL/0U4AGwH7Pi5GNFySYk0/crSuwfIqQFtmxNSPFw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/codecs-strings@2.3.0': + resolution: {integrity: sha512-y5pSBYwzVziXu521hh+VxqUtp0hYGTl1eWGoc1W+8mdvBdC1kTqm/X7aYQw33J42hw03JjryvYOvmGgk3Qz/Ug==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5.3.3' + + '@solana/codecs-strings@5.5.1': + resolution: {integrity: sha512-7klX4AhfHYA+uKKC/nxRGP2MntbYQCR3N6+v7bk1W/rSxYuhNmt+FN8aoThSZtWIKwN6BEyR1167ka8Co1+E7A==} + engines: {node: '>=20.18.0'} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: ^5.0.0 + peerDependenciesMeta: + fastestsmallesttextencoderdecoder: + optional: true + typescript: + optional: true + + '@solana/codecs@2.3.0': + resolution: {integrity: sha512-JVqGPkzoeyU262hJGdH64kNLH0M+Oew2CIPOa/9tR3++q2pEd4jU2Rxdfye9sd0Ce3XJrR5AIa8ZfbyQXzjh+g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/codecs@5.5.1': + resolution: {integrity: sha512-Vea29nJub/bXjfzEV7ZZQ/PWr1pYLZo3z0qW0LQL37uKKVzVFRQlwetd7INk3YtTD3xm9WUYr7bCvYUk3uKy2g==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/errors@2.3.0': + resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.3.3' + + '@solana/errors@5.5.1': + resolution: {integrity: sha512-vFO3p+S7HoyyrcAectnXbdsMfwUzY2zYFUc2DEe5BwpiE9J1IAxPBGjOWO6hL1bbYdBrlmjNx8DXCslqS+Kcmg==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/fast-stable-stringify@2.3.0': + resolution: {integrity: sha512-KfJPrMEieUg6D3hfQACoPy0ukrAV8Kio883llt/8chPEG3FVTX9z/Zuf4O01a15xZmBbmQ7toil2Dp0sxMJSxw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/fast-stable-stringify@5.5.1': + resolution: {integrity: sha512-Ni7s2FN33zTzhTFgRjEbOVFO+UAmK8qi3Iu0/GRFYK4jN696OjKHnboSQH/EacQ+yGqS54bfxf409wU5dsLLCw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/functional@2.3.0': + resolution: {integrity: sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/functional@5.5.1': + resolution: {integrity: sha512-tTHoJcEQq3gQx5qsdsDJ0LEJeFzwNpXD80xApW9o/PPoCNimI3SALkZl+zNW8VnxRrV3l3yYvfHWBKe/X3WG3w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instruction-plans@5.5.1': + resolution: {integrity: sha512-7z3CB7YMcFKuVvgcnNY8bY6IsZ8LG61Iytbz7HpNVGX2u1RthOs1tRW8luTzSG1MPL0Ox7afyAVMYeFqSPHnaQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/instructions@2.3.0': + resolution: {integrity: sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/instructions@5.5.1': + resolution: {integrity: sha512-h0G1CG6S+gUUSt0eo6rOtsaXRBwCq1+Js2a+Ps9Bzk9q7YHNFA75/X0NWugWLgC92waRp66hrjMTiYYnLBoWOQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/keys@2.3.0': + resolution: {integrity: sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/keys@5.5.1': + resolution: {integrity: sha512-KRD61cL7CRL+b4r/eB9dEoVxIf/2EJ1Pm1DmRYhtSUAJD2dJ5Xw8QFuehobOGm9URqQ7gaQl+Fkc1qvDlsWqKg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/kit@2.3.0': + resolution: {integrity: sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/kit@5.5.1': + resolution: {integrity: sha512-irKUGiV2yRoyf+4eGQ/ZeCRxa43yjFEL1DUI5B0DkcfZw3cr0VJtVJnrG8OtVF01vT0OUfYOcUn6zJW5TROHvQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/nominal-types@2.3.0': + resolution: {integrity: sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/nominal-types@5.5.1': + resolution: {integrity: sha512-I1ImR+kfrLFxN5z22UDiTWLdRZeKtU0J/pkWkO8qm/8WxveiwdIv4hooi8pb6JnlR4mSrWhq0pCIOxDYrL9GIQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/offchain-messages@5.5.1': + resolution: {integrity: sha512-g+xHH95prTU+KujtbOzj8wn+C7ZNoiLhf3hj6nYq3MTyxOXtBEysguc97jJveUZG0K97aIKG6xVUlMutg5yxhw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/options@2.3.0': + resolution: {integrity: sha512-PPnnZBRCWWoZQ11exPxf//DRzN2C6AoFsDI/u2AsQfYih434/7Kp4XLpfOMT/XESi+gdBMFNNfbES5zg3wAIkw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/options@5.5.1': + resolution: {integrity: sha512-eo971c9iLNLmk+yOFyo7yKIJzJ/zou6uKpy6mBuyb/thKtS/haiKIc3VLhyTXty3OH2PW8yOlORJnv4DexJB8A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/plugin-core@5.5.1': + resolution: {integrity: sha512-VUZl30lDQFJeiSyNfzU1EjYt2QZvoBFKEwjn1lilUJw7KgqD5z7mbV7diJhT+dLFs36i0OsjXvq5kSygn8YJ3A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/programs@2.3.0': + resolution: {integrity: sha512-UXKujV71VCI5uPs+cFdwxybtHZAIZyQkqDiDnmK+DawtOO9mBn4Nimdb/6RjR2CXT78mzO9ZCZ3qfyX+ydcB7w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/programs@5.5.1': + resolution: {integrity: sha512-7U9kn0Jsx1NuBLn5HRTFYh78MV4XN145Yc3WP/q5BlqAVNlMoU9coG5IUTJIG847TUqC1lRto3Dnpwm6T4YRpA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/promises@2.3.0': + resolution: {integrity: sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/promises@5.5.1': + resolution: {integrity: sha512-T9lfuUYkGykJmppEcssNiCf6yiYQxJkhiLPP+pyAc2z84/7r3UVIb2tNJk4A9sucS66pzJnVHZKcZVGUUp6wzA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-api@2.3.0': + resolution: {integrity: sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-api@5.5.1': + resolution: {integrity: sha512-XWOQQPhKl06Vj0xi3RYHAc6oEQd8B82okYJ04K7N0Vvy3J4PN2cxeK7klwkjgavdcN9EVkYCChm2ADAtnztKnA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-parsed-types@2.3.0': + resolution: {integrity: sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-parsed-types@5.5.1': + resolution: {integrity: sha512-HEi3G2nZqGEsa3vX6U0FrXLaqnUCg4SKIUrOe8CezD+cSFbRTOn3rCLrUmJrhVyXlHoQVaRO9mmeovk31jWxJg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec-types@2.3.0': + resolution: {integrity: sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-spec-types@5.5.1': + resolution: {integrity: sha512-6OFKtRpIEJQs8Jb2C4OO8KyP2h2Hy1MFhatMAoXA+0Ik8S3H+CicIuMZvGZ91mIu/tXicuOOsNNLu3HAkrakrw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-spec@2.3.0': + resolution: {integrity: sha512-fA2LMX4BMixCrNB2n6T83AvjZ3oUQTu7qyPLyt8gHQaoEAXs8k6GZmu6iYcr+FboQCjUmRPgMaABbcr9j2J9Sw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-spec@5.5.1': + resolution: {integrity: sha512-m3LX2bChm3E3by4mQrH4YwCAFY57QBzuUSWqlUw7ChuZ+oLLOq7b2czi4i6L4Vna67j3eCmB3e+4tqy1j5wy7Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-api@2.3.0': + resolution: {integrity: sha512-9mCjVbum2Hg9KGX3LKsrI5Xs0KX390lS+Z8qB80bxhar6MJPugqIPH8uRgLhCW9GN3JprAfjRNl7our8CPvsPQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-subscriptions-api@5.5.1': + resolution: {integrity: sha512-5Oi7k+GdeS8xR2ly1iuSFkAv6CZqwG0Z6b1QZKbEgxadE1XGSDrhM2cn59l+bqCozUWCqh4c/A2znU/qQjROlw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-channel-websocket@2.3.0': + resolution: {integrity: sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + ws: ^8.18.0 + + '@solana/rpc-subscriptions-channel-websocket@5.5.1': + resolution: {integrity: sha512-7tGfBBrYY8TrngOyxSHoCU5shy86iA9SRMRrPSyBhEaZRAk6dnbdpmUTez7gtdVo0BCvh9nzQtUycKWSS7PnFQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions-spec@2.3.0': + resolution: {integrity: sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-subscriptions-spec@5.5.1': + resolution: {integrity: sha512-iq+rGq5fMKP3/mKHPNB6MC8IbVW41KGZg83Us/+LE3AWOTWV1WT20KT2iH1F1ik9roi42COv/TpoZZvhKj45XQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-subscriptions@2.3.0': + resolution: {integrity: sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-subscriptions@5.5.1': + resolution: {integrity: sha512-CTMy5bt/6mDh4tc6vUJms9EcuZj3xvK0/xq8IQ90rhkpYvate91RjBP+egvjgSayUg9yucU9vNuUpEjz4spM7w==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transformers@2.3.0': + resolution: {integrity: sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-transformers@5.5.1': + resolution: {integrity: sha512-OsWqLCQdcrRJKvHiMmwFhp9noNZ4FARuMkHT5us3ustDLXaxOjF0gfqZLnMkulSLcKt7TGXqMhBV+HCo7z5M8Q==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-transport-http@2.3.0': + resolution: {integrity: sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-transport-http@5.5.1': + resolution: {integrity: sha512-yv8GoVSHqEV0kUJEIhkdOVkR2SvJ6yoWC51cJn2rSV7plr6huLGe0JgujCmB7uZhhaLbcbP3zxXxu9sOjsi7Fg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc-types@2.3.0': + resolution: {integrity: sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc-types@5.5.1': + resolution: {integrity: sha512-bibTFQ7PbHJJjGJPmfYC2I+/5CRFS4O2p9WwbFraX1Keeel+nRrt/NBXIy8veP5AEn2sVJIyJPpWBRpCx1oATA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/rpc@2.3.0': + resolution: {integrity: sha512-ZWN76iNQAOCpYC7yKfb3UNLIMZf603JckLKOOLTHuy9MZnTN8XV6uwvDFhf42XvhglgUjGCEnbUqWtxQ9pa/pQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/rpc@5.5.1': + resolution: {integrity: sha512-ku8zTUMrkCWci66PRIBC+1mXepEnZH/q1f3ck0kJZ95a06bOTl5KU7HeXWtskkyefzARJ5zvCs54AD5nxjQJ+A==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/signers@2.3.0': + resolution: {integrity: sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/signers@5.5.1': + resolution: {integrity: sha512-FY0IVaBT2kCAze55vEieR6hag4coqcuJ31Aw3hqRH7mv6sV8oqwuJmUrx+uFwOp1gwd5OEAzlv6N4hOOple4sQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/subscribable@2.3.0': + resolution: {integrity: sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/subscribable@5.5.1': + resolution: {integrity: sha512-9K0PsynFq0CsmK1CDi5Y2vUIJpCqkgSS5yfDN0eKPgHqEptLEaia09Kaxc90cSZDZU5mKY/zv1NBmB6Aro9zQQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/sysvars@2.3.0': + resolution: {integrity: sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/sysvars@5.5.1': + resolution: {integrity: sha512-k3Quq87Mm+geGUu1GWv6knPk0ALsfY6EKSJGw9xUJDHzY/RkYSBnh0RiOrUhtFm2TDNjOailg8/m0VHmi3reFA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-confirmation@2.3.0': + resolution: {integrity: sha512-UiEuiHCfAAZEKdfne/XljFNJbsKAe701UQHKXEInYzIgBjRbvaeYZlBmkkqtxwcasgBTOmEaEKT44J14N9VZDw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/transaction-confirmation@5.5.1': + resolution: {integrity: sha512-j4mKlYPHEyu+OD7MBt3jRoX4ScFgkhZC6H65on4Fux6LMScgivPJlwnKoZMnsgxFgWds0pl+BYzSiALDsXlYtw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transaction-messages@2.3.0': + resolution: {integrity: sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/transaction-messages@5.5.1': + resolution: {integrity: sha512-aXyhMCEaAp3M/4fP0akwBBQkFPr4pfwoC5CLDq999r/FUwDax2RE/h4Ic7h2Xk+JdcUwsb+rLq85Y52hq84XvQ==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@solana/transactions@2.3.0': + resolution: {integrity: sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@solana/transactions@5.5.1': + resolution: {integrity: sha512-8hHtDxtqalZ157pnx6p8k10D7J/KY/biLzfgh9R09VNLLY3Fqi7kJvJCr7M2ik3oRll56pxhraAGCC9yIT6eOA==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -2087,6 +4453,14 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@szmarczak/http-timer@4.0.6': + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + '@tabby_ai/hijri-converter@1.0.5': resolution: {integrity: sha512-r5bClKrcIusDoo049dSL8CawnHR6mRdDwhlQuIgZRNty68q0x8k3Lf1BtPAMxRf/GgnHBnIO4ujd3+GQdLWzxQ==} engines: {node: '>=16.0.0'} @@ -2100,14 +4474,209 @@ packages: typescript: optional: true + '@tanstack/query-core@4.44.0': + resolution: {integrity: sha512-swSgb7OiPRR3UuIL7NuDrZNSMGmQD+wdtHxPD7j60SvBEnxbXurl5XOirtGEX2gm2hbK6mC8kMV1I+uO3l0UOw==} + + '@tanstack/query-core@5.29.0': + resolution: {integrity: sha512-WgPTRs58hm9CMzEr5jpISe8HXa3qKQ8CxewdYZeVnA54JrPY9B1CZiwsCoLpLkf0dGRZq+LcX5OiJb0bEsOFww==} + + '@tanstack/query-core@5.81.5': + resolution: {integrity: sha512-ZJOgCy/z2qpZXWaj/oxvodDx07XcQa9BF92c0oINjHkoqUPsmm3uG08HpTaviviZ/N9eP1f9CM7mKSEkIo7O1Q==} + '@tanstack/query-core@5.95.2': resolution: {integrity: sha512-o4T8vZHZET4Bib3jZ/tCW9/7080urD4c+0/AUaYVpIqOsr7y0reBc1oX3ttNaSW5mYyvZHctiQ/UOP2PfdmFEQ==} + '@tanstack/react-query@4.44.0': + resolution: {integrity: sha512-RuIqHYrS98LrK/8kJJOJMMSQ/BCpojwsXDh7p0fBmp38ZOz6dlk+uyFRRusH+V+t3POoCsDOQ2zhomEYOeReXw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + '@tanstack/react-query@5.29.2': + resolution: {integrity: sha512-nyuWILR4u7H5moLGSiifLh8kIqQDLNOHGuSz0rcp+J75fNc8aQLyr5+I2JCHU3n+nJrTTW1ssgAD8HiKD7IFBQ==} + peerDependencies: + react: ^18.0.0 + + '@tanstack/react-query@5.81.5': + resolution: {integrity: sha512-lOf2KqRRiYWpQT86eeeftAGnjuTR35myTP8MXyvHa81VlomoAWNEd8x5vkcAfQefu0qtYCvyqLropFZqgI2EQw==} + peerDependencies: + react: ^18 || ^19 + '@tanstack/react-query@5.95.2': resolution: {integrity: sha512-/wGkvLj/st5Ud1Q76KF1uFxScV7WeqN1slQx5280ycwAyYkIPGaRZAEgHxe3bjirSd5Zpwkj6zNcR4cqYni/ZA==} peerDependencies: react: ^18 || ^19 + '@tanstack/react-virtual@3.13.24': + resolution: {integrity: sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/virtual-core@3.14.0': + resolution: {integrity: sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q==} + + '@testing-library/dom@9.3.4': + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@14.3.1': + resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@testing-library/user-event@14.6.1': + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@thirdweb-dev/auth@4.1.97': + resolution: {integrity: sha512-uJgbJxkFleQKKQgifuW9fJNfpBWPzbqSYAOirj/t/+Cfg/yKgoRGjtng3J8F7axLIGMgVR58V39/JRrrXyKJbg==} + engines: {node: '>=18'} + peerDependencies: + cookie-parser: ^1.4.6 + ethers: ^5 + express: ^4 + fastify: ^4.25.2 + next: ^13.4 || ^14 + next-auth: ^4 + peerDependenciesMeta: + cookie-parser: + optional: true + ethers: + optional: true + express: + optional: true + fastify: + optional: true + next: + optional: true + next-auth: + optional: true + + '@thirdweb-dev/chains@0.1.120': + resolution: {integrity: sha512-6wj8eIylLk8wSyTUeN70LD72yN+QIwyynDfKtVGJXTcrEN2K+vuqnRE20gvA2ayX7KMyDyy76JxPlyv6SZyLGw==} + engines: {node: '>=18'} + + '@thirdweb-dev/contracts-js@1.3.23': + resolution: {integrity: sha512-AC8VbiYCZlWhiJl+uzScvbPznZce0mMzVwAZdBFZcfX7QE1kpDssocWna70ksmfCFkWLOrZuzTLYUoLatvOiBQ==} + peerDependencies: + ethers: ^5 + + '@thirdweb-dev/contracts@3.15.0': + resolution: {integrity: sha512-sIXPy6zNqW9K9h8xgCnsRQVrqmmMdxoDqut4eAZj1CJzMax5TyrNBoSYCfAX0et8KApvBeCVeJQhUHSWpBNIVw==} + engines: {node: '>=18.0.0'} + + '@thirdweb-dev/crypto@0.2.6': + resolution: {integrity: sha512-l9kuYAw0+S+ItvQR2c5k6y+qn+L6YT1I5+KN+cQNN848nPFGECVajED2fVLadkZW7xaGEyc+U6nj8Y1KB5bgNg==} + engines: {node: '>=18'} + + '@thirdweb-dev/dynamic-contracts@1.2.5': + resolution: {integrity: sha512-YVsz+jUWbwj+6aF2eTZGMfyw47a1HRmgNl4LQ3gW9gwYL5y5+OX/yOzv6aV5ibvoqCk/k10aIVK2eFrcpMubQA==} + engines: {node: '>=18.0.0'} + + '@thirdweb-dev/engine@3.4.0': + resolution: {integrity: sha512-8blTrKJM+d2Z/waX21LsiHFnW+vAVDdXfRdshUsTdoA95ZwrgEfHGR8mWM/94T9MTtp0iR7TjKELLsqx+M45eQ==} + engines: {node: '>=18'} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + '@thirdweb-dev/generated-abis@0.0.2': + resolution: {integrity: sha512-FztTzU0KF5u8usNBN5/5s4Ys082p+HwsMI9DfFqOBILm4OwEueLY4B5DbXjF1KlTIuqjGeMGmFDG98MXHUt73A==} + + '@thirdweb-dev/insight@1.1.1': + resolution: {integrity: sha512-24oRscLTW9Mod+XpyLlusLxZIZjqQv0XFNSV4lR5u9eoRPaA/BG2HtlVPr0DUtguzTbEyBz98++s5UWleqchVg==} + engines: {node: '>=18'} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + '@thirdweb-dev/merkletree@0.2.6': + resolution: {integrity: sha512-dLw8sxzHSsMxuxwBDzkhwl4ksBKuB3Em7W/u7/2S5Ag0DsBmrrOZQz/+3Nf88mxCvq435PqyQsMPYfY2zJ22QA==} + engines: {node: '>=18'} + + '@thirdweb-dev/payments@1.0.5': + resolution: {integrity: sha512-VvBl9TtNi9n3sjK7+9Y59f3lJnWJm0ph8W1crpigJIHpLsv6gu5hl7h/M1XcHPzBizseUkjYe9Z2lQh2whFSUg==} + + '@thirdweb-dev/react-core@4.9.4': + resolution: {integrity: sha512-qG6cgFEy2dMjJPhEOpWLH0ZUPUq4hAsiL5px9iaxDwQl7luy8dOPNj3LSMCqxLuZEoW3psQqqXSi+XvlMLIkOg==} + engines: {node: '>=18'} + peerDependencies: + ethers: '>=5.5.1' + react: '>=18.0.0' + + '@thirdweb-dev/react@4.9.4': + resolution: {integrity: sha512-GNt30Aq8+KuJ3RCBlkpGBg1RJbbuiPytZi5M5jqCBfHFNrqCsNATKnqXnJ6Hs8Kj76iRplPtCb/gYfUwYESNgw==} + engines: {node: '>=18'} + peerDependencies: + '@thirdweb-dev/sdk': ^4.0.99 + ethers: '>=5.5.1' + react: '>=18.0.0' + react-dom: '>=18.0.0' + + '@thirdweb-dev/sdk@4.0.99': + resolution: {integrity: sha512-Zm1K+tmzz5mnVBues68Bi6vRO6RIjeiblt8URGxoyXNtfLNOmDDZ4t8Znsjg/oegrvh5LyT1XnZfepBZdl0ZSw==} + engines: {node: '>=18'} + peerDependencies: + '@aws-sdk/client-secrets-manager': ^3.215.0 + ethers: ^5 + ethers-aws-kms-signer: ^1.3.2 + zksync-ethers: ^5.6.0 + peerDependenciesMeta: + '@aws-sdk/client-secrets-manager': + optional: true + ethers-aws-kms-signer: + optional: true + zksync-ethers: + optional: true + + '@thirdweb-dev/storage@2.0.15': + resolution: {integrity: sha512-6E5ZlUCTPTMThpUvrPf1XASsfAmSHK/UZXPV5xLc7V66Qq5RTphQYUPoLDsvSNXECo65Jegj0LTIvRFFb30Z4w==} + engines: {node: '>=18'} + + '@thirdweb-dev/wallets@2.5.39': + resolution: {integrity: sha512-VcPnpTHZZwdCap+o3mD8xngC2NV8s0DiQD0BdAuEEhQv+664gLsVRUxZKvW7h/lBXxkyEvSnSOgRwQ3zTVSPvw==} + engines: {node: '>=18'} + peerDependencies: + '@aws-sdk/client-secrets-manager': ^3.256.0 + bs58: ^5.0.0 + ethers: ^5.7.2 + ethers-aws-kms-signer: ^1.3.2 + tweetnacl: ^1.0.3 + peerDependenciesMeta: + '@aws-sdk/client-secrets-manager': + optional: true + bs58: + optional: true + ethers: + optional: true + ethers-aws-kms-signer: + optional: true + tweetnacl: + optional: true + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + '@tsconfig/node10@1.0.12': resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} @@ -2126,6 +4695,9 @@ packages: '@types/archiver@7.0.0': resolution: {integrity: sha512-/3vwGwx9n+mCQdYZ2IKGGHEFL30I96UgBlk8EtRDDFQ9uxM1l4O5Ci6r00EMAkiDaTqD9DQ6nVrWRICnBPtzzg==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2138,15 +4710,41 @@ packages: '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/bcrypt@5.0.2': + resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} + + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + + '@types/bn.js@5.2.0': + resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} + '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + + '@types/caseless@0.12.5': + resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@types/compression@1.8.1': + resolution: {integrity: sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==} + '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + '@types/cookie-parser@1.4.10': + resolution: {integrity: sha512-B4xqkqfZ8Wek+rCOeRxsjMS9OgvzebEzzLYw7NHYuvzb7IdxOkI0ZHGgeEBX4PUM7QGVvNSK60T3OvWj3YfBRg==} + peerDependencies: + '@types/express': '*' + + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -2180,6 +4778,9 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/elliptic@6.4.18': + resolution: {integrity: sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==} + '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -2192,21 +4793,51 @@ packages: '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/hast@2.3.10': resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + '@types/http-errors@2.0.5': resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/jsonwebtoken@9.0.10': + resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -2216,6 +4847,12 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node-cron@3.0.11': + resolution: {integrity: sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.19.33': resolution: {integrity: sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==} @@ -2228,15 +4865,32 @@ packages: '@types/node@25.5.0': resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/pg@8.20.0': + resolution: {integrity: sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==} + '@types/prismjs@1.26.6': resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: @@ -2245,12 +4899,27 @@ packages: '@types/react-syntax-highlighter@15.5.13': resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} + '@types/react@18.3.28': + resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} + '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/readdir-glob@1.1.5': resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} + '@types/request@2.48.13': + resolution: {integrity: sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/secp256k1@4.0.7': + resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/send@0.17.6': resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==} @@ -2260,6 +4929,9 @@ packages: '@types/serve-static@1.15.10': resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/strip-bom@3.0.0': resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} @@ -2269,6 +4941,15 @@ packages: '@types/stylis@4.2.7': resolution: {integrity: sha512-VgDNokpBoKF+wrdvhAAfS55OMQpL6QRglwTwNC3kIgBrzZxA4WsFj+2eLfEA/uMUDzBcEhYmjSbwQakn/i3ajA==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -2284,6 +4965,23 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/eslint-plugin@8.57.2': resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2292,6 +4990,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/parser@8.57.2': resolution: {integrity: sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2311,6 +5019,10 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@8.57.2': resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2321,6 +5033,16 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/type-utils@8.57.2': resolution: {integrity: sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2328,16 +5050,35 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/types@8.57.2': resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@8.57.2': resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@8.57.2': resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2345,10 +5086,17 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@8.57.2': resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@uniswap/token-lists@1.0.0-beta.35': resolution: {integrity: sha512-v43brw8Fx+D904fOCXL5kTU75cIPH40U/WTKB96K1gxOibk2jVsxW3AULBE5Buj5dJpeVwj/l6TNgB6QPw7lJg==} engines: {node: '>=10'} @@ -2448,6 +5196,12 @@ packages: cpu: [x64] os: [win32] + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vitejs/plugin-react@5.2.0': resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2470,6 +5224,9 @@ packages: vitest: optional: true + '@vitest/expect@1.6.1': + resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==} + '@vitest/expect@2.1.9': resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} @@ -2504,24 +5261,41 @@ packages: '@vitest/pretty-format@4.1.2': resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} + '@vitest/runner@1.6.1': + resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==} + '@vitest/runner@2.1.9': resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} '@vitest/runner@4.1.2': resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} + '@vitest/snapshot@1.6.1': + resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==} + '@vitest/snapshot@2.1.9': resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} '@vitest/snapshot@4.1.2': resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} + '@vitest/spy@1.6.1': + resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==} + '@vitest/spy@2.1.9': resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} '@vitest/spy@4.1.2': resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} + '@vitest/ui@1.6.1': + resolution: {integrity: sha512-xa57bCPGuzEFqGjPs3vVLyqareG8DX0uMkr5U/v5vLv5/ZUrBrPL7gzxzTJedEyZxFMfsozwTIbbYfEQVo3kgg==} + peerDependencies: + vitest: 1.6.1 + + '@vitest/utils@1.6.1': + resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==} + '@vitest/utils@2.1.9': resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} @@ -2543,10 +5317,350 @@ packages: '@vue/shared@3.5.31': resolution: {integrity: sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==} + '@wagmi/connectors@6.2.0': + resolution: {integrity: sha512-2NfkbqhNWdjfibb4abRMrn7u6rPjEGolMfApXss6HCDVt9AW2oVC6k8Q5FouzpJezElxLJSagWz9FW1zaRlanA==} + peerDependencies: + '@wagmi/core': 2.22.1 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.22.1': + resolution: {integrity: sha512-cG/xwQWsBEcKgRTkQVhH29cbpbs/TdcUJVFXCyri3ZknxhMyGv0YEjTcrNpRgt2SaswL1KrvslSNYKKo+5YEAg==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + + '@wagmi/core@3.4.5': + resolution: {integrity: sha512-rmqnLRlyFWcP2VvvQtS1XMmupaSruxCwSTfwB8v7pRyeVDywsOoJwIpLh4PI5o//b3ia4P0gND4vkQ1MmU8C3g==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + accounts: ~0.6.7 + typescript: '>=5.7.3' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + accounts: + optional: true + typescript: + optional: true + + '@wallet-standard/base@1.1.0': + resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} + engines: {node: '>=16'} + + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + '@walletconnect/auth-client@2.1.2': + resolution: {integrity: sha512-ubJLn+vGb8sTdBFX6xAh4kjR5idrtS3RBngQWaJJJpEPBQmxMb8pM2q0FIRs8Is4K6jKy+uEhusMV+7ZBmTzjw==} + engines: {node: '>=16'} + + '@walletconnect/core@2.12.2': + resolution: {integrity: sha512-7Adv/b3pp9F42BkvReaaM4KS8NEvlkS7AMtwO3uF/o6aRMKtcfTJq9/jgWdKJh4RP8pPRTRFjCw6XQ/RZtT4aQ==} + + '@walletconnect/core@2.17.1': + resolution: {integrity: sha512-SMgJR5hEyEE/tENIuvlEb4aB9tmMXPzQ38Y61VgYBmwAFEhOHtpt8EDfnfRWqEhMyXuBXG4K70Yh8c67Yry+Xw==} + engines: {node: '>=18'} + + '@walletconnect/core@2.21.0': + resolution: {integrity: sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==} + engines: {node: '>=18'} + + '@walletconnect/core@2.21.1': + resolution: {integrity: sha512-Tp4MHJYcdWD846PH//2r+Mu4wz1/ZU/fr9av1UWFiaYQ2t2TPLDiZxjLw54AAEpMqlEHemwCgiRiAmjR1NDdTQ==} + engines: {node: '>=18'} + + '@walletconnect/core@2.21.8': + resolution: {integrity: sha512-MD1SY7KAeHWvufiBK8C1MwP9/pxxI7SnKi/rHYfjco2Xvke+M+Bbm2OzvuSN7dYZvwLTkZCiJmBccTNVPCpSUQ==} + engines: {node: '>=18'} + + '@walletconnect/core@2.23.2': + resolution: {integrity: sha512-KkaTELRu8t/mt3J9doCQ1fBGCbYsCNfpo2JpKdCwKQR7PVjVKeVpYQK/blVkA5m6uLPpBtVRbOMKjnHW1m7JLw==} + engines: {node: '>=18.20.8'} + + '@walletconnect/core@2.23.9': + resolution: {integrity: sha512-ws4WG8LeagUo2ERRo02HryXRcpwIRmCQ3pHLW5gWbVReLXXIpgk6ZAfID3fEGHevIwwnHSGww+nNhNpdXyiq0g==} + engines: {node: '>=18.20.8'} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/ethereum-provider@2.12.2': + resolution: {integrity: sha512-vBl2zCnNm2iPaomJdr5YT16cT7aa8cH2WFs6879XPngU5i7HXS3bU6TamhyhKKl13sdIfifmCkCC+RWn5GdPMw==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/ethereum-provider@2.21.1': + resolution: {integrity: sha512-SSlIG6QEVxClgl1s0LMk4xr2wg4eT3Zn/Hb81IocyqNSGfXpjtawWxKxiC5/9Z95f1INyBD6MctJbL/R1oBwIw==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/ethereum-provider@2.23.9': + resolution: {integrity: sha512-Cb72KWl9S6mMs+c1MVGlSx07Dap1LFznYyWrg/XT5B8VtBKaH9Sw2lAvAL0ajGet6J5sq8sUx1pkg68tZwkqmA==} + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.1': + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + + '@walletconnect/jsonrpc-provider@1.0.13': + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + + '@walletconnect/jsonrpc-types@1.0.3': + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.14': + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + + '@walletconnect/jsonrpc-ws-connection@1.0.16': + resolution: {integrity: sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.2': + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + + '@walletconnect/logger@2.1.3': + resolution: {integrity: sha512-wRsD0eDQSajj8YMM/jpxoH1yeSLyS7FPkh0VKCQ1BWrERTy1Z7/DmOE8FYm/gmd7Cg6BNXVWiymhGq6wnmlq8w==} + + '@walletconnect/logger@3.0.2': + resolution: {integrity: sha512-7wR3wAwJTOmX4gbcUZcFMov8fjftY05+5cO/d4cpDD8wDzJ+cIlKdYOXaXfxHLSYeDazMXIsxMYjHYVDfkx+nA==} + + '@walletconnect/modal-core@2.7.0': + resolution: {integrity: sha512-oyMIfdlNdpyKF2kTJowTixZSo0PGlCJRdssUN/EZdA6H6v03hZnf09JnwpljZNfir2M65Dvjm/15nGrDQnlxSA==} + + '@walletconnect/modal-ui@2.7.0': + resolution: {integrity: sha512-gERYvU7D7K1ANCN/8vUgsE0d2hnRemfAFZ2novm9aZBg7TEd/4EgB+AqbJ+1dc7GhOL6dazckVq78TgccHb7mQ==} + + '@walletconnect/modal@2.7.0': + resolution: {integrity: sha512-RQVt58oJ+rwqnPcIvRFeMGKuXb9qkgSmwz4noF8JZGUym3gUAzVs+uW2NQ1Owm9XOJAV+sANrtJ+VoVq1ftElw==} + deprecated: Please follow the migration guide on https://docs.reown.com/appkit/upgrade/wcm + + '@walletconnect/relay-api@1.0.11': + resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} + + '@walletconnect/relay-auth@1.0.4': + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + + '@walletconnect/relay-auth@1.1.0': + resolution: {integrity: sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.12.2': + resolution: {integrity: sha512-cM0ualXj6nVvLqS4BDNRk+ZWR+lubcsz/IHreH+3wYrQ2sV+C0fN6ctrd7MMGZss0C0qacWCx0pm62ZBuoKvqA==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/sign-client@2.17.1': + resolution: {integrity: sha512-6rLw6YNy0smslH9wrFTbNiYrGsL3DrOsS5FcuU4gIN6oh8pGYOFZ5FiSyTTroc5tngOk3/Sd7dlGY9S7O4nveg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/sign-client@2.21.0': + resolution: {integrity: sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/sign-client@2.21.1': + resolution: {integrity: sha512-QaXzmPsMnKGV6tc4UcdnQVNOz4zyXgarvdIQibJ4L3EmLat73r5ZVl4c0cCOcoaV7rgM9Wbphgu5E/7jNcd3Zg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/sign-client@2.21.8': + resolution: {integrity: sha512-lTcUbMjQ0YUZ5wzCLhpBeS9OkWYgLLly6BddEp2+pm4QxiwCCU2Nao0nBJXgzKbZYQOgrEGqtdm/7ze67gjzRA==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/sign-client@2.23.2': + resolution: {integrity: sha512-LL5KgmJHvY5NqQn+ZHQJLia1p6fpUWXHtiG97S5rNfyuPx6gT/Jkkwqc2LwdmAjFkr61t8zTagHC9ETq203mNA==} + + '@walletconnect/sign-client@2.23.9': + resolution: {integrity: sha512-Xj+hw4E6mGRyhCdVOT/RMgnG+up/Y3v0ho5PlkVozvXWeVSqHNh9DmjLuU97a7OACoGd/oHBF6g3NVqD7MgCMQ==} + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.12.2': + resolution: {integrity: sha512-9CmwTlPbrFTzayTL9q7xM7s3KTJkS6kYFtH2m1/fHFgALs6pIUjf1qAx1TF2E4tv7SEzLAIzU4NqgYUt2vWXTg==} + + '@walletconnect/types@2.17.1': + resolution: {integrity: sha512-aiUeBE3EZZTsZBv5Cju3D0PWAsZCMks1g3hzQs9oNtrbuLL6pKKU0/zpKwk4vGywszxPvC3U0tBCku9LLsH/0A==} + + '@walletconnect/types@2.21.0': + resolution: {integrity: sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==} + + '@walletconnect/types@2.21.1': + resolution: {integrity: sha512-UeefNadqP6IyfwWC1Yi7ux+ljbP2R66PLfDrDm8izmvlPmYlqRerJWJvYO4t0Vvr9wrG4Ko7E0c4M7FaPKT/sQ==} + + '@walletconnect/types@2.21.8': + resolution: {integrity: sha512-xuLIPrLxe6viMu8Uk28Nf0sgyMy+4oT0mroOjBe5Vqyft8GTiwUBKZXmrGU9uDzZsYVn1FXLO9CkuNHXda3ODA==} + + '@walletconnect/types@2.23.2': + resolution: {integrity: sha512-5dxBCdUM+4Dqe1/A7uqkm2tWPXce4UUGSr+ImfI0YjwEExQS8+TzdOlhMt3n32ncnBCllU5paG+fsndT06R0iw==} + + '@walletconnect/types@2.23.9': + resolution: {integrity: sha512-IUl1PpD/Dig8IE2OZ9XtjbPohEyOZJ73xs92EDUzoIyzRtfm36g2D340pY3iu3AAdLv1yFiaZafB8Hf8RFze8A==} + + '@walletconnect/universal-provider@2.12.2': + resolution: {integrity: sha512-0k5ZgSkABopQLVhkiwl2gRGG7dAP4SWiI915pIlyN5sRvWV+qX1ALhWAmRcdv0TXWlKHDcDgPJw/q2sCSAHuMQ==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/universal-provider@2.21.0': + resolution: {integrity: sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/universal-provider@2.21.1': + resolution: {integrity: sha512-Wjx9G8gUHVMnYfxtasC9poGm8QMiPCpXpbbLFT+iPoQskDDly8BwueWnqKs4Mx2SdIAWAwuXeZ5ojk5qQOxJJg==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/universal-provider@2.21.8': + resolution: {integrity: sha512-Nc1Z6VXnya152yucNDPnlTkrhG289tCUfcjiWqDmwNYzFSfdT5oJQHlnffQXlvoks90kn5Ru8Rnwag2CH1YOVQ==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/universal-provider@2.23.2': + resolution: {integrity: sha512-vs9iorPUAiVesFJ95O6XvLjmRgF+B2TspxJNL90ZULbrkRw4JFsmaRdb965PZKc+s182k1MkS/MQ0o964xRcEw==} + + '@walletconnect/universal-provider@2.23.9': + resolution: {integrity: sha512-dNk6X1USUcIX1nx3H61V3pO15E/2ejyeBsKLBOo8YXrnYCrKGG/KB1LIqJXHpQlXT+9bJE9cOnn61ETdCXgkPw==} + + '@walletconnect/utils@2.12.2': + resolution: {integrity: sha512-zf50HeS3SfoLv1N9GPl2IXTZ9TsXfet4usVAsZmX9P6/Xzq7d/7QakjVQCHH/Wk1O9XkcsfeoZoUhRxoMJ5uJw==} + + '@walletconnect/utils@2.17.1': + resolution: {integrity: sha512-KL7pPwq7qUC+zcTmvxGqIyYanfHgBQ+PFd0TEblg88jM7EjuDLhjyyjtkhyE/2q7QgR7OanIK7pCpilhWvBsBQ==} + + '@walletconnect/utils@2.21.0': + resolution: {integrity: sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==} + + '@walletconnect/utils@2.21.1': + resolution: {integrity: sha512-VPZvTcrNQCkbGOjFRbC24mm/pzbRMUq2DSQoiHlhh0X1U7ZhuIrzVtAoKsrzu6rqjz0EEtGxCr3K1TGRqDG4NA==} + + '@walletconnect/utils@2.21.8': + resolution: {integrity: sha512-HtMraGJ9qXo55l4wGSM1aZvyz0XVv460iWhlRGAyRl9Yz8RQeKyXavDhwBfcTFha/6kwLxPExqQ+MURtKeVVXw==} + + '@walletconnect/utils@2.23.2': + resolution: {integrity: sha512-ReSjU3kX+3i3tYJQZbVfetY5SSUL+iM6uiIVVD1PJalePa/5A40VgLVRTF7sDCJTIFfpf3Mt4bFjeaYuoxWtIw==} + + '@walletconnect/utils@2.23.9': + resolution: {integrity: sha512-C5TltCs8UPypNiteYnKSv8+ZDK2EjVDyXCxN6kA9bkA+j6KGsNIV7l9MUA8WBAvE5Gi5EcBdhD3R9Hpo/1HHqQ==} + + '@walletconnect/web3wallet@1.16.1': + resolution: {integrity: sha512-l6jVoLEh/UtRfvYUDs52fN+LYXsBgx3F9WfErJuCSCFfpbxDKIzM2Y9sI0WI1/5dWN5sh24H1zNCXnQ4JJltZw==} + deprecated: Web3Wallet is now Reown WalletKit. Please follow the upgrade guide at https://docs.reown.com/walletkit/upgrade/from-web3wallet-web + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abitype@1.0.0: + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.6: + resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.8: + resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.1.0: + resolution: {integrity: sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.2.3: + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.2.4: + resolution: {integrity: sha512-dpKH+N27vRjarMVTFFkeY445VTKftzGWpL0FiT7xmVmzQRKazZexzC5uHG0f6XKsVLAuUlndnbGau6lRejClxg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + abortcontroller-polyfill@1.7.8: + resolution: {integrity: sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==} + + abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -2570,13 +5684,28 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: @@ -2591,6 +5720,14 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2603,6 +5740,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} @@ -2618,6 +5759,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + aproba@2.1.0: + resolution: {integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==} + archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} @@ -2630,12 +5774,20 @@ packages: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2643,6 +5795,9 @@ packages: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -2658,6 +5813,10 @@ packages: resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -2682,13 +5841,32 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + + asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + asn1js@3.0.10: + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} + assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} + assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -2700,12 +5878,22 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + autoprefixer@10.4.27: resolution: {integrity: sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==} engines: {node: ^10 || ^12 || >=14} @@ -2717,6 +5905,9 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + avvio@8.4.0: + resolution: {integrity: sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==} + aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} @@ -2727,9 +5918,23 @@ packages: resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} + axios-retry@4.5.0: + resolution: {integrity: sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==} + peerDependencies: + axios: 0.x || 1.x + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + axios@1.13.5: resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} + axios@1.13.6: + resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -2742,6 +5947,35 @@ packages: react-native-b4a: optional: true + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-preset-current-node-syntax@1.2.0: + resolution: {integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==} + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2790,6 +6024,15 @@ packages: bare-url@2.4.0: resolution: {integrity: sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==} + base-x@3.0.11: + resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} + + base-x@4.0.1: + resolution: {integrity: sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==} + + base-x@5.0.1: + resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2801,9 +6044,22 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + bcrypt@5.1.1: + resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} + engines: {node: '>= 10.0.0'} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2811,9 +6067,27 @@ packages: birecord@0.1.1: resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + bluebird@2.11.0: resolution: {integrity: sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==} + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.3: + resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + bn.js@5.2.3: + resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} + body-parser@1.20.4: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -2821,6 +6095,9 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2835,18 +6112,85 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + brotli-wasm@3.0.1: + resolution: {integrity: sha512-U3K72/JAi3jITpdhZBqzSUq+DUY697tLxOuFXB+FpAE/Ug+5C3VZrv4uA674EUZHxNAuQ9wETXNqQkxZD6oL4A==} + engines: {node: '>=v18.0.0'} + + browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.5: + resolution: {integrity: sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==} + engines: {node: '>= 0.10'} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + buffer-crc32@1.0.0: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + + buffer-to-arraybuffer@0.0.5: + resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -2854,18 +6198,49 @@ packages: resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==} engines: {node: '>=6.14.2'} + bufio@1.2.3: + resolution: {integrity: sha512-5Tt66bRzYUSlVZatc0E92uDenreJ+DpTBmSAUwL4VSxJn3e6cUyYwx+PoqML0GRZatgA/VX8ybhxItF8InZgqA==} + engines: {node: '>=8.0.0'} + builtin-modules@5.0.0: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + c12@3.3.4: + resolution: {integrity: sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + + cacheable-lookup@6.1.0: + resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} + engines: {node: '>=10.6.0'} + + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2886,6 +6261,14 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} @@ -2898,6 +6281,10 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + chai@5.3.3: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} @@ -2910,9 +6297,17 @@ 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} + change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -2931,6 +6326,9 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + chart.js@4.5.1: resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} engines: {pnpm: '>=8'} @@ -2940,6 +6338,9 @@ packages: peerDependencies: chart.js: '>=3.0.0' + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.3: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} @@ -2948,10 +6349,49 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + ci-info@4.4.0: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} + cid-tool@3.0.0: + resolution: {integrity: sha512-rgpV/LzuxUsGCJvUHe9+OuOAENVCiTn+mgGT8Nee1qDLS3xFGBUvZQdsY9MEpUi0YOFy6oz1pybHErcvE4SlGw==} + hasBin: true + + cids@0.7.5: + resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} + engines: {node: '>=4.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by the multiformats module + + cids@1.1.9: + resolution: {integrity: sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==} + engines: {node: '>=4.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by the multiformats module + + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + class-is@1.1.0: + resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} + class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} @@ -2959,9 +6399,34 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2976,13 +6441,40 @@ packages: react: ^18 || ^19 || ^19.0.0-rc react-dom: ^18 || ^19 || ^19.0.0-rc + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.3: + resolution: {integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} + engines: {node: '>=14.6'} + color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@2.1.0: + resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} + engines: {node: '>=12.20'} + + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} + engines: {node: '>=18'} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} + engines: {node: '>=18'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -2997,6 +6489,14 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -3016,6 +6516,14 @@ packages: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -3025,30 +6533,70 @@ packages: confbox@0.2.4: resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} + content-hash@2.5.2: + resolution: {integrity: sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==} + content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} + cookie-signature@1.0.7: resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -3058,13 +6606,46 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-browserify@3.12.1: + resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} + engines: {node: '>= 0.10'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + css-color-keywords@1.0.0: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} @@ -3072,15 +6653,26 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} + cssstyle@5.3.7: resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} engines: {node: '>=20'} @@ -3132,6 +6724,10 @@ packages: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -3143,6 +6739,10 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + data-urls@6.0.1: resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} engines: {node: '>=20'} @@ -3162,9 +6762,16 @@ packages: date-fns-jalali@4.1.0-0: resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -3181,6 +6788,15 @@ packages: supports-color: optional: true + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -3190,6 +6806,10 @@ packages: supports-color: optional: true + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + decimal.js-light@2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} @@ -3199,25 +6819,79 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + dedent@1.7.2: + resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} @@ -3230,14 +6904,32 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + derive-valtio@0.1.0: + resolution: {integrity: sha512-OCg2UsLbXK7GmmpzMXhYkdO64vhJ1ROUUGaTFyHjVwEdMEcTTRj7W1TxLbSBxdY8QLBPCcp66MTyaSy0RpO17A==} + peerDependencies: + valtio: '*' + + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} @@ -3251,10 +6943,24 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + diff@4.0.4: resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -3262,14 +6968,42 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + + domain-browser@4.22.0: + resolution: {integrity: sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==} + engines: {node: '>=10'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + dynamic-dedupe@0.3.0: resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} @@ -3279,12 +7013,39 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + eciesjs@0.4.18: + resolution: {integrity: sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==} + engines: {bun: '>=1', deno: '>=2', node: '>=16'} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + eip1193-provider@1.0.1: + resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + electron-to-chromium@1.5.327: resolution: {integrity: sha512-hLxLdIJDf8zIzKoH2TPCs+Botc+wUmj9sp4jVMwklY/sKleM8xxxOExRX3Gxj73nCXmJe3anhG7SvsDDPDvmuQ==} + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3295,10 +7056,26 @@ packages: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + engine.io-client@6.6.4: + resolution: {integrity: sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + enhanced-resolve@5.20.1: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} @@ -3311,6 +7088,12 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} + erc721a-upgradeable@3.3.0: + resolution: {integrity: sha512-ILE0SjKuvhx+PABG0A/41QUp0MFiYmzrgo71htQ0Ov6JfDOmgUzGxDW8gZuYfKrdlYjNwSAqMpUFWBbyW3sWBA==} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + es-abstract@1.24.1: resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} @@ -3323,6 +7106,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-iterator-helpers@1.3.1: resolution: {integrity: sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==} engines: {node: '>= 0.4'} @@ -3349,9 +7135,32 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es-toolkit@1.33.0: + resolution: {integrity: sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==} + + es-toolkit@1.39.3: + resolution: {integrity: sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==} + + es-toolkit@1.44.0: + resolution: {integrity: sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==} + es-toolkit@1.45.1: resolution: {integrity: sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==} + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -3368,6 +7177,10 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -3563,6 +7376,12 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@5.2.0: resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} engines: {node: '>=10'} @@ -3667,6 +7486,10 @@ packages: '@vue/compiler-sfc': ^3.3.0 eslint: '>=9.0.0' + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3687,6 +7510,12 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + eslint@9.39.4: resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3697,6 +7526,10 @@ packages: jiti: optional: true + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3709,6 +7542,11 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + esquery@1.7.0: resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} @@ -3735,14 +7573,92 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + + eth-ens-namehash@2.0.8: + resolution: {integrity: sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==} + + eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + + eth-lib@0.1.29: + resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==} + + eth-lib@0.2.8: + resolution: {integrity: sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==} + + eth-provider@0.13.7: + resolution: {integrity: sha512-D07HcKBQ0+liERDbkwpex03Y5D7agOMBv8NMkGu0obmD+vHzP9q8jI/tkZMfYAhbfXwpudEgXKiJODXH5UQu7g==} + + eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + + eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereum-provider@0.7.7: + resolution: {integrity: sha512-ulbjKgu1p2IqtZqNTNfzXysvFJrMR3oTmWEEX3DnoEae7WLd4MkY4u82kvXhxA2C171rK8IVlcodENX7TXvHTA==} + + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + deprecated: This library has been deprecated and usage is discouraged. + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethers@5.8.0: + resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==} + ethers@6.16.0: resolution: {integrity: sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==} engines: {node: '>=14.0.0'} + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + + eventemitter3@4.0.4: + resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + eventemitter3@5.0.4: resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} @@ -3753,10 +7669,38 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + explain-error@1.0.4: + resolution: {integrity: sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ==} + + express-rate-limit@7.5.1: + resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' + express@4.22.1: resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} @@ -3764,13 +7708,26 @@ packages: exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} + extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} + fast-content-type-parse@1.1.0: + resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} + + fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3791,12 +7748,46 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-json-stringify@5.16.1: + resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==} + fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-text-encoding@1.0.6: + resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} + + fast-uri@2.4.0: + resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + + fastify-plugin@4.5.1: + resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} + + fastify-type-provider-zod@1.2.0: + resolution: {integrity: sha512-2zkPEWFIBYzkGQ0kmn8gOW5tlQOmdDWn5edF5LQ2r0RiydFGhD86FVZX6wLraXAmdFm8P1CMmo19lwlGb0mZrA==} + peerDependencies: + fastify: ^4.0.0 + zod: ^3.14.2 + + fastify@4.29.1: + resolution: {integrity: sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -3806,6 +7797,9 @@ packages: fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -3815,10 +7809,20 @@ packages: picomatch: optional: true + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3827,18 +7831,37 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + finalhandler@1.3.2: resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} + find-my-way@8.2.2: + resolution: {integrity: sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==} + engines: {node: '>=14'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up-simple@1.0.1: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3846,6 +7869,9 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -3866,6 +7892,17 @@ packages: forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + form-data-encoder@1.7.1: + resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@2.5.5: + resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} + engines: {node: '>= 0.12'} + form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -3903,6 +7940,16 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + fs-extra@4.0.3: + resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} + + fs-minipass@1.2.7: + resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3926,10 +7973,27 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + fuse.js@7.0.0: + resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} + engines: {node: '>=10'} + fuse.js@7.1.0: resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==} engines: {node: '>=10'} + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + + gcp-metadata@6.1.1: + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} + engines: {node: '>=14'} + generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -3938,6 +8002,17 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -3946,10 +8021,26 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -3957,9 +8048,16 @@ packages: get-tsconfig@4.13.7: resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} + getpass@0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + giget@3.2.0: + resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} + hasBin: true + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -3980,6 +8078,13 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3996,19 +8101,72 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + goober@2.1.18: + resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==} + peerDependencies: + csstype: ^3.0.10 + + google-auth-library@9.15.1: + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} + engines: {node: '>=14'} + + google-gax@4.6.1: + resolution: {integrity: sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==} + engines: {node: '>=14'} + + google-logging-utils@0.0.2: + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + engines: {node: '>=14'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + + got@12.1.0: + resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} + engines: {node: '>=14.16'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + + h3@1.15.11: + resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + + handlebars@4.7.9: + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} @@ -4032,6 +8190,20 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + hash-base@3.0.5: + resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} + engines: {node: '>= 0.10'} + + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -4054,12 +8226,29 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} highlightjs-vue@1.0.0: resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + hono@4.12.14: + resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==} + engines: {node: '>=16.9.0'} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -4067,18 +8256,50 @@ packages: html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} + http-https@1.0.0: + resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + http-signature@1.4.0: resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} engines: {node: '>=0.10'} + http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -4086,14 +8307,40 @@ packages: https@1.0.0: resolution: {integrity: sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} + idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + + identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + + idna-uts46-hx@2.3.1: + resolution: {integrity: sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==} + engines: {node: '>=4.0.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -4105,6 +8352,9 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immer@10.2.0: resolution: {integrity: sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==} @@ -4115,10 +8365,19 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} @@ -4127,9 +8386,18 @@ packages: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + input-otp@1.4.2: + resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -4150,6 +8418,9 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -4162,10 +8433,17 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -4182,6 +8460,9 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + is-builtin-module@5.0.0: resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} engines: {node: '>=18.20'} @@ -4211,6 +8492,11 @@ packages: is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4223,6 +8509,13 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + is-generator-function@1.1.2: resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} @@ -4231,6 +8524,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + is-hexadecimal@1.0.4: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} @@ -4243,10 +8540,27 @@ packages: eslint: '*' typescript: '>=4.7.4' + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -4259,6 +8573,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -4266,6 +8584,10 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} + is-retry-allowed@2.2.0: + resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==} + engines: {node: '>=10'} + is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} @@ -4278,6 +8600,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -4293,6 +8619,14 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -4305,6 +8639,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -4314,9 +8652,55 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic-timers-promises@1.0.1: + resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} + engines: {node: '>=10'} + + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + + isows@1.0.4: + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} + peerDependencies: + ws: '*' + + isows@1.0.6: + resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} + peerDependencies: + ws: '*' + + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' + isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -4324,13 +8708,165 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + jose@6.2.2: + resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} + + js-sha3@0.5.7: + resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-sha3@0.9.3: + resolution: {integrity: sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -4350,6 +8886,15 @@ packages: resolution: {integrity: sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==} engines: {node: '>=20.0.0'} + jsdom@23.2.0: + resolution: {integrity: sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + jsdom@27.4.0: resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -4364,9 +8909,25 @@ packages: engines: {node: '>=6'} hasBin: true + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + + json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + + json-schema-ref-resolver@1.0.1: + resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4399,6 +8960,17 @@ packages: resolution: {integrity: sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} + engines: {node: '>=12', npm: '>=6'} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + jsprim@2.0.2: resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} engines: {'0': node >=0.6.0} @@ -4407,9 +8979,32 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + key-encoder@2.0.3: + resolution: {integrity: sha512-fgBtpAGIr/Fy5/+ZLQZIPPhsZEcbSlYu/Wu96tNDFNSjSACw5lEIOFeaVdQ/iwrb8oxjlWi6wmWdH76hV6GZjg==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -4421,10 +9016,20 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + + light-my-request@5.14.0: + resolution: {integrity: sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -4502,26 +9107,97 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-element@4.2.2: + resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit-html@3.3.2: + resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + + lit@3.3.0: + resolution: {integrity: sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} + localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -4529,9 +9205,20 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} @@ -4550,12 +9237,30 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-sdk@13.6.2: + resolution: {integrity: sha512-ZjIZM2gqaxxOR+ZAyKVw50akjfdyo0q5hZzrCMiqyCqh4BXulU7yqHgUa/5/nJ+0/4xBgUejoOcDEm+UdmzLjA==} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -4563,6 +9268,12 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -4599,6 +9310,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} @@ -4609,14 +9323,24 @@ packages: merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -4708,6 +9432,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -4721,10 +9449,48 @@ packages: engines: {node: '>=4'} hasBin: true + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} @@ -4739,6 +9505,10 @@ packages: resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -4746,10 +9516,45 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@1.3.3: + resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mipd@0.0.7: + resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + mkdirp-promise@5.0.1: + resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==} + engines: {node: '>=4'} + deprecated: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that. + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -4758,12 +9563,18 @@ packages: mlly@1.8.2: resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + mock-fs@4.14.0: + resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} + motion-dom@12.38.0: resolution: {integrity: sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==} motion-utils@12.36.0: resolution: {integrity: sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==} + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + motion@12.38.0: resolution: {integrity: sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w==} peerDependencies: @@ -4778,12 +9589,54 @@ packages: react-dom: optional: true + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multibase@0.6.1: + resolution: {integrity: sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==} + deprecated: This module has been superseded by the multiformats module + + multibase@0.7.0: + resolution: {integrity: sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==} + deprecated: This module has been superseded by the multiformats module + + multibase@4.0.6: + resolution: {integrity: sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + deprecated: This module has been superseded by the multiformats module + + multicodec@0.5.7: + resolution: {integrity: sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==} + deprecated: This module has been superseded by the multiformats module + + multicodec@1.0.4: + resolution: {integrity: sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==} + deprecated: This module has been superseded by the multiformats module + + multicodec@3.2.1: + resolution: {integrity: sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==} + deprecated: This module has been superseded by the multiformats module + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + multihashes@0.4.21: + resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==} + + multihashes@4.0.3: + resolution: {integrity: sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true @@ -4791,6 +9644,9 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nano-json-stream-parser@0.1.2: + resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4812,12 +9668,22 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + next@15.5.8: resolution: {integrity: sha512-Tma2R50eiM7Fx6fbDeHiThq7sPgl06mBr76j6Ga0lMFGrmaLitFsy31kykgb8Z++DR2uIEKi2RZ0iyjIwFd15Q==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -4840,6 +9706,16 @@ packages: sass: optional: true + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-cron@3.0.3: + resolution: {integrity: sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==} + engines: {node: '>=6.0.0'} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -4849,6 +9725,18 @@ packages: resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} engines: {node: '>= 0.4'} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-fetch@3.3.2: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4857,20 +9745,58 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-libs-browser@2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + + node-mock-http@1.0.4: + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} + node-releases@2.0.36: resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + node-stdlib-browser@1.3.1: + resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} + engines: {node: '>=10'} + node-vault@0.10.9: resolution: {integrity: sha512-WBZmNt1AuWY0+Yr2A1urZyP94+qciQEEnI4GlhLdO+1kX+4E+w4n0N6CeMh56T5bJ1MIuUpshxtow0h66EaO2w==} engines: {node: '>= 18.0.0'} + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + nuqs@2.8.9: resolution: {integrity: sha512-8ou6AEwsxMWSYo2qkfZtYFVzngwbKmg4c00HVxC1fF6CEJv3Fwm6eoZmfVPALB+vw8Udo7KL5uy96PFcYe1BIQ==} peerDependencies: @@ -4895,6 +9821,9 @@ packages: oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -4910,6 +9839,10 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -4934,50 +9867,198 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + oboe@2.1.5: + resolution: {integrity: sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==} + obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@10.1.1: + resolution: {integrity: sha512-zy1wx4+P3PfhXSEPJNtZmJXfhkkIaxU1VauWIrDZw1O7uJRDRJtKr9n3Ic4NgbA16KyOxOXO2ng9gYwCdXuSXA==} + engines: {node: '>=18'} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + openapi-fetch@0.13.8: + resolution: {integrity: sha512-yJ4QKRyNxE44baQ9mY5+r/kAzZ8yXMemtNAOFwOzRXJscdjSxxzWSNlyBAr+o5JjkUw9Lc3W7OIoca0cY3PYnQ==} + + openapi-typescript-helpers@0.0.15: + resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + ox@0.14.20: + resolution: {integrity: sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.6.7: + resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.6.9: + resolution: {integrity: sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.7.0: + resolution: {integrity: sha512-mgRXlQdaNukQcsvGsPENGbyFvr7glob8UmOusDfWTw7A6LcjI+9OCelQ6NoAiSk6iM77R667qyUzn+n2Cr4SJw==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.7.1: + resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.9.17: + resolution: {integrity: sha512-rKAnhzhRU3Xh3hiko+i1ZxywZ55eWQzeS/Q4HRKLx2PqfHOolisZHErSsJVipGlmQKHW5qwOED/GighEw9dbLg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.9.3: + resolution: {integrity: sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + ox@0.9.6: + resolution: {integrity: sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + oxfmt@0.35.0: resolution: {integrity: sha512-QYeXWkP+aLt7utt5SLivNIk09glWx9QE235ODjgcEZ3sd1VMaUBSpLymh6ZRCA76gD2rMP4bXanUz/fx+nLM9Q==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-asn1@5.1.9: + resolution: {integrity: sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==} + engines: {node: '>= 0.10'} + parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} @@ -4988,12 +10069,22 @@ packages: resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} engines: {node: '>=14'} + parse-headers@2.0.6: + resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} + parse-imports-exports@0.2.4: resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parse-statements@1.0.11: resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} @@ -5001,6 +10092,12 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + path-browserify@0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -5013,6 +10110,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==} @@ -5023,16 +10124,67 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.1: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-connection-string@2.12.0: + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.13.0: + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.13.0: + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.20.0: + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5048,10 +10200,50 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino-std-serializers@7.1.0: + resolution: {integrity: sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==} + + pino@10.0.0: + resolution: {integrity: sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==} + hasBin: true + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pino@9.14.0: + resolution: {integrity: sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==} + hasBin: true + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -5072,9 +10264,49 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + pnpm-workspace-yaml@1.6.0: resolution: {integrity: sha512-uUy4dK3E11sp7nK+hnT7uAWfkBMe00KaUw8OG3NuNlYQoTk4sc9pcdIy1+XIP85v9Tvr02mK3JPaNNrP0QyRaw==} + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + porto@0.2.35: + resolution: {integrity: sha512-gu9FfjjvvYBgQXUHWTp6n3wkTxVtEcqFotM7i3GEZeoQbvLGbssAicCz6hFZ8+xggrJWwi/RLmbwNra50SMmUQ==} + hasBin: true + peerDependencies: + '@tanstack/react-query': '>=5.59.0' + '@wagmi/core': '>=2.16.3' + expo-auth-session: '>=7.0.8' + expo-crypto: '>=15.0.7' + expo-web-browser: '>=15.0.8' + react: '>=18' + react-native: '>=0.81.4' + typescript: '>=5.4.0' + viem: '>=2.37.0' + wagmi: '>=2.0.0' + peerDependenciesMeta: + '@tanstack/react-query': + optional: true + expo-auth-session: + optional: true + expo-crypto: + optional: true + expo-web-browser: + optional: true + react: + optional: true + react-native: + optional: true + typescript: + optional: true + wagmi: + optional: true + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -5138,10 +10370,36 @@ packages: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + postman-request@2.88.1-postman.48: resolution: {integrity: sha512-E32FGh8ig2KDvzo4Byi7Ibr+wK2gNKPSqXoNsvjdCHgDBxSK4sCUwv+aa3zOBUwfiibPImHMy0WdlDSSCTqTuw==} engines: {node: '>= 16'} + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + preact@10.24.2: + resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} + + preact@10.29.1: + resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -5155,6 +10413,14 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + prismjs@1.27.0: resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} engines: {node: '>=6'} @@ -5166,10 +10432,23 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -5179,33 +10458,115 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proto3-json-serializer@2.0.2: + resolution: {integrity: sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==} + engines: {node: '>=14.0.0'} + + protobufjs@7.5.5: + resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==} + engines: {node: '>=12.0.0'} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-compare@2.6.0: + resolution: {integrity: sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw==} + + proxy-compare@3.0.1: + resolution: {integrity: sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.1.0: + resolution: {integrity: sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + qs@6.14.2: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} + qs@6.5.5: + resolution: {integrity: sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==} + engines: {node: '>=0.6'} + quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -5218,6 +10579,9 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} + rc9@3.0.1: + resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + react-chartjs-2@5.3.1: resolution: {integrity: sha512-h5IPXKg9EXpjoBzUfyWJvllMjG2mQ4EiuHQFhms/AjUm0XSZHhyRy2xVmLXHKrtcdrPO4mnGqRtYoD0vp95A0A==} peerDependencies: @@ -5246,11 +10610,23 @@ packages: peerDependencies: react: '>=16.8.0' + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + react-dom@19.2.3: resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: react: ^19.2.3 + react-hot-toast@2.6.0: + resolution: {integrity: sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + react-dom: '>=16' + react-icons@5.6.0: resolution: {integrity: sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==} peerDependencies: @@ -5259,6 +10635,12 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-redux@9.2.0: resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} peerDependencies: @@ -5271,6 +10653,10 @@ packages: redux: optional: true + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + react-refresh@0.18.0: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} @@ -5285,6 +10671,16 @@ packages: '@types/react': optional: true + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-remove-scroll@2.7.2: resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} @@ -5295,6 +10691,19 @@ packages: '@types/react': optional: true + react-router-dom@6.30.3: + resolution: {integrity: sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.30.3: + resolution: {integrity: sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} @@ -5325,6 +10734,10 @@ packages: react-dom: optional: true + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + react@19.2.3: resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} @@ -5335,6 +10748,10 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readable-stream@4.7.0: resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5346,6 +10763,18 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + recharts@3.6.0: resolution: {integrity: sha512-L5bjxvQRAe26RlToBAziKUB7whaGKEwD3znoM6fz3DrTowCIC/FnJYnuq1GEzB8Zv2kdTfaxQfi5GoH0tBinyg==} engines: {node: '>=18'} @@ -5354,6 +10783,10 @@ packages: react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -5400,10 +10833,22 @@ packages: resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -5414,13 +10859,28 @@ packages: resolution: {integrity: sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==} engines: {node: '>=18'} + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -5431,15 +10891,46 @@ packages: engines: {node: '>= 0.4'} hasBin: true + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + ret@0.4.3: + resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} + engines: {node: '>=10'} + + retry-request@7.0.2: + resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==} + engines: {node: '>=14'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + rolldown@1.0.0-rc.12: resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -5450,6 +10941,16 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -5463,6 +10964,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-json-utils@1.1.1: + resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} + safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -5471,6 +10975,13 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} + safe-regex2@3.1.0: + resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5478,17 +10989,35 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} + secp256k1@4.0.4: + resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} + engines: {node: '>=18.0.0'} + + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -5502,6 +11031,16 @@ packages: resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} + servify@0.1.12: + resolution: {integrity: sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==} + engines: {node: '>=6'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.7.2: + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -5514,9 +11053,17 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} + hasBin: true + shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -5551,17 +11098,45 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@2.8.2: + resolution: {integrity: sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==} + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slow-redact@0.3.2: + resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} + smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + socket.io-client@4.8.3: + resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.6: + resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==} + engines: {node: '>=10.0.0'} + socks-proxy-agent@8.0.5: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} @@ -5570,6 +11145,15 @@ packages: resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + solady@0.0.180: + resolution: {integrity: sha512-9QVCyMph+wk78Aq/GxtDAQg7dvNoVWx2dS2Zwf11XlwFKDZ+YJG2lrQsK9NEIth9NOebwjBXAYk4itdwOOE4aw==} + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + sonic-boom@4.2.1: + resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} + sonner@2.0.7: resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: @@ -5580,9 +11164,16 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -5602,6 +11193,20 @@ packages: spdx-license-ids@3.0.23: resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -5610,6 +11215,13 @@ packages: stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -5626,16 +11238,50 @@ packages: std-env@4.0.0: resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + + stream-http@2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + + stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + stream-length@1.0.2: resolution: {integrity: sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==} + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + streamx@2.25.0: resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + string-ts@2.3.1: resolution: {integrity: sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==} @@ -5647,6 +11293,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} @@ -5688,6 +11338,26 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + strip-indent@4.1.1: resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} @@ -5700,6 +11370,12 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + styled-components@6.3.12: resolution: {integrity: sha512-hFR6xsVkVYbsdcUlzPYFvFfoc6o2KlV0VvgRIQwSYMtdThM7SCxnjX9efh/cWce2kTq16I/Kl3xM98xiLptsXA==} engines: {node: '>= 16'} @@ -5723,6 +11399,9 @@ packages: babel-plugin-macros: optional: true + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} @@ -5731,14 +11410,25 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + swarm-js@0.1.42: + resolution: {integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -5774,12 +11464,36 @@ packages: tar-stream@3.1.8: resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} + tar@4.4.19: + resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} + engines: {node: '>=4.5'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + teeny-request@9.0.0: + resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} + engines: {node: '>=14'} + teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -5787,6 +11501,124 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thirdweb@5.119.4: + resolution: {integrity: sha512-kWtpjtLaLehEi/v937cN3XeBIW6zM/PKgulFMdIEJsP960kLBeFHFAJaysLixkh2Jxd1JA2hlXNUrQbgIDsYfQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@aws-sdk/client-kms': '*' + '@aws-sdk/client-lambda': ^3 + '@aws-sdk/credential-providers': ^3 + '@coinbase/wallet-mobile-sdk': ^1 + '@mobile-wallet-protocol/client': ^1 + '@react-native-async-storage/async-storage': '*' + ethers: ^5 || ^6 + expo-linking: '*' + expo-web-browser: '*' + react: ^18 || ^19 + react-native: '*' + react-native-aes-gcm-crypto: ^0.2 + react-native-passkey: ^3 + react-native-quick-crypto: '>=0.7.0-rc.6 || >=0.7' + react-native-svg: ^15 + typescript: '>=5.0.4' + peerDependenciesMeta: + '@aws-sdk/client-kms': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/credential-providers': + optional: true + '@coinbase/wallet-mobile-sdk': + optional: true + '@mobile-wallet-protocol/client': + optional: true + '@react-native-async-storage/async-storage': + optional: true + ethers: + optional: true + expo-linking: + optional: true + expo-web-browser: + optional: true + react: + optional: true + react-native: + optional: true + react-native-aes-gcm-crypto: + optional: true + react-native-passkey: + optional: true + react-native-quick-crypto: + optional: true + react-native-svg: + optional: true + typescript: + optional: true + + thirdweb@5.29.6: + resolution: {integrity: sha512-OR/YjArZE2gc72kwJENbbWqxT6AY/X7phdyuu9GgG2O56/vbr4rytKdPesGUeYZ3dY5moUgZZgff+FmQhW0OCA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@aws-sdk/client-lambda': ^3 + '@aws-sdk/credential-providers': ^3 + '@coinbase/wallet-mobile-sdk': ^1 + '@react-native-async-storage/async-storage': ^1 + amazon-cognito-identity-js: ^6 + aws-amplify: ^5 + ethers: ^5 || ^6 + expo-web-browser: ^13 + react: '>=18' + react-native: '>=0.70' + react-native-aes-gcm-crypto: ^0.2 + react-native-quick-crypto: '>=0.7.0-rc.6 || >=0.7' + typescript: '>=5.0.4' + peerDependenciesMeta: + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/credential-providers': + optional: true + '@coinbase/wallet-mobile-sdk': + optional: true + '@react-native-async-storage/async-storage': + optional: true + amazon-cognito-identity-js: + optional: true + aws-amplify: + optional: true + ethers: + optional: true + expo-web-browser: + optional: true + react: + optional: true + react-native: + optional: true + react-native-aes-gcm-crypto: + optional: true + react-native-quick-crypto: + optional: true + typescript: + optional: true + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + three@0.146.0: + resolution: {integrity: sha512-1lvNfLezN6OJ9NaFAhfX4sm5e9YCzHtaRgZ1+B4C+Hv6TibRMsuBAM5/wVKzxjpYIlMymvgsHEFrrigEfXnb2A==} + + timed-out@4.0.1: + resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} + engines: {node: '>=0.10.0'} + + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -5804,6 +11636,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + tinypool@1.1.1: resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -5820,6 +11656,10 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -5831,6 +11671,16 @@ packages: resolution: {integrity: sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==} hasBin: true + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5839,6 +11689,13 @@ packages: resolution: {integrity: sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==} engines: {node: '>=20'} + toad-cache@3.7.0: + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} + engines: {node: '>=12'} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -5847,10 +11704,32 @@ packages: resolution: {integrity: sha512-9mjy3frhioGIVGcwamlVlUyJ9x+WHw/TXiz9R4YOlmsIuBN43r9Dp8HZ35SF9EKjHrn3BUZj04CF+YqZ2oJ+7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + tough-cookie@6.0.1: resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tr46@6.0.0: resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} engines: {node: '>=20'} @@ -5859,6 +11738,20 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} @@ -5873,6 +11766,33 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-jest@29.4.9: + resolution: {integrity: sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 || ^30.0.0 + '@jest/types': ^29.0.0 || ^30.0.0 + babel-jest: ^29.0.0 || ^30.0.0 + esbuild: '*' + jest: ^29.0.0 || ^30.0.0 + jest-util: ^29.0.0 || ^30.0.0 + typescript: '>=4.3 <7' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + jest-util: + optional: true + ts-node-dev@2.0.0: resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} engines: {node: '>=0.8.0'} @@ -5907,27 +11827,68 @@ packages: tsconfig@7.0.0: resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tty-browserify@0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + + tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tv4@1.3.0: resolution: {integrity: sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==} engines: {node: '>= 0.8.0'} + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -5944,6 +11905,9 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + types-react-dom@19.0.0-rc.1: resolution: {integrity: sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ==} @@ -5958,10 +11922,30 @@ packages: ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + uint8arrays@2.1.10: + resolution: {integrity: sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==} + + uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + ultron@1.1.1: + resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -5971,6 +11955,12 @@ packages: undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici-types@7.25.0: + resolution: {integrity: sha512-AXNgS1Byr27fTI+2bsPEkV9CxkT8H6xNyRI68b3TatlZo3RkzlqQBLL+w7SmGPVpokjHbcuNVQUWE7FRTg+LRA==} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} @@ -5983,6 +11973,10 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -5994,18 +11988,90 @@ packages: unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + unstorage@1.17.5: + resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6 || ^7 || ^8 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1 || ^2 || ^3 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-set-query@1.0.0: + resolution: {integrity: sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -6026,6 +12092,16 @@ packages: '@types/react': optional: true + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + use-sync-external-store@1.4.0: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: @@ -6035,17 +12111,38 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + util@0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -6053,6 +12150,52 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + valtio@1.13.2: + resolution: {integrity: sha512-Qik0o+DSy741TmkqmRfjq+0xpZBXi/Y6+fXZLn0xNF1z/waFMbE3rkivv5Zcf9RrMUp6zswf2J7sbh2KBlba5A==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + valtio@2.1.7: + resolution: {integrity: sha512-DwJhCDpujuQuKdJ2H84VbTjEJJteaSmqsuUltsfbfdbotVfNeTE4K/qc/Wi57I9x8/2ed4JNdjEna7O6PfavRg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + react: '>=18.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + varint@5.0.2: + resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -6064,11 +12207,61 @@ packages: victory-vendor@37.3.6: resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} + viem@2.13.7: + resolution: {integrity: sha512-SZWn9LPrz40PHl4PM2iwkPTTtjWPDFsnLr32UwpqC/Z5f0AwxitjLyZdDKcImvbWZ3vLQ0oPggR1aLlqvTcUug==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.23.2: + resolution: {integrity: sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.31.0: + resolution: {integrity: sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.39.0: + resolution: {integrity: sha512-rCN+IfnMESlrg/iPyyVL+M9NS/BHzyyNy72470tFmbTuscY3iPaZGMtJDcHKKV8TC6HV9DjWk0zWX6cpu0juyA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.48.4: + resolution: {integrity: sha512-mReP/rgY2P+WeeRSG4sUvccCLKfyAW1C73Y3KkobAqgzYmVna9qyUMNE44xIUkDtfvRuC33r24UhF4baBYovsg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vite-node@1.6.1: + resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-node@2.1.9: resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-node-polyfills@0.24.0: + resolution: {integrity: sha512-GA9QKLH+vIM8NPaGA+o2t8PDfFUl32J8rUp1zQfMKVJQiNkOX4unE51tR6ppl6iKw5yOrDAdSH7r/UIFLCVhLw==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + vite@5.4.21: resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6143,6 +12336,31 @@ packages: yaml: optional: true + vitest@1.6.1: + resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.1 + '@vitest/ui': 1.6.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vitest@2.1.9: resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6203,6 +12421,9 @@ packages: jsdom: optional: true + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + vue-eslint-parser@10.4.0: resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -6213,14 +12434,175 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} + wagmi@2.19.5: + resolution: {integrity: sha512-RQUfKMv6U+EcSNNGiPbdkDtJwtuFxZWLmvDiQmjjBgkuPulUwDJsKhi7gjynzJdsx2yDqhHCXkKsbbfbIsHfcQ==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} + web3-bzz@1.10.4: + resolution: {integrity: sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==} + engines: {node: '>=8.0.0'} + + web3-core-helpers@1.10.4: + resolution: {integrity: sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==} + engines: {node: '>=8.0.0'} + + web3-core-helpers@1.5.2: + resolution: {integrity: sha512-U7LJoeUdQ3aY9t5gU7t/1XpcApsWm+4AcW5qKl/44ZxD44w0Dmsq1c5zJm3GuLr/a9MwQfXK4lpmvxVQWHHQRg==} + engines: {node: '>=8.0.0'} + + web3-core-method@1.10.4: + resolution: {integrity: sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==} + engines: {node: '>=8.0.0'} + + web3-core-method@1.5.2: + resolution: {integrity: sha512-/mC5t9UjjJoQmJJqO5nWK41YHo+tMzFaT7Tp7jDCQsBkinE68KsUJkt0jzygpheW84Zra0DVp6q19gf96+cugg==} + engines: {node: '>=8.0.0'} + + web3-core-promievent@1.10.4: + resolution: {integrity: sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==} + engines: {node: '>=8.0.0'} + + web3-core-promievent@1.5.2: + resolution: {integrity: sha512-5DacbJXe98ozSor7JlkTNCy6G8945VunRRkPxMk98rUrg60ECVEM/vuefk1atACzjQsKx6tmLZuHxbJQ64TQeQ==} + engines: {node: '>=8.0.0'} + + web3-core-requestmanager@1.10.4: + resolution: {integrity: sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==} + engines: {node: '>=8.0.0'} + + web3-core-requestmanager@1.5.2: + resolution: {integrity: sha512-oRVW9OrAsXN2JIZt68OEg1Mb1A9a/L3JAGMv15zLEFEnJEGw0KQsGK1ET2kvZBzvpFd5G0EVkYCnx7WDe4HSNw==} + engines: {node: '>=8.0.0'} + + web3-core-subscriptions@1.10.4: + resolution: {integrity: sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==} + engines: {node: '>=8.0.0'} + + web3-core-subscriptions@1.5.2: + resolution: {integrity: sha512-hapI4rKFk22yurtIv0BYvkraHsM7epA4iI8Np+HuH6P9DD0zj/llaps6TXLM9HyacLBRwmOLZmr+pHBsPopUnQ==} + engines: {node: '>=8.0.0'} + + web3-core@1.10.4: + resolution: {integrity: sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==} + engines: {node: '>=8.0.0'} + + web3-core@1.5.2: + resolution: {integrity: sha512-sebMpQbg3kbh3vHUbHrlKGKOxDWqjgt8KatmTBsTAWj/HwWYVDzeX+2Q84+swNYsm2DrTBVFlqTErFUwPBvyaA==} + engines: {node: '>=8.0.0'} + + web3-eth-abi@1.10.4: + resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} + engines: {node: '>=8.0.0'} + + web3-eth-accounts@1.10.4: + resolution: {integrity: sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==} + engines: {node: '>=8.0.0'} + + web3-eth-contract@1.10.4: + resolution: {integrity: sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==} + engines: {node: '>=8.0.0'} + + web3-eth-ens@1.10.4: + resolution: {integrity: sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==} + engines: {node: '>=8.0.0'} + + web3-eth-iban@1.10.4: + resolution: {integrity: sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==} + engines: {node: '>=8.0.0'} + + web3-eth-iban@1.5.2: + resolution: {integrity: sha512-C04YDXuSG/aDwOHSX+HySBGb0KraiAVt+/l1Mw7y/fCUrKC/K0yYzMYqY/uYOcvLtepBPsC4ZfUYWUBZ2PO8Vg==} + engines: {node: '>=8.0.0'} + + web3-eth-personal@1.10.4: + resolution: {integrity: sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==} + engines: {node: '>=8.0.0'} + + web3-eth@1.10.4: + resolution: {integrity: sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==} + engines: {node: '>=8.0.0'} + + web3-net@1.10.4: + resolution: {integrity: sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==} + engines: {node: '>=8.0.0'} + + web3-providers-http@1.10.4: + resolution: {integrity: sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==} + engines: {node: '>=8.0.0'} + + web3-providers-http@1.5.2: + resolution: {integrity: sha512-dUNFJc9IMYDLZnkoQX3H4ZjvHjGO6VRVCqrBrdh84wPX/0da9dOA7DwIWnG0Gv3n9ybWwu5JHQxK4MNQ444lyA==} + engines: {node: '>=8.0.0'} + + web3-providers-ipc@1.10.4: + resolution: {integrity: sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==} + engines: {node: '>=8.0.0'} + + web3-providers-ipc@1.5.2: + resolution: {integrity: sha512-SJC4Sivt4g9LHKlRy7cs1jkJgp7bjrQeUndE6BKs0zNALKguxu6QYnzbmuHCTFW85GfMDjhvi24jyyZHMnBNXQ==} + engines: {node: '>=8.0.0'} + + web3-providers-ws@1.10.4: + resolution: {integrity: sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==} + engines: {node: '>=8.0.0'} + + web3-providers-ws@1.5.2: + resolution: {integrity: sha512-xy9RGlyO8MbJDuKv2vAMDkg+en+OvXG0CGTCM2BTl6l1vIdHpCa+6A/9KV2rK8aU9OBZ7/Pf+Y19517kHVl9RA==} + engines: {node: '>=8.0.0'} + + web3-shh@1.10.4: + resolution: {integrity: sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==} + engines: {node: '>=8.0.0'} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + web3-utils@1.5.2: + resolution: {integrity: sha512-quTtTeQJHYSxAwIBOCGEcQtqdVcFWX6mCFNoqnp+mRbq+Hxbs8CGgO/6oqfBx4OvxIOfCpgJWYVHswRXnbEu9Q==} + engines: {node: '>=8.0.0'} + + web3@1.10.4: + resolution: {integrity: sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==} + engines: {node: '>=8.0.0'} + + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + webidl-conversions@8.0.1: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} + websocket@1.0.35: + resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} + engines: {node: '>=4.0.0'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} @@ -6229,10 +12611,17 @@ packages: resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} engines: {node: '>=20'} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@15.1.0: resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} engines: {node: '>=20'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -6245,6 +12634,9 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + which-typed-array@1.1.20: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} @@ -6259,10 +12651,28 @@ packages: engines: {node: '>=8'} hasBin: true + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.19.0: + resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} + engines: {node: '>= 12.0.0'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -6274,6 +12684,57 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@3.3.3: + resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.17.1: resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} @@ -6286,6 +12747,42 @@ packages: utf-8-validate: optional: true + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.19.0: resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} @@ -6298,6 +12795,37 @@ packages: utf-8-validate: optional: true + ws@8.9.0: + resolution: {integrity: sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + x402@0.7.0: + resolution: {integrity: sha512-G4UnkS4YDMUO+dYFpincma2p2PNN3t/6uP4tIxeHYrH2BL13ELbm4Jovtu4S7A6Ve1S9kka+5tkW33a+KgQX3Q==} + + xhr-request-promise@0.1.3: + resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} + + xhr-request@1.1.0: + resolution: {integrity: sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==} + + xhr2-cookies@1.1.0: + resolution: {integrity: sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==} + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -6309,13 +12837,32 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yaeti@0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml-eslint-parser@1.3.2: resolution: {integrity: sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -6324,11 +12871,39 @@ packages: resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} + yaml@2.8.3: resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -6337,34 +12912,117 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.2.2: + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} + engines: {node: '>=12.20'} + zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} + zksync-web3@0.14.4: + resolution: {integrity: sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==} + deprecated: This package has been deprecated in favor of zksync-ethers@5.0.0 + peerDependencies: + ethers: ^5.7.0 + + zod-to-json-schema@3.25.2: + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} + peerDependencies: + zod: ^3.25.28 || ^4 + zod-validation-error@4.0.2: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.25.0 || ^4.0.0 + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + + zod@3.25.75: + resolution: {integrity: sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==} + zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zustand@5.0.0: + resolution: {integrity: sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + + zustand@5.0.12: + resolution: {integrity: sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + + zustand@5.0.3: + resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: + '@account-abstraction/contracts@0.5.0': {} + '@acemir/cssom@0.9.31': {} + '@adobe/css-tools@4.4.4': {} + + '@adraffy/ens-normalize@1.10.0': {} + '@adraffy/ens-normalize@1.10.1': {} + '@adraffy/ens-normalize@1.11.1': {} + '@alloc/quick-lru@5.2.0': {} - '@antfu/eslint-config@6.7.3(@eslint-react/eslint-plugin@2.13.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.14)(@typescript-eslint/rule-tester@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3))(@typescript-eslint/utils@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@vue/compiler-sfc@3.5.31)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)))': + '@antfu/eslint-config@6.7.3(@eslint-react/eslint-plugin@2.13.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.14)(@typescript-eslint/rule-tester@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3))(@typescript-eslint/utils@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(@vue/compiler-sfc@3.5.31)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)))': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 0.11.0 @@ -6373,7 +13031,7 @@ snapshots: '@stylistic/eslint-plugin': 5.10.0(eslint@9.39.4(jiti@1.21.7)) '@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) '@typescript-eslint/parser': 8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) - '@vitest/eslint-plugin': 1.6.13(@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3))) + '@vitest/eslint-plugin': 1.6.13(@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3))) ansis: 4.2.0 cac: 6.7.14 eslint: 9.39.4(jiti@1.21.7) @@ -6425,6 +13083,14 @@ snapshots: package-manager-detector: 1.6.0 tinyexec: 1.0.4 + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + '@asamuzakjp/css-color@4.1.2': dependencies: '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) @@ -6433,6 +13099,12 @@ snapshots: '@csstools/css-tokenizer': 4.0.0 lru-cache: 11.2.7 + '@asamuzakjp/dom-selector@2.0.2': + dependencies: + bidi-js: 1.0.3 + css-tree: 2.3.1 + is-potential-custom-element-name: 1.0.1 + '@asamuzakjp/dom-selector@6.8.1': dependencies: '@asamuzakjp/nwsapi': 2.3.9 @@ -6522,6 +13194,91 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -6557,6 +13314,87 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@base-org/account@2.4.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@coinbase/cdp-sdk': 1.48.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@noble/hashes': 1.4.0 + clsx: 1.2.1 + eventemitter3: 5.0.1 + idb-keyval: 6.2.1 + ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) + preact: 10.24.2 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zustand: 5.0.3(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - debug + - fastestsmallesttextencoderdecoder + - immer + - react + - typescript + - use-sync-external-store + - utf-8-validate + - zod + + '@base-org/account@2.4.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@coinbase/cdp-sdk': 1.48.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@noble/hashes': 1.4.0 + clsx: 1.2.1 + eventemitter3: 5.0.1 + idb-keyval: 6.2.1 + ox: 0.6.9(typescript@5.9.3)(zod@4.3.6) + preact: 10.24.2 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + zustand: 5.0.3(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - debug + - fastestsmallesttextencoderdecoder + - immer + - react + - typescript + - use-sync-external-store + - utf-8-validate + - zod + + '@base-org/account@2.5.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.75)': + dependencies: + '@coinbase/cdp-sdk': 1.48.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + brotli-wasm: 3.0.1 + clsx: 1.2.1 + eventemitter3: 5.0.1 + idb-keyval: 6.2.1 + ox: 0.6.9(typescript@5.9.3)(zod@3.25.75) + preact: 10.24.2 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + zustand: 5.0.3(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - debug + - fastestsmallesttextencoderdecoder + - immer + - react + - typescript + - use-sync-external-store + - utf-8-validate + - zod + + '@bcoe/v8-coverage@0.2.3': {} + + '@blocto/sdk@0.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + buffer: 6.0.3 + eip1193-provider: 1.0.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + js-sha3: 0.8.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + '@clack/core@0.5.0': dependencies: picocolors: 1.1.1 @@ -6568,17 +13406,123 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 + '@coinbase/cdp-sdk@1.48.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana-program/system': 0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@solana/kit': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) + axios: 1.13.6 + axios-retry: 4.5.0(axios@1.13.6) + jose: 6.2.2 + md5: 2.3.0 + uncrypto: 0.1.3 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zod: 3.25.76 + transitivePeerDependencies: + - bufferutil + - debug + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@coinbase/wallet-sdk@3.9.3': + dependencies: + bn.js: 5.2.3 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 7.1.0 + eth-json-rpc-filters: 6.0.1 + eventemitter3: 5.0.4 + keccak: 3.0.4 + preact: 10.29.1 + sha.js: 2.4.12 + transitivePeerDependencies: + - supports-color + + '@coinbase/wallet-sdk@4.0.3': + dependencies: + buffer: 6.0.3 + clsx: 1.2.1 + eventemitter3: 5.0.4 + keccak: 3.0.4 + preact: 10.29.1 + sha.js: 2.4.12 + + '@coinbase/wallet-sdk@4.3.0': + dependencies: + '@noble/hashes': 1.7.2 + clsx: 1.2.1 + eventemitter3: 5.0.4 + preact: 10.29.1 + + '@coinbase/wallet-sdk@4.3.6(@types/react@18.3.28)(bufferutil@4.1.0)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@noble/hashes': 1.4.0 + clsx: 1.2.1 + eventemitter3: 5.0.1 + idb-keyval: 6.2.1 + ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) + preact: 10.24.2 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zustand: 5.0.3(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - typescript + - use-sync-external-store + - utf-8-validate + - zod + + '@coinbase/wallet-sdk@4.3.6(@types/react@18.3.28)(bufferutil@4.1.0)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@noble/hashes': 1.4.0 + clsx: 1.2.1 + eventemitter3: 5.0.1 + idb-keyval: 6.2.1 + ox: 0.6.9(typescript@5.9.3)(zod@4.3.6) + preact: 10.24.2 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + zustand: 5.0.3(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - bufferutil + - immer + - react + - typescript + - use-sync-external-store + - utf-8-validate + - zod + + '@colors/colors@1.6.0': {} + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.0.2': {} + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/color-helpers': 6.0.2 @@ -6586,6 +13530,10 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-tokenizer': 4.0.0 @@ -6594,8 +13542,16 @@ snapshots: optionalDependencies: css-tree: 3.2.1 + '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} + '@dabh/diagnostics@2.0.8': + dependencies: + '@so-ric/colorspace': 1.1.6 + enabled: 2.0.0 + kuler: 2.0.0 + '@date-fns/tz@1.4.1': {} '@dprint/formatter@0.5.1': {} @@ -6604,6 +13560,10 @@ snapshots: '@dprint/toml@0.7.0': {} + '@ecies/ciphers@0.2.6(@noble/ciphers@1.3.0)': + dependencies: + '@noble/ciphers': 1.3.0 + '@emnapi/core@1.9.1': dependencies: '@emnapi/wasi-threads': 1.2.0 @@ -6620,14 +13580,149 @@ snapshots: tslib: 2.8.1 optional: true + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.28.6 + '@babel/runtime': 7.29.2 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/css@11.10.5(@babel/core@7.29.0)': + dependencies: + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + optionalDependencies: + '@babel/core': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@emotion/hash@0.9.2': {} + '@emotion/is-prop-valid@1.4.0': dependencies: '@emotion/memoize': 0.9.0 '@emotion/memoize@0.9.0': {} + '@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.3.1 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - supports-color + + '@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.2.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.11.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.11.4(@types/react@18.3.28)(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.28 + transitivePeerDependencies: + - supports-color + + '@emotion/styled@11.11.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@18.3.28)(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.28 + transitivePeerDependencies: + - supports-color + + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.14.0(@types/react@18.3.28)(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.28 + transitivePeerDependencies: + - supports-color + '@emotion/unitless@0.10.0': {} + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@emotion/weak-memoize@0.4.0': {} + '@es-joy/jsdoccomment@0.78.0': dependencies: '@types/estree': 1.0.8 @@ -6721,11 +13816,21 @@ snapshots: eslint: 9.39.4(jiti@1.21.7) ignore: 7.0.5 + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@1.21.7))': dependencies: eslint: 9.39.4(jiti@1.21.7) eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': + dependencies: + eslint: 9.39.4(jiti@2.6.1) + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.2': {} '@eslint-react/ast@2.13.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': @@ -6828,6 +13933,20 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.14.0 + debug: 4.4.3 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/eslintrc@3.3.5': dependencies: ajv: 6.14.0 @@ -6842,6 +13961,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.39.4': {} '@eslint/markdown@7.5.1': @@ -6865,7 +13986,637 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@exodus/bytes@1.15.0': {} + '@eth-optimism/contracts@0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + dependencies: + '@eth-optimism/core-utils': 0.12.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@eth-optimism/core-utils@0.12.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@ethersproject/rlp': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + bufio: 1.2.3 + chai: 4.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@eth-optimism/core-utils@0.13.2(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/web': 5.8.0 + chai: 4.5.0 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@eth-optimism/sdk@3.3.2(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + dependencies: + '@eth-optimism/contracts': 0.6.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + '@eth-optimism/core-utils': 0.13.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + lodash: 4.17.23 + merkletreejs: 0.3.11 + rlp: 2.2.7 + semver: 7.7.4 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@ethereumjs/common@2.6.5': + dependencies: + crc-32: 1.2.2 + ethereumjs-util: 7.1.5 + + '@ethereumjs/common@3.2.0': + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/tx@3.5.2': + dependencies: + '@ethereumjs/common': 2.6.5 + ethereumjs-util: 7.1.5 + + '@ethereumjs/tx@4.2.0': + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.2.1 + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + + '@ethersproject/abi@5.7.0': + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/abi@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + + '@ethersproject/abstract-provider@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/abstract-signer@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + + '@ethersproject/address@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + + '@ethersproject/base64@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/basex@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + + '@ethersproject/bignumber@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + bn.js: 5.2.3 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/bytes@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + + '@ethersproject/constants@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + + '@ethersproject/contracts@5.8.0': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + + '@ethersproject/hash@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/hash@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/hdnode@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/hdnode@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/json-wallets@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/json-wallets@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + + '@ethersproject/keccak256@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/logger@5.8.0': {} + + '@ethersproject/networks@5.7.1': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/networks@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/pbkdf2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + + '@ethersproject/pbkdf2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/sha2': 5.8.0 + + '@ethersproject/properties@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/properties@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/providers@5.7.2(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + bech32: 1.1.4 + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/random@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/rlp@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/rlp@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@ethersproject/sha2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + bn.js: 5.2.3 + elliptic: 6.6.1 + hash.js: 1.1.7 + + '@ethersproject/solidity@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/solidity@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/strings@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/strings@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/transactions@5.7.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + + '@ethersproject/transactions@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + + '@ethersproject/units@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/units@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/wallet@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/wallet@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/web@5.7.1': + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/web@5.8.0': + dependencies: + '@ethersproject/base64': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/wordlists@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/wordlists@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@exodus/bytes@1.15.0(@noble/hashes@1.8.0)': + optionalDependencies: + '@noble/hashes': 1.8.0 + + '@fastify/ajv-compiler@3.6.0': + dependencies: + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + fast-uri: 2.4.0 + + '@fastify/cookie@9.4.0': + dependencies: + cookie-signature: 1.2.2 + fastify-plugin: 4.5.1 + + '@fastify/error@3.4.1': {} + + '@fastify/fast-json-stringify-compiler@4.3.0': + dependencies: + fast-json-stringify: 5.16.1 + + '@fastify/merge-json-schemas@0.1.1': + dependencies: + fast-deep-equal: 3.1.3 '@floating-ui/core@1.7.5': dependencies: @@ -6876,6 +14627,12 @@ snapshots: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 + '@floating-ui/react-dom@2.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.7.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + '@floating-ui/react-dom@2.1.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@floating-ui/dom': 1.7.6 @@ -6892,6 +14649,113 @@ snapshots: '@floating-ui/utils@0.2.11': {} + '@gemini-wallet/core@0.3.2(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + dependencies: + '@metamask/rpc-errors': 7.0.2 + eventemitter3: 5.0.1 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - supports-color + + '@gemini-wallet/core@0.3.2(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))': + dependencies: + '@metamask/rpc-errors': 7.0.2 + eventemitter3: 5.0.1 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - supports-color + + '@google-cloud/kms@4.5.0': + dependencies: + google-gax: 4.6.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@google/model-viewer@2.1.1': + dependencies: + lit: 2.8.0 + three: 0.146.0 + + '@grpc/grpc-js@1.14.3': + dependencies: + '@grpc/proto-loader': 0.8.0 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.7.15': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.5 + yargs: 17.7.2 + + '@grpc/proto-loader@0.8.0': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.5 + yargs: 17.7.2 + + '@headlessui/react@1.7.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/react-virtual': 3.13.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + client-only: 0.0.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@hey-api/client-fetch@0.10.0(@hey-api/openapi-ts@0.96.1(typescript@5.9.3))': + dependencies: + '@hey-api/openapi-ts': 0.96.1(typescript@5.9.3) + + '@hey-api/codegen-core@0.8.0': + dependencies: + '@hey-api/types': 0.1.4 + ansi-colors: 4.1.3 + c12: 3.3.4 + color-support: 1.1.3 + transitivePeerDependencies: + - magicast + + '@hey-api/json-schema-ref-parser@1.4.1': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + yaml: 2.8.3 + + '@hey-api/openapi-ts@0.96.1(typescript@5.9.3)': + dependencies: + '@hey-api/codegen-core': 0.8.0 + '@hey-api/json-schema-ref-parser': 1.4.1 + '@hey-api/shared': 0.4.1 + '@hey-api/spec-types': 0.2.0 + '@hey-api/types': 0.1.4 + ansi-colors: 4.1.3 + color-support: 1.1.3 + commander: 14.0.3 + get-tsconfig: 4.14.0 + typescript: 5.9.3 + transitivePeerDependencies: + - magicast + + '@hey-api/shared@0.4.1': + dependencies: + '@hey-api/codegen-core': 0.8.0 + '@hey-api/json-schema-ref-parser': 1.4.1 + '@hey-api/spec-types': 0.2.0 + '@hey-api/types': 0.1.4 + ansi-colors: 4.1.3 + cross-spawn: 7.0.6 + open: 11.0.0 + semver: 7.7.4 + transitivePeerDependencies: + - magicast + + '@hey-api/spec-types@0.2.0': + dependencies: + '@hey-api/types': 0.1.4 + + '@hey-api/types@0.1.4': {} + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -6899,8 +14763,18 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.4.3 + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.4.3': {} '@img/colour@1.1.0': {} @@ -7010,6 +14884,213 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.2 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.6': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 25.5.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.31 + '@types/node': 25.5.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.3 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.2.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.10 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.3 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.29.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.31 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.5.0 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7034,14 +15115,353 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@js-sdsl/ordered-map@4.4.2': {} + + '@jsdevtools/ono@7.1.3': {} + + '@json-rpc-tools/provider@1.7.6(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@json-rpc-tools/utils': 1.7.6 + axios: 0.21.4 + safe-json-utils: 1.1.1 + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@json-rpc-tools/types@1.7.6': + dependencies: + keyvaluestorage-interface: 1.0.0 + + '@json-rpc-tools/utils@1.7.6': + dependencies: + '@json-rpc-tools/types': 1.7.6 + '@pedrouid/environment': 1.0.1 + '@kurkle/color@0.3.4': {} + '@lifi/sdk@2.5.2(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@lifi/types': 9.3.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + bignumber.js: 9.3.1 + eth-rpc-errors: 4.0.3 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@lifi/types@9.3.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@lit-labs/ssr-dom-shim@1.5.1': {} + + '@lit/react@1.0.8(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + optional: true + + '@lit/reactive-element@1.6.3': + dependencies: + '@lit-labs/ssr-dom-shim': 1.5.1 + + '@lit/reactive-element@2.1.2': + dependencies: + '@lit-labs/ssr-dom-shim': 1.5.1 + + '@magic-ext/connect@6.7.2': {} + + '@magic-ext/oauth@7.6.2': + dependencies: + '@magic-sdk/types': 11.6.2 + + '@magic-sdk/commons@9.6.2(@magic-sdk/provider@13.6.2(localforage@1.10.0))(@magic-sdk/types@11.6.2)': + dependencies: + '@magic-sdk/provider': 13.6.2(localforage@1.10.0) + '@magic-sdk/types': 11.6.2 + + '@magic-sdk/provider@13.6.2(localforage@1.10.0)': + dependencies: + '@magic-sdk/types': 11.6.2 + eventemitter3: 4.0.7 + localforage: 1.10.0 + web3-core: 1.5.2 + transitivePeerDependencies: + - supports-color + + '@magic-sdk/types@11.6.2': {} + + '@mapbox/node-pre-gyp@1.0.11': + dependencies: + detect-libc: 2.1.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.7.4 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@metamask/eth-json-rpc-provider@1.0.1': + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 5.0.2 + transitivePeerDependencies: + - supports-color + + '@metamask/eth-sig-util@4.0.1': + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + + '@metamask/json-rpc-engine@7.3.3': + dependencies: + '@metamask/rpc-errors': 6.4.0 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-engine@8.0.2': + dependencies: + '@metamask/rpc-errors': 6.4.0 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + transitivePeerDependencies: + - supports-color + + '@metamask/json-rpc-middleware-stream@7.0.2': + dependencies: + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - supports-color + + '@metamask/object-multiplex@2.1.0': + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + + '@metamask/onboarding@1.0.1': + dependencies: + bowser: 2.14.1 + + '@metamask/providers@16.1.0': + dependencies: + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/json-rpc-middleware-stream': 7.0.2 + '@metamask/object-multiplex': 2.1.0 + '@metamask/rpc-errors': 6.4.0 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 8.5.0 + detect-browser: 5.3.0 + extension-port-stream: 3.0.0 + fast-deep-equal: 3.1.3 + is-stream: 2.0.1 + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color + + '@metamask/rpc-errors@6.4.0': + dependencies: + '@metamask/utils': 9.3.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + + '@metamask/rpc-errors@7.0.2': + dependencies: + '@metamask/utils': 11.11.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + + '@metamask/safe-event-emitter@2.0.0': {} + + '@metamask/safe-event-emitter@3.1.2': {} + + '@metamask/sdk-analytics@0.0.5': + dependencies: + openapi-fetch: 0.13.8 + + '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@metamask/sdk-analytics': 0.0.5 + bufferutil: 4.1.0 + cross-fetch: 4.1.0 + date-fns: 2.30.0 + debug: 4.3.4 + eciesjs: 0.4.18 + eventemitter2: 6.4.9 + readable-stream: 3.6.2 + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + utf-8-validate: 5.0.10 + uuid: 8.3.2 + transitivePeerDependencies: + - supports-color + + '@metamask/sdk-install-modal-web@0.32.1': + dependencies: + '@paulmillr/qr': 0.2.1 + + '@metamask/sdk@0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.29.2 + '@metamask/onboarding': 1.0.1 + '@metamask/providers': 16.1.0 + '@metamask/sdk-analytics': 0.0.5 + '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@metamask/sdk-install-modal-web': 0.32.1 + '@paulmillr/qr': 0.2.1 + bowser: 2.14.1 + cross-fetch: 4.1.0 + debug: 4.3.4 + eciesjs: 0.4.18 + eth-rpc-errors: 4.0.3 + eventemitter2: 6.4.9 + obj-multiplex: 1.0.0 + pump: 3.0.4 + readable-stream: 3.6.2 + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + tslib: 2.8.1 + util: 0.12.5 + uuid: 8.3.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@metamask/superstruct@3.2.1': {} + + '@metamask/utils@11.11.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.2.1 + '@noble/hashes': 1.3.2 + '@scure/base': 1.2.6 + '@types/debug': 4.1.13 + '@types/lodash': 4.17.24 + debug: 4.4.3 + lodash: 4.17.23 + pony-cause: 2.1.11 + semver: 7.7.4 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + '@metamask/utils@5.0.2': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@types/debug': 4.1.13 + debug: 4.4.3 + semver: 7.7.4 + superstruct: 1.0.4 + transitivePeerDependencies: + - supports-color + + '@metamask/utils@8.5.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.2.1 + '@noble/hashes': 1.3.2 + '@scure/base': 1.2.6 + '@types/debug': 4.1.13 + debug: 4.4.3 + pony-cause: 2.1.11 + semver: 7.7.4 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + '@metamask/utils@9.3.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.2.1 + '@noble/hashes': 1.3.2 + '@scure/base': 1.2.6 + '@types/debug': 4.1.13 + debug: 4.4.3 + pony-cause: 2.1.11 + semver: 7.7.4 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + '@modelcontextprotocol/sdk@0.4.0': dependencies: content-type: 1.0.5 raw-body: 3.0.2 zod: 3.25.76 + '@motionone/animation@10.18.0': + dependencies: + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.8.1 + + '@motionone/dom@10.18.0': + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.8.1 + + '@motionone/easing@10.18.0': + dependencies: + '@motionone/utils': 10.18.0 + tslib: 2.8.1 + + '@motionone/generators@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.8.1 + + '@motionone/svelte@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.8.1 + + '@motionone/types@10.17.1': {} + + '@motionone/utils@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + hey-listen: 1.0.8 + tslib: 2.8.1 + + '@motionone/vue@10.16.4': + dependencies: + '@motionone/dom': 10.18.0 + tslib: 2.8.1 + + '@msgpack/msgpack@3.1.2': {} + + '@msgpack/msgpack@3.1.3': {} + + '@multiformats/base-x@4.0.1': {} + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.9.1 @@ -7090,12 +15510,58 @@ snapshots: '@next/swc-win32-x64-msvc@15.5.7': optional: true + '@noble/ciphers@1.2.1': {} + + '@noble/ciphers@1.3.0': {} + '@noble/curves@1.2.0': dependencies: '@noble/hashes': 1.3.2 + '@noble/curves@1.4.0': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/curves@1.8.0': + dependencies: + '@noble/hashes': 1.7.0 + + '@noble/curves@1.8.1': + dependencies: + '@noble/hashes': 1.7.1 + + '@noble/curves@1.8.2': + dependencies: + '@noble/hashes': 1.7.2 + + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/curves@1.9.2': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/curves@1.9.7': + dependencies: + '@noble/hashes': 1.8.0 + '@noble/hashes@1.3.2': {} + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.7.0': {} + + '@noble/hashes@1.7.1': {} + + '@noble/hashes@1.7.2': {} + + '@noble/hashes@1.8.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7110,6 +15576,10 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} + '@openzeppelin/contracts-upgradeable@4.9.6': {} + + '@openzeppelin/contracts@4.9.6': {} + '@oxc-project/types@0.122.0': {} '@oxfmt/binding-android-arm-eabi@0.35.0': @@ -7169,11 +15639,47 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.35.0': optional: true + '@paperxyz/embedded-wallet-service-sdk@1.2.5(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@paperxyz/sdk-common-utilities': 0.1.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@paperxyz/sdk-common-utilities@0.1.1': {} + + '@passwordless-id/webauthn@1.6.2': {} + + '@passwordless-id/webauthn@2.3.5': {} + + '@paulmillr/qr@0.2.1': {} + + '@peculiar/asn1-schema@2.6.0': + dependencies: + asn1js: 3.0.10 + pvtsutils: 1.3.6 + tslib: 2.8.1 + optional: true + + '@pedrouid/environment@1.0.1': {} + + '@phosphor-icons/webcomponents@2.1.5': + dependencies: + lit: 3.3.0 + + '@pinojs/redact@0.4.0': {} + '@pkgjs/parseargs@0.11.0': optional: true '@pkgr/core@0.2.9': {} + '@polka/url@1.0.0-next.29': {} + '@postman/form-data@3.1.1': dependencies: asynckit: 0.4.0 @@ -7191,8 +15697,39 @@ snapshots: dependencies: safe-buffer: 5.2.1 + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@radix-ui/colors@0.1.9': {} + '@radix-ui/number@1.1.1': {} + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.29.2 + + '@radix-ui/primitive@1.1.2': {} + '@radix-ui/primitive@1.1.3': {} '@radix-ui/react-accordion@1.2.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': @@ -7212,6 +15749,25 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-arrow@1.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1) @@ -7237,6 +15793,18 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-collection@1.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7249,18 +15817,111 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-compose-refs@1.1.2(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: react: 19.2.3 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-context@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-context@1.1.2(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-context@1.1.2(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: react: 19.2.3 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.28)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.28)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-dialog@1.1.14(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.7.2(@types/react@18.3.28)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.7.2(@types/react@18.3.28)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-dialog@1.1.15(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/primitive': 1.1.3 @@ -7283,12 +15944,58 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-direction@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-direction@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: react: 19.2.3 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-dismissable-layer@1.1.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/primitive': 1.1.3 @@ -7317,12 +16024,54 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-focus-guards@1.1.2(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-focus-guards@1.1.3(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: react: 19.2.3 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-focus-scope@1.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7334,10 +16083,33 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-icons@1.3.0(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@radix-ui/react-icons@1.3.2(react@18.3.1)': + dependencies: + react: 18.3.1 + '@radix-ui/react-icons@1.3.2(react@19.2.3)': dependencies: react: 19.2.3 + '@radix-ui/react-id@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-id@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-id@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7402,6 +16174,29 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + aria-hidden: 1.2.6 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.7.2(@types/react@18.3.28)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-popover@1.1.15(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/primitive': 1.1.3 @@ -7425,6 +16220,61 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@floating-ui/react-dom': 2.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/rect': 1.0.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-popper@1.2.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-popper@1.2.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@floating-ui/react-dom': 2.1.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -7443,6 +16293,26 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-portal@1.1.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1) @@ -7453,6 +16323,37 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-presence@1.1.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-presence@1.1.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7463,6 +16364,25 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-primitive@2.1.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-slot': 1.2.3(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7481,6 +16401,23 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-roving-focus@1.1.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/primitive': 1.1.3 @@ -7553,6 +16490,21 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-slot@1.0.2(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-slot@1.2.3(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-slot@1.2.3(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7582,6 +16534,22 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-tabs@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-tabs@1.1.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/primitive': 1.1.3 @@ -7598,6 +16566,67 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-tooltip@1.2.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-tooltip@1.2.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/primitive': 1.1.3 @@ -7618,12 +16647,41 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-callback-ref@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: react: 19.2.3 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.28)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-controllable-state@1.2.2(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-use-effect-event': 0.0.2(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7632,6 +16690,13 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-effect-event@0.0.2(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7639,6 +16704,21 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-escape-keydown@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.1(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7646,6 +16726,19 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-layout-effect@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: react: 19.2.3 @@ -7658,6 +16751,21 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/rect': 1.0.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-rect@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/rect': 1.1.1 @@ -7665,6 +16773,21 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-use-size@1.0.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + + '@radix-ui/react-use-size@1.1.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.28)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@radix-ui/react-use-size@1.1.1(react@19.2.3)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-use-layout-effect': 1.1.1(react@19.2.3)(types-react@19.0.0-rc.1) @@ -7672,6 +16795,25 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + '@radix-ui/react-visually-hidden@1.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/react-primitive': 2.1.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(types-react-dom@19.0.0-rc.1)(types-react@19.0.0-rc.1) @@ -7681,6 +16823,10 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 '@types/react-dom': types-react-dom@19.0.0-rc.1 + '@radix-ui/rect@1.0.1': + dependencies: + '@babel/runtime': 7.29.2 + '@radix-ui/rect@1.1.1': {} '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1))(react@19.2.3)': @@ -7695,6 +16841,790 @@ snapshots: react: 19.2.3 react-redux: 9.2.0(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1) + '@remix-run/router@1.23.2': {} + + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-common@1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-common@1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + big.js: 6.2.2 + dayjs: 1.11.13 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@reown/appkit-controllers@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-controllers@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-controllers@1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-wallet': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + valtio: 2.1.7(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-pay@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@3.25.76) + lit: 3.3.0 + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-pay@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + lit: 3.3.0 + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-pay@1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + lit: 3.3.0 + valtio: 2.1.7(@types/react@18.3.28)(react@18.3.1) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + + '@reown/appkit-polyfills@1.7.8': + dependencies: + buffer: 6.0.3 + + '@reown/appkit-polyfills@1.8.17-wc-circular-dependencies-fix.0': + dependencies: + buffer: 6.0.3 + + '@reown/appkit-scaffold-ui@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + lit: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - valtio + - zod + + '@reown/appkit-scaffold-ui@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + lit: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - valtio + - zod + + '@reown/appkit-scaffold-ui@1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-pay': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + '@reown/appkit-wallet': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + lit: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - valtio + - zod + + '@reown/appkit-ui@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + lit: 3.3.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-ui@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + lit: 3.3.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-ui@1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@phosphor-icons/webcomponents': 2.1.5 + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-wallet': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + lit: 3.3.0 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-utils@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-polyfills': 1.7.8 + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/logger': 2.1.2 + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-utils@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-polyfills': 1.7.8 + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/logger': 2.1.2 + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit-utils@1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-polyfills': 1.8.17-wc-circular-dependencies-fix.0 + '@reown/appkit-wallet': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@wallet-standard/wallet': 1.1.0 + '@walletconnect/logger': 3.0.2 + '@walletconnect/universal-provider': 2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + valtio: 2.1.7(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + '@base-org/account': 2.4.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + + '@reown/appkit-wallet@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.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 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + + '@reown/appkit-wallet@1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-polyfills': 1.8.17-wc-circular-dependencies-fix.0 + '@walletconnect/logger': 3.0.2 + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + + '@reown/appkit@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-polyfills': 1.7.8 + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + bs58: 6.0.0 + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit@1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-pay': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-polyfills': 1.7.8 + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + '@reown/appkit-ui': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + bs58: 6.0.0 + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@reown/appkit@1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit-common': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-pay': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-polyfills': 1.8.17-wc-circular-dependencies-fix.0 + '@reown/appkit-scaffold-ui': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + '@reown/appkit-ui': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@18.3.28)(react@18.3.1))(zod@4.3.6) + '@reown/appkit-wallet': 1.8.17-wc-circular-dependencies-fix.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + bs58: 6.0.0 + semver: 7.7.2 + valtio: 2.1.7(@types/react@18.3.28)(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + '@lit/react': 1.0.8(@types/react@18.3.28) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true @@ -7742,10 +17672,28 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': optional: true + '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.0-rc.12': {} '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rollup/plugin-inject@5.0.5(rollup@4.60.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.60.0) + estree-walker: 2.0.2 + magic-string: 0.30.21 + optionalDependencies: + rollup: 4.60.0 + + '@rollup/pluginutils@5.3.0(rollup@4.60.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.4 + optionalDependencies: + rollup: 4.60.0 + '@rollup/rollup-android-arm-eabi@4.60.0': optional: true @@ -7825,8 +17773,1119 @@ snapshots: '@rushstack/eslint-patch@1.16.1': {} + '@safe-global/api-kit@4.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@safe-global/protocol-kit': 7.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/types-kit': 3.1.0(typescript@5.9.3)(zod@4.3.6) + node-fetch: 2.7.0 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + - zod + + '@safe-global/protocol-kit@1.3.0(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/solidity': 5.8.0 + '@safe-global/safe-deployments': 1.37.55 + ethereumjs-util: 7.1.5 + semver: 7.7.4 + web3: 1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + web3-core: 1.10.4 + web3-utils: 1.10.4 + zksync-web3: 0.14.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - bufferutil + - encoding + - ethers + - supports-color + - utf-8-validate + + '@safe-global/protocol-kit@7.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@safe-global/safe-deployments': 1.37.55 + '@safe-global/safe-modules-deployments': 3.0.3 + '@safe-global/types-kit': 3.1.0(typescript@5.9.3)(zod@4.3.6) + abitype: 1.2.4(typescript@5.9.3)(zod@4.3.6) + semver: 7.7.4 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + '@noble/curves': 1.9.7 + '@peculiar/asn1-schema': 2.6.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.23.1 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@safe-global/safe-gateway-typescript-sdk': 3.23.1 + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@safe-global/safe-core-sdk-types@1.10.1': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@safe-global/safe-deployments': 1.37.55 + web3-core: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + '@safe-global/safe-core-sdk-utils@1.7.4': + dependencies: + '@safe-global/safe-core-sdk-types': 1.10.1 + semver: 7.7.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + '@safe-global/safe-core-sdk@3.3.5(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@ethersproject/solidity': 5.8.0 + '@safe-global/safe-core-sdk-types': 1.10.1 + '@safe-global/safe-core-sdk-utils': 1.7.4 + '@safe-global/safe-deployments': 1.37.55 + ethereumjs-util: 7.1.5 + semver: 7.7.4 + web3-utils: 1.10.4 + zksync-web3: 0.14.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + transitivePeerDependencies: + - encoding + - ethers + - supports-color + + '@safe-global/safe-deployments@1.37.55': + dependencies: + semver: 7.7.4 + + '@safe-global/safe-ethers-adapters@0.1.0-alpha.19(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@safe-global/safe-core-sdk': 3.3.5(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@safe-global/safe-core-sdk-types': 1.10.1 + '@safe-global/safe-deployments': 1.37.55 + axios: 0.27.2 + transitivePeerDependencies: + - debug + - encoding + - ethers + - supports-color + + '@safe-global/safe-ethers-lib@1.9.4(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@safe-global/safe-core-sdk-types': 1.10.1 + '@safe-global/safe-core-sdk-utils': 1.7.4 + ethers: 5.7.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@safe-global/safe-gateway-typescript-sdk@3.23.1': {} + + '@safe-global/safe-modules-deployments@3.0.3': {} + + '@safe-global/types-kit@3.1.0(typescript@5.9.3)(zod@4.3.6)': + dependencies: + abitype: 1.2.4(typescript@5.9.3)(zod@4.3.6) + transitivePeerDependencies: + - typescript + - zod + + '@scure/base@1.1.9': {} + + '@scure/base@1.2.6': {} + + '@scure/bip32@1.3.2': + dependencies: + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.9 + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip32@1.6.2': + dependencies: + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@scure/base': 1.2.6 + + '@scure/bip32@1.7.0': + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@scure/bip39@1.2.1': + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.9 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.5.4': + dependencies: + '@noble/hashes': 1.7.1 + '@scure/base': 1.2.6 + + '@scure/bip39@1.6.0': + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@sinclair/typebox@0.27.10': {} + '@sindresorhus/base62@1.0.0': {} + '@sindresorhus/is@4.6.0': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@so-ric/colorspace@1.1.6': + dependencies: + color: 5.0.3 + text-hex: 1.0.0 + + '@socket.io/component-emitter@3.1.2': {} + + '@solana-program/compute-budget@0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + + '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@solana/kit': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + + '@solana-program/token@0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + + '@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@solana/kit': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + + '@solana/accounts@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/accounts@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/assertions': 2.3.0(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/addresses@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/assertions': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/assertions@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/assertions@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-core@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-core@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-data-structures@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-data-structures@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-numbers@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-numbers@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/codecs-strings@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.9.3 + + '@solana/codecs-strings@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.9.3 + + '@solana/codecs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/options': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/codecs@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/options': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.3.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 14.0.3 + typescript: 5.9.3 + + '@solana/errors@5.5.1(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 14.0.2 + optionalDependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@solana/fast-stable-stringify@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/functional@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@solana/functional@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/instruction-plans@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/instructions': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/promises': 5.5.1(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/instructions@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/instructions@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/keys@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/assertions': 2.3.0(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/keys@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/assertions': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/programs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-parsed-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/signers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/sysvars': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + + '@solana/kit@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/accounts': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/instruction-plans': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/instructions': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/offchain-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/plugin-core': 5.5.1(typescript@5.9.3) + '@solana/programs': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-api': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-parsed-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/signers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-confirmation': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/nominal-types@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@solana/nominal-types@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/offchain-messages@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/options@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/plugin-core@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/programs@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/programs@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/promises@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@solana/promises@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-parsed-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-api@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-parsed-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-parsed-types@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@solana/rpc-parsed-types@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@2.3.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@solana/rpc-spec-types@5.5.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-spec@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/rpc-spec@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions-api@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-api@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-subscriptions-channel-websocket@2.3.0(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) + '@solana/subscribable': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + + '@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) + '@solana/subscribable': 5.5.1(typescript@5.9.3) + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@solana/rpc-subscriptions-spec@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/promises': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/subscribable': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/rpc-subscriptions-spec@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/promises': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/subscribable': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-subscriptions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/promises': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 2.3.0(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@solana/rpc-subscriptions-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/subscribable': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + + '@solana/rpc-subscriptions@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/fast-stable-stringify': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/promises': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-subscriptions-api': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions-channel-websocket': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/subscribable': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/rpc-transformers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transformers@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-transport-http@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + undici-types: 7.18.2 + + '@solana/rpc-transport-http@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + undici-types: 7.25.0 + optionalDependencies: + typescript: 5.9.3 + + '@solana/rpc-types@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc-types@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/fast-stable-stringify': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/rpc-api': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-spec': 2.3.0(typescript@5.9.3) + '@solana/rpc-spec-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-transformers': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-transport-http': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/rpc@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/fast-stable-stringify': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/rpc-api': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-spec': 5.5.1(typescript@5.9.3) + '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-transformers': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-transport-http': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/signers@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/instructions': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/offchain-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/subscribable@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/subscribable@5.5.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 5.5.1(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + '@solana/sysvars@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/accounts': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/accounts': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-confirmation@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/promises': 2.3.0(typescript@5.9.3) + '@solana/rpc': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - ws + + '@solana/transaction-confirmation@5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/promises': 5.5.1(typescript@5.9.3) + '@solana/rpc': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transactions': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - fastestsmallesttextencoderdecoder + - utf-8-validate + + '@solana/transaction-messages@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transaction-messages@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/instructions': 5.5.1(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/codecs-data-structures': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-strings': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + '@solana/functional': 2.3.0(typescript@5.9.3) + '@solana/instructions': 2.3.0(typescript@5.9.3) + '@solana/keys': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 2.3.0(typescript@5.9.3) + '@solana/rpc-types': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/transactions@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/addresses': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@5.9.3) + '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) + '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) + '@solana/codecs-strings': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/functional': 5.5.1(typescript@5.9.3) + '@solana/instructions': 5.5.1(typescript@5.9.3) + '@solana/keys': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/rpc-types': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/transaction-messages': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@stablelib/aead@1.0.1': {} + + '@stablelib/binary@1.0.1': + dependencies: + '@stablelib/int': 1.0.1 + + '@stablelib/bytes@1.0.1': {} + + '@stablelib/chacha20poly1305@1.0.1': + dependencies: + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/chacha@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/constant-time@1.0.1': {} + + '@stablelib/ed25519@1.0.3': + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hash@1.0.1': {} + + '@stablelib/hkdf@1.0.1': + dependencies: + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hmac@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/int@1.0.1': {} + + '@stablelib/keyagreement@1.0.1': + dependencies: + '@stablelib/bytes': 1.0.1 + + '@stablelib/poly1305@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/random@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha256@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha512@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/wipe@1.0.1': {} + + '@stablelib/x25519@1.0.3': + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + '@standard-schema/spec@1.0.0': {} '@standard-schema/spec@1.1.0': {} @@ -7847,6 +18906,14 @@ snapshots: dependencies: tslib: 2.8.1 + '@szmarczak/http-timer@4.0.6': + dependencies: + defer-to-connect: 2.0.1 + + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + '@tabby_ai/hijri-converter@1.0.5': {} '@tanstack/eslint-plugin-query@5.95.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': @@ -7858,13 +18925,595 @@ snapshots: transitivePeerDependencies: - supports-color + '@tanstack/query-core@4.44.0': {} + + '@tanstack/query-core@5.29.0': {} + + '@tanstack/query-core@5.81.5': {} + '@tanstack/query-core@5.95.2': {} + '@tanstack/react-query@4.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/query-core': 4.44.0 + react: 18.3.1 + use-sync-external-store: 1.6.0(react@18.3.1) + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + + '@tanstack/react-query@5.29.2(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.29.0 + react: 18.3.1 + + '@tanstack/react-query@5.81.5(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.81.5 + react: 18.3.1 + + '@tanstack/react-query@5.95.2(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.95.2 + react: 18.3.1 + '@tanstack/react-query@5.95.2(react@19.2.3)': dependencies: '@tanstack/query-core': 5.95.2 react: 19.2.3 + '@tanstack/react-virtual@3.13.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/virtual-core': 3.14.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@tanstack/virtual-core@3.14.0': {} + + '@testing-library/dom@9.3.4': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.29.2 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@14.3.1(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.29.2 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.3.7(@types/react@18.3.28) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + + '@testing-library/user-event@14.6.1(@testing-library/dom@9.3.4)': + dependencies: + '@testing-library/dom': 9.3.4 + + '@thirdweb-dev/auth@4.1.97(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(express@4.22.1)(fastify@4.29.1)(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@fastify/cookie': 9.4.0 + '@thirdweb-dev/wallets': 2.5.39(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + cookie: 0.6.0 + fastify-type-provider-zod: 1.2.0(fastify@4.29.1)(zod@3.25.76) + uuid: 9.0.1 + zod: 3.25.76 + optionalDependencies: + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + express: 4.22.1 + fastify: 4.29.1 + transitivePeerDependencies: + - '@aws-sdk/client-lambda' + - '@aws-sdk/client-secrets-manager' + - '@aws-sdk/credential-providers' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@coinbase/wallet-mobile-sdk' + - '@deno/kv' + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/properties' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - amazon-cognito-identity-js + - aptos + - aws-amplify + - aws4fetch + - bs58 + - bufferutil + - db0 + - debug + - encoding + - ethers-aws-kms-signer + - expo-web-browser + - ioredis + - localforage + - react + - react-dom + - react-native + - react-native-aes-gcm-crypto + - react-native-quick-crypto + - supports-color + - tweetnacl + - typescript + - uploadthing + - utf-8-validate + - zksync-ethers + + '@thirdweb-dev/chains@0.1.120': {} + + '@thirdweb-dev/contracts-js@1.3.23(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))': + dependencies: + '@thirdweb-dev/contracts': 3.15.0 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + + '@thirdweb-dev/contracts@3.15.0': + dependencies: + '@openzeppelin/contracts': 4.9.6 + '@openzeppelin/contracts-upgradeable': 4.9.6 + '@thirdweb-dev/dynamic-contracts': 1.2.5 + erc721a-upgradeable: 3.3.0 + solady: 0.0.180 + + '@thirdweb-dev/crypto@0.2.6': + dependencies: + '@noble/hashes': 1.8.0 + js-sha3: 0.9.3 + + '@thirdweb-dev/dynamic-contracts@1.2.5': {} + + '@thirdweb-dev/engine@3.4.0(@hey-api/openapi-ts@0.96.1(typescript@5.9.3))(typescript@5.9.3)': + dependencies: + '@hey-api/client-fetch': 0.10.0(@hey-api/openapi-ts@0.96.1(typescript@5.9.3)) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@hey-api/openapi-ts' + + '@thirdweb-dev/generated-abis@0.0.2': {} + + '@thirdweb-dev/insight@1.1.1(typescript@5.9.3)': + optionalDependencies: + typescript: 5.9.3 + + '@thirdweb-dev/merkletree@0.2.6': + dependencies: + buffer: 6.0.3 + buffer-reverse: 1.0.1 + treeify: 1.1.0 + + '@thirdweb-dev/payments@1.0.5(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@thirdweb-dev/react-core@4.9.4(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(express@4.22.1)(fastify@4.29.1)(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@tanstack/react-query': 4.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@thirdweb-dev/auth': 4.1.97(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(express@4.22.1)(fastify@4.29.1)(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@thirdweb-dev/chains': 0.1.120 + '@thirdweb-dev/generated-abis': 0.0.2 + '@thirdweb-dev/sdk': 4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@thirdweb-dev/storage': 2.0.15 + '@thirdweb-dev/wallets': 2.5.39(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + mime: 3.0.0 + react: 18.3.1 + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - '@aws-sdk/client-lambda' + - '@aws-sdk/client-secrets-manager' + - '@aws-sdk/credential-providers' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@coinbase/wallet-mobile-sdk' + - '@deno/kv' + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/properties' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - amazon-cognito-identity-js + - aptos + - aws-amplify + - aws4fetch + - bs58 + - bufferutil + - cookie-parser + - db0 + - debug + - encoding + - ethers-aws-kms-signer + - expo-web-browser + - express + - fastify + - ioredis + - localforage + - next + - next-auth + - react-dom + - react-native + - react-native-aes-gcm-crypto + - react-native-quick-crypto + - supports-color + - tweetnacl + - typescript + - uploadthing + - utf-8-validate + - zksync-ethers + - zod + + '@thirdweb-dev/react@4.9.4(@babel/core@7.29.0)(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@thirdweb-dev/sdk@4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(express@4.22.1)(fastify@4.29.1)(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@emotion/css': 11.10.5(@babel/core@7.29.0) + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.11.0(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@google/model-viewer': 2.1.1 + '@headlessui/react': 1.7.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/colors': 0.1.9 + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-icons': 1.3.2(react@18.3.1) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': 4.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@thirdweb-dev/chains': 0.1.120 + '@thirdweb-dev/payments': 1.0.5(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@thirdweb-dev/react-core': 4.9.4(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(express@4.22.1)(fastify@4.29.1)(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@thirdweb-dev/sdk': 4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@thirdweb-dev/wallets': 2.5.39(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + buffer: 6.0.3 + copy-to-clipboard: 3.3.3 + detect-browser: 5.3.0 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + fuse.js: 7.1.0 + input-otp: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + qrcode: 1.5.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tiny-invariant: 1.3.3 + transitivePeerDependencies: + - '@aws-sdk/client-lambda' + - '@aws-sdk/client-secrets-manager' + - '@aws-sdk/credential-providers' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/core' + - '@capacitor/preferences' + - '@coinbase/wallet-mobile-sdk' + - '@deno/kv' + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/properties' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - amazon-cognito-identity-js + - aptos + - aws-amplify + - aws4fetch + - bs58 + - bufferutil + - cookie-parser + - db0 + - debug + - encoding + - ethers-aws-kms-signer + - expo-web-browser + - express + - fastify + - ioredis + - localforage + - next + - next-auth + - react-native + - react-native-aes-gcm-crypto + - react-native-quick-crypto + - supports-color + - tweetnacl + - typescript + - uploadthing + - utf-8-validate + - zksync-ethers + - zod + + '@thirdweb-dev/sdk@4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@eth-optimism/sdk': 3.3.2(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + '@thirdweb-dev/chains': 0.1.120 + '@thirdweb-dev/contracts-js': 1.3.23(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@thirdweb-dev/crypto': 0.2.6 + '@thirdweb-dev/generated-abis': 0.0.2 + '@thirdweb-dev/merkletree': 0.2.6 + '@thirdweb-dev/storage': 2.0.15 + abitype: 1.0.0(typescript@5.9.3)(zod@3.25.76) + bn.js: 5.2.1 + bs58: 5.0.0 + buffer: 6.0.3 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + eventemitter3: 5.0.4 + fast-deep-equal: 3.1.3 + thirdweb: 5.29.6(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + tiny-invariant: 1.3.3 + tweetnacl: 1.0.3 + uuid: 9.0.1 + yaml: 2.8.3 + zod: 3.25.76 + transitivePeerDependencies: + - '@aws-sdk/client-lambda' + - '@aws-sdk/credential-providers' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@coinbase/wallet-mobile-sdk' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - amazon-cognito-identity-js + - aws-amplify + - aws4fetch + - bufferutil + - db0 + - encoding + - expo-web-browser + - ioredis + - react + - react-dom + - react-native + - react-native-aes-gcm-crypto + - react-native-quick-crypto + - supports-color + - typescript + - uploadthing + - utf-8-validate + + '@thirdweb-dev/storage@2.0.15': + dependencies: + '@thirdweb-dev/crypto': 0.2.6 + cid-tool: 3.0.0 + form-data: 4.0.5 + uuid: 9.0.1 + + '@thirdweb-dev/wallets@2.5.39(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@account-abstraction/contracts': 0.5.0 + '@blocto/sdk': 0.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@coinbase/wallet-sdk': 3.9.3 + '@google-cloud/kms': 4.5.0 + '@magic-ext/connect': 6.7.2 + '@magic-ext/oauth': 7.6.2 + '@magic-sdk/provider': 13.6.2(localforage@1.10.0) + '@metamask/eth-sig-util': 4.0.1 + '@paperxyz/embedded-wallet-service-sdk': 1.2.5(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@paperxyz/sdk-common-utilities': 0.1.1 + '@safe-global/safe-core-sdk': 3.3.5(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@safe-global/safe-ethers-adapters': 0.1.0-alpha.19(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@safe-global/safe-ethers-lib': 1.9.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@thirdweb-dev/chains': 0.1.120 + '@thirdweb-dev/contracts-js': 1.3.23(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@thirdweb-dev/crypto': 0.2.6 + '@thirdweb-dev/sdk': 4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/ethereum-provider': 2.12.2(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.7.0(@types/react@18.3.28)(react@18.3.1) + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/web3wallet': 1.16.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + asn1.js: 5.4.1 + bn.js: 5.2.1 + buffer: 6.0.3 + eth-provider: 0.13.7(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ethereumjs-util: 7.1.5 + eventemitter3: 5.0.4 + key-encoder: 2.0.3 + magic-sdk: 13.6.2 + web3-core: 1.5.2 + optionalDependencies: + bs58: 5.0.0 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@aws-sdk/client-lambda' + - '@aws-sdk/credential-providers' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@coinbase/wallet-mobile-sdk' + - '@deno/kv' + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/properties' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - amazon-cognito-identity-js + - aptos + - aws-amplify + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-web-browser + - ioredis + - localforage + - react + - react-dom + - react-native + - react-native-aes-gcm-crypto + - react-native-quick-crypto + - supports-color + - typescript + - uploadthing + - utf-8-validate + - zksync-ethers + - zod + + '@thirdweb-dev/wallets@2.5.39(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bs58@5.0.0)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(localforage@1.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tweetnacl@1.0.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@account-abstraction/contracts': 0.5.0 + '@blocto/sdk': 0.10.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@coinbase/wallet-sdk': 3.9.3 + '@google-cloud/kms': 4.5.0 + '@magic-ext/connect': 6.7.2 + '@magic-ext/oauth': 7.6.2 + '@magic-sdk/provider': 13.6.2(localforage@1.10.0) + '@metamask/eth-sig-util': 4.0.1 + '@paperxyz/embedded-wallet-service-sdk': 1.2.5(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@paperxyz/sdk-common-utilities': 0.1.1 + '@safe-global/safe-core-sdk': 3.3.5(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@safe-global/safe-ethers-adapters': 0.1.0-alpha.19(@ethersproject/abstract-provider@5.8.0)(@ethersproject/abstract-signer@5.8.0)(@ethersproject/bignumber@5.8.0)(@ethersproject/properties@5.8.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@safe-global/safe-ethers-lib': 1.9.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@thirdweb-dev/chains': 0.1.120 + '@thirdweb-dev/contracts-js': 1.3.23(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@thirdweb-dev/crypto': 0.2.6 + '@thirdweb-dev/sdk': 4.0.99(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/core': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/ethereum-provider': 2.12.2(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.7.0(@types/react@18.3.28)(react@18.3.1) + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + '@walletconnect/web3wallet': 1.16.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + asn1.js: 5.4.1 + bn.js: 5.2.1 + buffer: 6.0.3 + eth-provider: 0.13.7(bufferutil@4.1.0)(utf-8-validate@5.0.10) + ethereumjs-util: 7.1.5 + eventemitter3: 5.0.4 + key-encoder: 2.0.3 + magic-sdk: 13.6.2 + web3-core: 1.5.2 + optionalDependencies: + bs58: 5.0.0 + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@aws-sdk/client-lambda' + - '@aws-sdk/credential-providers' + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@coinbase/wallet-mobile-sdk' + - '@deno/kv' + - '@ethersproject/abstract-provider' + - '@ethersproject/abstract-signer' + - '@ethersproject/bignumber' + - '@ethersproject/properties' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - amazon-cognito-identity-js + - aptos + - aws-amplify + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-web-browser + - ioredis + - localforage + - react + - react-dom + - react-native + - react-native-aes-gcm-crypto + - react-native-quick-crypto + - supports-color + - typescript + - uploadthing + - utf-8-validate + - zksync-ethers + - zod + + '@tootallnate/once@2.0.0': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -7882,6 +19531,8 @@ snapshots: dependencies: '@types/readdir-glob': 1.1.5 + '@types/aria-query@5.0.4': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.29.2 @@ -7903,21 +19554,55 @@ snapshots: dependencies: '@babel/types': 7.29.0 + '@types/bcrypt@5.0.2': + dependencies: + '@types/node': 25.5.0 + + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 25.5.0 + + '@types/bn.js@5.2.0': + dependencies: + '@types/node': 25.5.0 + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 '@types/node': 25.5.0 + '@types/cacheable-request@6.0.3': + dependencies: + '@types/http-cache-semantics': 4.2.0 + '@types/keyv': 3.1.4 + '@types/node': 25.5.0 + '@types/responselike': 1.0.3 + + '@types/caseless@0.12.5': {} + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 optional: true + '@types/compression@1.8.1': + dependencies: + '@types/express': 4.17.25 + '@types/node': 25.5.0 + '@types/connect@3.4.38': dependencies: '@types/node': 25.5.0 + '@types/cookie-parser@1.4.10(@types/express@4.17.25)': + dependencies: + '@types/express': 4.17.25 + + '@types/cors@2.8.19': + dependencies: + '@types/node': 25.5.0 + '@types/d3-array@3.2.2': {} '@types/d3-color@3.1.3': {} @@ -7949,6 +19634,10 @@ snapshots: '@types/deep-eql@4.0.2': optional: true + '@types/elliptic@6.4.18': + dependencies: + '@types/bn.js': 5.2.0 + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} @@ -7967,6 +19656,10 @@ snapshots: '@types/qs': 6.14.0 '@types/serve-static': 1.15.10 + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 25.5.0 + '@types/hast@2.3.10': dependencies: '@types/unist': 2.0.11 @@ -7975,12 +19668,42 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/http-cache-semantics@4.2.0': {} + '@types/http-errors@2.0.5': {} + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} + '@types/jsonwebtoken@9.0.10': + dependencies: + '@types/ms': 2.1.0 + '@types/node': 25.5.0 + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 25.5.0 + + '@types/lodash@4.17.24': {} + + '@types/long@4.0.2': {} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -7989,6 +19712,10 @@ snapshots: '@types/ms@2.1.0': {} + '@types/node-cron@3.0.11': {} + + '@types/node@12.20.55': {} + '@types/node@20.19.33': dependencies: undici-types: 6.21.0 @@ -8005,12 +19732,30 @@ snapshots: dependencies: undici-types: 7.18.2 + '@types/parse-json@4.0.2': {} + + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 25.5.0 + + '@types/pg@8.20.0': + dependencies: + '@types/node': 25.5.0 + pg-protocol: 1.13.0 + pg-types: 2.2.0 + '@types/prismjs@1.26.6': {} + '@types/prop-types@15.7.15': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} + '@types/react-dom@18.3.7(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: '@types/react': 19.2.14 @@ -8019,13 +19764,35 @@ snapshots: dependencies: '@types/react': 19.2.14 + '@types/react@18.3.28': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.2.3 + '@types/react@19.2.14': dependencies: csstype: 3.2.3 '@types/readdir-glob@1.1.5': dependencies: - '@types/node': 22.19.15 + '@types/node': 25.5.0 + + '@types/request@2.48.13': + dependencies: + '@types/caseless': 0.12.5 + '@types/node': 25.5.0 + '@types/tough-cookie': 4.0.5 + form-data: 2.5.5 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 25.5.0 + + '@types/secp256k1@4.0.7': + dependencies: + '@types/node': 25.5.0 + + '@types/semver@7.7.1': {} '@types/send@0.17.6': dependencies: @@ -8042,12 +19809,20 @@ snapshots: '@types/node': 25.5.0 '@types/send': 0.17.6 + '@types/stack-utils@2.0.3': {} + '@types/strip-bom@3.0.0': {} '@types/strip-json-comments@0.0.30': {} '@types/stylis@4.2.7': {} + '@types/tough-cookie@4.0.5': {} + + '@types/triple-beam@1.3.5': {} + + '@types/trusted-types@2.0.7': {} + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -8060,6 +19835,32 @@ snapshots: dependencies: '@types/node': 25.5.0 + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + semver: 7.7.4 + ts-api-utils: 1.4.3(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -8076,6 +19877,35 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.2 + eslint: 9.39.4(jiti@2.6.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(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@5.9.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.4.3 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.57.2 @@ -8088,6 +19918,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.2 + debug: 4.4.3 + eslint: 9.39.4(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) @@ -8111,6 +19953,11 @@ snapshots: - supports-color - typescript + '@typescript-eslint/scope-manager@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/scope-manager@8.57.2': dependencies: '@typescript-eslint/types': 8.57.2 @@ -8120,6 +19967,18 @@ snapshots: dependencies: typescript: 5.9.3 + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) + debug: 4.4.3 + eslint: 8.57.1 + ts-api-utils: 1.4.3(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.57.2 @@ -8132,8 +19991,37 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4(jiti@2.6.1) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@6.21.0': {} + '@typescript-eslint/types@8.57.2': {} + '@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 + debug: 4.4.3 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.7.4 + ts-api-utils: 1.4.3(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) @@ -8149,6 +20037,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) + eslint: 8.57.1 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)) @@ -8160,11 +20062,29 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.57.2': dependencies: '@typescript-eslint/types': 8.57.2 eslint-visitor-keys: 5.0.1 + '@ungap/structured-clone@1.3.0': {} + '@uniswap/token-lists@1.0.0-beta.35': {} '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -8226,6 +20146,18 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true + '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@25.5.0)(lightningcss@1.32.0))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 5.4.21(@types/node@25.5.0)(lightningcss@1.32.0) + transitivePeerDependencies: + - supports-color + '@vitejs/plugin-react@5.2.0(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 @@ -8238,7 +20170,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.6.13(@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)))': + '@vitest/eslint-plugin@1.6.13(@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)))': dependencies: '@typescript-eslint/scope-manager': 8.57.2 '@typescript-eslint/utils': 8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) @@ -8246,10 +20178,16 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) typescript: 5.9.3 - vitest: 4.1.2(@types/node@25.5.0)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)) + vitest: 4.1.2(@types/node@25.5.0)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)) transitivePeerDependencies: - supports-color + '@vitest/expect@1.6.1': + dependencies: + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + chai: 4.5.0 + '@vitest/expect@2.1.9': dependencies: '@vitest/spy': 2.1.9 @@ -8293,6 +20231,12 @@ snapshots: tinyrainbow: 3.1.0 optional: true + '@vitest/runner@1.6.1': + dependencies: + '@vitest/utils': 1.6.1 + p-limit: 5.0.0 + pathe: 1.1.2 + '@vitest/runner@2.1.9': dependencies: '@vitest/utils': 2.1.9 @@ -8304,6 +20248,12 @@ snapshots: pathe: 2.0.3 optional: true + '@vitest/snapshot@1.6.1': + dependencies: + magic-string: 0.30.21 + pathe: 1.1.2 + pretty-format: 29.7.0 + '@vitest/snapshot@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 @@ -8318,6 +20268,10 @@ snapshots: pathe: 2.0.3 optional: true + '@vitest/spy@1.6.1': + dependencies: + tinyspy: 2.2.1 + '@vitest/spy@2.1.9': dependencies: tinyspy: 3.0.2 @@ -8325,6 +20279,24 @@ snapshots: '@vitest/spy@4.1.2': optional: true + '@vitest/ui@1.6.1(vitest@1.6.1)': + dependencies: + '@vitest/utils': 1.6.1 + fast-glob: 3.3.3 + fflate: 0.8.2 + flatted: 3.4.2 + pathe: 1.1.2 + picocolors: 1.1.1 + sirv: 2.0.4 + vitest: 1.6.1(@types/node@25.5.0)(@vitest/ui@1.6.1)(jsdom@23.2.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0) + + '@vitest/utils@1.6.1': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + '@vitest/utils@2.1.9': dependencies: '@vitest/pretty-format': 2.1.9 @@ -8370,10 +20342,2482 @@ snapshots: '@vue/shared@3.5.31': {} + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@3.25.76)': + dependencies: + '@base-org/account': 2.4.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@18.3.28)(bufferutil@4.1.0)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.76) + '@gemini-wallet/core': 0.3.2(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + porto: 0.2.35(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - expo-web-browser + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - react-native + - supports-color + - uploadthing + - use-sync-external-store + - utf-8-validate + - wagmi + - zod + + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@4.3.6)': + dependencies: + '@base-org/account': 2.4.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + '@coinbase/wallet-sdk': 4.3.6(@types/react@18.3.28)(bufferutil@4.1.0)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + '@gemini-wallet/core': 0.3.2(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + porto: 0.2.35(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - expo-web-browser + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - react-native + - supports-color + - uploadthing + - use-sync-external-store + - utf-8-validate + - wagmi + - zod + + '@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.9.3) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zustand: 5.0.0(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.95.2 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + + '@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.9.3) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + zustand: 5.0.0(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.95.2 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + + '@wagmi/core@3.4.5(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.9.3) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + zustand: 5.0.0(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.95.2 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@walletconnect/auth-client@2.1.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@ethersproject/hash': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@walletconnect/core': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(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/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@3.25.76) + events: 3.3.0 + isomorphic-unfetch: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/auth-client@2.1.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@ethersproject/hash': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@walletconnect/core': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@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/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + events: 3.3.0 + isomorphic-unfetch: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.3 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.2(ioredis@5.9.3) + '@walletconnect/utils': 2.12.2(ioredis@5.9.3) + events: 3.3.0 + isomorphic-unfetch: 3.1.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/core@2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.17.1(ioredis@5.9.3) + '@walletconnect/utils': 2.17.1(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/core@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.33.0 + events: 3.3.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.33.0 + events: 3.3.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.33.0 + events: 3.3.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.33.0 + events: 3.3.0 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.8(ioredis@5.9.3) + '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.39.3 + events: 3.3.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.2(ioredis@5.9.3) + '@walletconnect/utils': 2.23.2(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.39.3 + events: 3.3.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.44.0 + events: 3.3.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/core@2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + '@walletconnect/window-getters': 1.0.1 + es-toolkit: 1.44.0 + events: 3.3.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/environment@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/ethereum-provider@2.12.2(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(utf-8-validate@5.0.10)': + dependencies: + '@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/modal': 2.7.0(@types/react@18.3.28)(react@18.3.1) + '@walletconnect/sign-client': 2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.12.2(ioredis@5.9.3) + '@walletconnect/universal-provider': 2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/utils': 2.12.2(ioredis@5.9.3) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - uploadthing + - utf-8-validate + + '@walletconnect/ethereum-provider@2.21.1(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@reown/appkit': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@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(ioredis@5.9.3) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/ethereum-provider@2.21.1(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit': 1.7.8(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@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(ioredis@5.9.3) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/ethereum-provider@2.23.9(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@reown/appkit': 1.8.17-wc-circular-dependencies-fix.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@4.3.6) + '@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(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/sign-client': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/universal-provider': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - typescript + - uploadthing + - use-sync-external-store + - utf-8-validate + - zod + + '@walletconnect/events@1.0.1': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/heartbeat@1.2.1': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + + '@walletconnect/heartbeat@1.2.2': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-http-connection@1.0.8': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.2.0 + events: 3.3.0 + transitivePeerDependencies: + - encoding + + '@walletconnect/jsonrpc-provider@1.0.13': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-provider@1.0.14': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-types@1.0.3': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-types@1.0.4': + dependencies: + events: 3.3.0 + keyvaluestorage-interface: 1.0.0 + + '@walletconnect/jsonrpc-utils@1.0.8': + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.4 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.1.0)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@walletconnect/keyvaluestorage@1.1.1(ioredis@5.9.3)': + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.2 + unstorage: 1.17.5(idb-keyval@6.2.2)(ioredis@5.9.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/logger@2.1.2': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + + '@walletconnect/logger@2.1.3': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + + '@walletconnect/logger@3.0.2': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 10.0.0 + + '@walletconnect/modal-core@2.7.0(@types/react@18.3.28)(react@18.3.1)': + dependencies: + valtio: 1.11.2(@types/react@18.3.28)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/modal-ui@2.7.0(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@walletconnect/modal-core': 2.7.0(@types/react@18.3.28)(react@18.3.1) + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/modal@2.7.0(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@walletconnect/modal-core': 2.7.0(@types/react@18.3.28)(react@18.3.1) + '@walletconnect/modal-ui': 2.7.0(@types/react@18.3.28)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - react + + '@walletconnect/relay-api@1.0.11': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.4 + + '@walletconnect/relay-auth@1.0.4': + dependencies: + '@stablelib/ed25519': 1.0.3 + '@stablelib/random': 1.0.2 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + uint8arrays: 3.1.0 + + '@walletconnect/relay-auth@1.1.0': + dependencies: + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + uint8arrays: 3.1.1 + + '@walletconnect/safe-json@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/sign-client@2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.3 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.2(ioredis@5.9.3) + '@walletconnect/utils': 2.12.2(ioredis@5.9.3) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/sign-client@2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@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.17.1(ioredis@5.9.3) + '@walletconnect/utils': 2.17.1(ioredis@5.9.3) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.0(ioredis@5.9.3) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@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(ioredis@5.9.3) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.1(ioredis@5.9.3) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@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(ioredis@5.9.3) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75)': + dependencies: + '@walletconnect/core': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + '@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(ioredis@5.9.3) + '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/core': 2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 3.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.2(ioredis@5.9.3) + '@walletconnect/utils': 2.23.2(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/core': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 3.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@3.25.76) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/sign-client@2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/core': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 3.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/time@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/types@2.12.2(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.3 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.17.1(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.21.0(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.21.1(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.21.8(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.23.2(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.23.9(ioredis@5.9.3)': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/universal-provider@2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.3 + '@walletconnect/sign-client': 2.12.2(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.12.2(ioredis@5.9.3) + '@walletconnect/utils': 2.12.2(ioredis@5.9.3) + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + es-toolkit: 1.33.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + es-toolkit: 1.33.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + es-toolkit: 1.33.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + es-toolkit: 1.33.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/universal-provider@2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + '@walletconnect/types': 2.21.8(ioredis@5.9.3) + '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + es-toolkit: 1.39.3 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/universal-provider@2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/sign-client': 2.23.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.23.2(ioredis@5.9.3) + '@walletconnect/utils': 2.23.2(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + es-toolkit: 1.39.3 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/universal-provider@2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/events': 1.0.1 + '@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(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/sign-client': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/utils': 2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6) + es-toolkit: 1.44.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/utils@2.12.2(ioredis@5.9.3)': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.2(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/utils@2.17.1(ioredis@5.9.3)': + dependencies: + '@ethersproject/hash': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.17.1(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + elliptic: 6.5.7 + query-string: 7.1.3 + uint8arrays: 3.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@noble/ciphers': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@noble/ciphers': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.0(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@noble/ciphers': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@noble/ciphers': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/utils@2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75)': + dependencies: + '@msgpack/msgpack': 3.1.2 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.2 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.8(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + viem: 2.31.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/utils@2.23.2(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6)': + dependencies: + '@msgpack/msgpack': 3.1.2 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.2(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + ox: 0.9.3(typescript@5.9.3)(zod@4.3.6) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - typescript + - uploadthing + - zod + + '@walletconnect/utils@2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@3.25.76)': + dependencies: + '@msgpack/msgpack': 3.1.3 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + detect-browser: 5.3.0 + ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - typescript + - uploadthing + - zod + + '@walletconnect/utils@2.23.9(ioredis@5.9.3)(typescript@5.9.3)(zod@4.3.6)': + dependencies: + '@msgpack/msgpack': 3.1.3 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.9.3) + '@walletconnect/logger': 3.0.2 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.23.9(ioredis@5.9.3) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + detect-browser: 5.3.0 + ox: 0.9.3(typescript@5.9.3)(zod@4.3.6) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - typescript + - uploadthing + - zod + + '@walletconnect/web3wallet@1.16.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + dependencies: + '@walletconnect/auth-client': 2.1.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.17.1(ioredis@5.9.3) + '@walletconnect/utils': 2.17.1(ioredis@5.9.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/web3wallet@1.16.1(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)': + dependencies: + '@walletconnect/auth-client': 2.1.2(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/core': 2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.17.1(bufferutil@4.1.0)(ioredis@5.9.3)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.17.1(ioredis@5.9.3) + '@walletconnect/utils': 2.17.1(ioredis@5.9.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@walletconnect/window-getters@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/window-metadata@1.0.1': + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + + abbrev@1.1.1: {} + + abitype@1.0.0(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + + abitype@1.0.6(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + + abitype@1.0.8(typescript@5.9.3)(zod@3.25.75): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.75 + + abitype@1.0.8(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + + abitype@1.0.8(typescript@5.9.3)(zod@4.3.6): + optionalDependencies: + typescript: 5.9.3 + zod: 4.3.6 + + abitype@1.1.0(typescript@5.9.3)(zod@3.25.75): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.75 + + abitype@1.2.3(typescript@5.9.3)(zod@3.22.4): + optionalDependencies: + typescript: 5.9.3 + zod: 3.22.4 + + abitype@1.2.3(typescript@5.9.3)(zod@3.25.75): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.75 + + abitype@1.2.3(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + + abitype@1.2.3(typescript@5.9.3)(zod@4.3.6): + optionalDependencies: + typescript: 5.9.3 + zod: 4.3.6 + + abitype@1.2.4(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + + abitype@1.2.4(typescript@5.9.3)(zod@4.3.6): + optionalDependencies: + typescript: 5.9.3 + zod: 4.3.6 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 + abortcontroller-polyfill@1.7.8: {} + + abstract-logging@2.0.1: {} + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -8389,16 +22833,28 @@ snapshots: acorn-walk@8.3.4: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 acorn@8.15.0: {} acorn@8.16.0: {} + aes-js@3.0.0: {} + aes-js@4.0.0-beta.5: {} + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + agent-base@7.1.4: {} + ajv-formats@2.1.1(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 @@ -8417,6 +22873,12 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -8425,6 +22887,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + ansi-styles@6.2.3: {} ansis@4.2.0: {} @@ -8436,6 +22900,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + aproba@2.1.0: {} + archiver-utils@5.0.2: dependencies: glob: 10.5.0 @@ -8462,16 +22928,29 @@ snapshots: are-docs-informative@0.0.2: {} + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + arg@4.1.3: {} arg@5.0.2: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-hidden@1.2.6: dependencies: tslib: 2.7.0 + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 + aria-query@5.3.2: {} array-buffer-byte-length@1.0.2: @@ -8492,6 +22971,8 @@ snapshots: is-string: 1.1.1 math-intrinsics: 1.1.0 + array-union@2.1.0: {} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -8543,22 +23024,65 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.3 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + asn1.js@5.4.1: + dependencies: + bn.js: 4.12.3 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + asn1@0.2.6: dependencies: safer-buffer: 2.1.2 + asn1js@3.0.10: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + optional: true + assert-plus@1.0.0: {} + assert@1.5.1: + dependencies: + object.assign: 4.1.7 + util: 0.10.4 + + assert@2.1.0: + dependencies: + call-bind: 1.0.8 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.7 + util: 0.12.5 + + assertion-error@1.1.0: {} + assertion-error@2.0.1: {} ast-types-flow@0.0.8: {} async-function@1.0.0: {} + async-limiter@1.0.1: {} + + async-mutex@0.2.6: + dependencies: + tslib: 2.8.1 + async@3.2.6: {} asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + autoprefixer@10.4.27(postcss@8.5.8): dependencies: browserslist: 4.28.1 @@ -8572,12 +23096,35 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 + avvio@8.4.0: + dependencies: + '@fastify/error': 3.4.1 + fastq: 1.20.1 + aws-sign2@0.7.0: {} aws4@1.13.2: {} axe-core@4.11.1: {} + axios-retry@4.5.0(axios@1.13.6): + dependencies: + axios: 1.13.6 + is-retry-allowed: 2.2.0 + + axios@0.21.4: + dependencies: + follow-redirects: 1.15.11 + transitivePeerDependencies: + - debug + + axios@0.27.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + transitivePeerDependencies: + - debug + axios@1.13.5: dependencies: follow-redirects: 1.15.11 @@ -8586,10 +23133,79 @@ snapshots: transitivePeerDependencies: - debug + axios@1.13.6: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.1.0: {} b4a@1.8.0: {} + babel-jest@29.7.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.29.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.28.6 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.29.2 + cosmiconfig: 7.1.0 + resolve: 1.22.11 + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) + + babel-preset-jest@29.6.3(@babel/core@7.29.0): + dependencies: + '@babel/core': 7.29.0 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -8626,6 +23242,14 @@ snapshots: dependencies: bare-path: 3.0.0 + base-x@3.0.11: + dependencies: + safe-buffer: 5.2.1 + + base-x@4.0.1: {} + + base-x@5.0.1: {} + base64-js@1.5.1: {} baseline-browser-mapping@2.10.11: {} @@ -8634,16 +23258,42 @@ snapshots: dependencies: tweetnacl: 0.14.5 + bcrypt@5.1.1: + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + node-addon-api: 5.1.0 + transitivePeerDependencies: + - encoding + - supports-color + + bech32@1.1.4: {} + bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 + big.js@6.2.2: {} + + bignumber.js@9.3.1: {} + binary-extensions@2.3.0: {} birecord@0.1.1: {} + blakejs@1.2.1: {} + bluebird@2.11.0: {} + bluebird@3.7.2: {} + + bn.js@4.11.6: {} + + bn.js@4.12.3: {} + + bn.js@5.2.1: {} + + bn.js@5.2.3: {} + body-parser@1.20.4: dependencies: bytes: 3.1.2 @@ -8663,6 +23313,8 @@ snapshots: boolbase@1.0.0: {} + bowser@2.14.1: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -8680,6 +23332,58 @@ snapshots: dependencies: fill-range: 7.1.1 + brorand@1.1.0: {} + + brotli-wasm@3.0.1: {} + + browser-resolve@2.0.0: + dependencies: + resolve: 1.22.11 + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.7 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.7 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.3 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.5: + dependencies: + bn.js: 5.2.3 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + inherits: 2.0.4 + parse-asn1: 5.1.9 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.10.11 @@ -8688,10 +23392,55 @@ snapshots: node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bs58@4.0.1: + dependencies: + base-x: 3.0.11 + + bs58@5.0.0: + dependencies: + base-x: 4.0.1 + + bs58@6.0.0: + dependencies: + base-x: 5.0.1 + + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + buffer-crc32@1.0.0: {} + buffer-equal-constant-time@1.0.1: {} + buffer-from@1.1.2: {} + buffer-reverse@1.0.1: {} + + buffer-to-arraybuffer@0.0.5: {} + + buffer-xor@1.0.3: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -8700,14 +23449,50 @@ snapshots: bufferutil@4.1.0: dependencies: node-gyp-build: 4.8.4 - optional: true + + bufio@1.2.3: {} builtin-modules@5.0.0: {} + builtin-status-codes@3.0.0: {} + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + bytes@3.1.2: {} + c12@3.3.4: + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.7 + dotenv: 17.4.2 + exsolve: 1.0.8 + giget: 3.2.0 + jiti: 2.6.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + rc9: 3.0.1 + cac@6.7.14: {} + cacheable-lookup@5.0.4: {} + + cacheable-lookup@6.1.0: {} + + cacheable-request@7.0.4: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -8729,6 +23514,10 @@ snapshots: camelcase-css@2.0.1: {} + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + camelize@1.0.1: {} caniuse-lite@1.0.30001781: {} @@ -8737,6 +23526,16 @@ snapshots: ccount@2.0.1: {} + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + chai@5.3.3: dependencies: assertion-error: 2.0.1 @@ -8753,8 +23552,12 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + change-case@5.4.4: {} + char-regex@1.0.2: {} + character-entities-legacy@1.1.4: {} character-entities-legacy@3.0.0: {} @@ -8767,6 +23570,8 @@ snapshots: character-reference-invalid@2.0.1: {} + charenc@0.0.2: {} + chart.js@4.5.1: dependencies: '@kurkle/color': 0.3.4 @@ -8775,6 +23580,10 @@ snapshots: dependencies: chart.js: 4.5.1 + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + check-error@2.1.3: {} chokidar@3.6.0: @@ -8789,8 +23598,53 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + ci-info@3.9.0: {} + ci-info@4.4.0: {} + cid-tool@3.0.0: + dependencies: + cids: 1.1.9 + explain-error: 1.0.4 + multibase: 4.0.6 + multihashes: 4.0.3 + split2: 3.2.2 + uint8arrays: 2.1.10 + yargs: 16.2.0 + + cids@0.7.5: + dependencies: + buffer: 5.7.1 + class-is: 1.1.0 + multibase: 0.6.1 + multicodec: 1.0.4 + multihashes: 0.4.21 + + cids@1.1.9: + dependencies: + multibase: 4.0.6 + multicodec: 3.2.1 + multihashes: 4.0.3 + uint8arrays: 3.1.1 + + cipher-base@1.0.7: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + cjs-module-lexer@1.4.3: {} + + class-is@1.1.0: {} + class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 @@ -8799,8 +23653,38 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + client-only@0.0.1: {} + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clsx@1.2.1: {} + clsx@2.1.1: {} cluster-key-slot@1.1.2: {} @@ -8817,12 +23701,33 @@ snapshots: - '@types/react' - '@types/react-dom' + co@4.6.0: {} + + collect-v8-coverage@1.0.3: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 + color-convert@3.1.3: + dependencies: + color-name: 2.1.0 + color-name@1.1.4: {} + color-name@2.1.0: {} + + color-string@2.1.4: + dependencies: + color-name: 2.1.0 + + color-support@1.1.3: {} + + color@5.0.3: + dependencies: + color-convert: 3.1.3 + color-string: 2.1.4 + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -8833,6 +23738,10 @@ snapshots: commander@11.1.0: {} + commander@14.0.2: {} + + commander@14.0.3: {} + commander@4.1.1: {} comment-parser@1.4.1: {} @@ -8849,30 +23758,85 @@ snapshots: normalize-path: 3.0.0 readable-stream: 4.7.0 + compressible@2.0.18: + dependencies: + mime-db: 1.52.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + concat-map@0.0.1: {} confbox@0.1.8: {} confbox@0.2.4: {} + console-browserify@1.2.0: {} + + console-control-strings@1.1.0: {} + + constants-browserify@1.0.0: {} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 + content-hash@2.5.2: + dependencies: + cids: 0.7.5 + multicodec: 0.5.7 + multihashes: 0.4.21 + content-type@1.0.5: {} + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} + cookie-es@1.2.3: {} + cookie-signature@1.0.7: {} + cookie-signature@1.2.2: {} + + cookie@0.6.0: {} + cookie@0.7.2: {} + cookiejar@2.1.4: {} + + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + core-js-compat@3.49.0: dependencies: browserslist: 4.28.1 core-util-is@1.0.2: {} + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + crc-32@1.2.2: {} crc32-stream@6.0.0: @@ -8880,14 +23844,101 @@ snapshots: crc-32: 1.2.2 readable-stream: 4.7.0 + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.3 + elliptic: 6.6.1 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + + create-jest@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-jest@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-require@1.1.1: {} + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + crypt@0.0.2: {} + + crypto-browserify@3.12.1: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.5 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + hash-base: 3.0.5 + inherits: 2.0.4 + pbkdf2: 3.1.5 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + + crypto-js@4.2.0: {} + css-color-keywords@1.0.0: {} css-to-react-native@3.2.0: @@ -8896,13 +23947,25 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + css-tree@3.2.1: dependencies: mdn-data: 2.27.1 source-map-js: 1.2.1 + css.escape@1.5.1: {} + cssesc@3.0.0: {} + cssstyle@4.6.0: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + cssstyle@5.3.7: dependencies: '@asamuzakjp/css-color': 4.1.2 @@ -8950,6 +24013,11 @@ snapshots: d3-timer@3.0.1: {} + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + damerau-levenshtein@1.0.8: {} dashdash@1.14.1: @@ -8958,6 +24026,11 @@ snapshots: data-uri-to-buffer@4.0.1: {} + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + data-urls@6.0.1: dependencies: whatwg-mimetype: 5.0.0 @@ -8983,8 +24056,14 @@ snapshots: date-fns-jalali@4.1.0-0: {} + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.29.2 + date-fns@4.1.0: {} + dayjs@1.11.13: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -8993,10 +24072,16 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.3.4: + dependencies: + ms: 2.1.2 + debug@4.4.3: dependencies: ms: 2.1.3 + decamelize@1.2.0: {} + decimal.js-light@2.5.1: {} decimal.js@10.6.0: {} @@ -9005,34 +24090,105 @@ snapshots: dependencies: character-entities: 2.0.2 + decode-uri-component@0.2.2: {} + + decompress-response@3.3.0: + dependencies: + mimic-response: 1.0.1 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + dedent@1.7.2(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + deep-eql@5.0.2: {} + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + es-get-iterator: 1.1.3 + get-intrinsic: 1.3.0 + is-arguments: 1.2.0 + is-array-buffer: 3.0.5 + is-date-object: 1.1.0 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.4 + side-channel: 1.1.0 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + deep-is@0.1.4: {} + deepmerge@4.3.1: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + defer-to-connect@2.0.1: {} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.7: {} + delayed-stream@1.0.0: {} + delegates@1.0.0: {} + denque@2.1.0: {} depd@2.0.0: {} dequal@2.0.3: {} + derive-valtio@0.1.0(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1)): + dependencies: + valtio: 1.13.2(@types/react@18.3.28)(react@18.3.1) + + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + destr@2.0.5: {} + destroy@1.2.0: {} + detect-browser@5.3.0: {} + detect-libc@2.1.2: {} + detect-newline@3.1.0: {} + detect-node-es@1.1.0: {} devlop@1.1.0: @@ -9043,22 +24199,59 @@ snapshots: diff-sequences@27.5.1: {} + diff-sequences@29.6.3: {} + diff@4.0.4: {} + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.3 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + + dijkstrajs@1.0.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + dlv@1.1.3: {} doctrine@2.1.0: dependencies: esutils: 2.0.3 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dom-walk@0.1.2: {} + + domain-browser@1.2.0: {} + + domain-browser@4.22.0: {} + dotenv@16.6.1: {} + dotenv@17.4.2: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.5 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + dynamic-dedupe@0.3.0: dependencies: xtend: 4.0.2 @@ -9070,18 +24263,93 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + eciesjs@0.4.18: + dependencies: + '@ecies/ciphers': 0.2.6(@noble/ciphers@1.3.0) + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + ee-first@1.1.1: {} + eip1193-provider@1.0.1(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@json-rpc-tools/provider': 1.7.6(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + electron-to-chromium@1.5.327: {} + elliptic@6.5.4: + dependencies: + bn.js: 4.12.3 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.5.7: + dependencies: + bn.js: 4.12.3 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.3 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emittery@0.13.1: {} + + emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} empathic@2.0.0: {} + enabled@2.0.0: {} + + encode-utf8@1.0.3: {} + encodeurl@2.0.0: {} + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + engine.io-parser: 5.2.3 + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + enhanced-resolve@5.20.1: dependencies: graceful-fs: 4.2.11 @@ -9091,6 +24359,14 @@ snapshots: entities@7.0.1: {} + erc721a-upgradeable@3.3.0: + dependencies: + '@openzeppelin/contracts-upgradeable': 4.9.6 + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 @@ -9152,6 +24428,18 @@ snapshots: es-errors@1.3.0: {} + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + is-arguments: 1.2.0 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.1.1 + isarray: 2.0.5 + stop-iteration-iterator: 1.1.0 + es-iterator-helpers@1.3.1: dependencies: call-bind: 1.0.8 @@ -9198,8 +24486,34 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es-toolkit@1.33.0: {} + + es-toolkit@1.39.3: {} + + es-toolkit@1.44.0: {} + es-toolkit@1.45.1: {} + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-promise@4.2.8: {} + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -9232,6 +24546,8 @@ snapshots: escape-string-regexp@1.0.5: {} + escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -9271,6 +24587,26 @@ snapshots: - eslint-plugin-import-x - supports-color + eslint-config-next@15.5.8(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 15.5.8 + '@rushstack/eslint-patch': 1.16.1 + '@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.39.4(jiti@2.6.1)) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + eslint-flat-config-utils@2.1.4: dependencies: pathe: 2.0.3 @@ -9303,6 +24639,21 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.4(jiti@2.6.1) + get-tsconfig: 4.13.7 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + eslint-json-compat-utils@0.2.3(eslint@9.39.4(jiti@1.21.7))(jsonc-eslint-parser@2.4.2): dependencies: eslint: 9.39.4(jiti@1.21.7) @@ -9324,6 +24675,17 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + eslint-parser-plain@0.1.1: {} eslint-plugin-antfu@3.2.2(eslint@9.39.4(jiti@1.21.7)): @@ -9393,6 +24755,35 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.4(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.57.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + eslint-plugin-jsdoc@61.7.1(eslint@9.39.4(jiti@1.21.7)): dependencies: '@es-joy/jsdoccomment': 0.78.0 @@ -9447,6 +24838,25 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.4(jiti@2.6.1) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + eslint-plugin-n@17.24.0(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)) @@ -9519,10 +24929,18 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + eslint-plugin-react-hooks@5.2.0(eslint@9.39.4(jiti@1.21.7)): dependencies: eslint: 9.39.4(jiti@1.21.7) + eslint-plugin-react-hooks@5.2.0(eslint@9.39.4(jiti@2.6.1)): + dependencies: + eslint: 9.39.4(jiti@2.6.1) + eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@1.21.7)): dependencies: '@babel/core': 7.29.0 @@ -9553,6 +24971,10 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-plugin-react-refresh@0.4.26(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)): dependencies: eslint: 9.39.4(jiti@1.21.7) @@ -9629,6 +25051,28 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.1 + eslint: 9.39.4(jiti@2.6.1) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.6 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + eslint-plugin-regexp@2.10.0(eslint@9.39.4(jiti@1.21.7)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)) @@ -9709,6 +25153,11 @@ snapshots: '@vue/compiler-sfc': 3.5.31 eslint: 9.39.4(jiti@1.21.7) + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -9727,6 +25176,49 @@ snapshots: eslint-visitor-keys@5.0.1: {} + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + eslint@9.39.4(jiti@1.21.7): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)) @@ -9768,6 +25260,54 @@ snapshots: transitivePeerDependencies: - supports-color + eslint@9.39.4(jiti@2.6.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.6.1 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + espree@10.4.0: dependencies: acorn: 8.15.0 @@ -9782,10 +25322,12 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -9806,6 +25348,197 @@ snapshots: etag@1.8.1: {} + eth-block-tracker@7.1.0: + dependencies: + '@metamask/eth-json-rpc-provider': 1.0.1 + '@metamask/safe-event-emitter': 3.1.2 + '@metamask/utils': 5.0.2 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 + transitivePeerDependencies: + - supports-color + + eth-ens-namehash@2.0.8: + dependencies: + idna-uts46-hx: 2.3.1 + js-sha3: 0.5.7 + + eth-json-rpc-filters@6.0.1: + dependencies: + '@metamask/safe-event-emitter': 3.1.2 + async-mutex: 0.2.6 + eth-query: 2.1.2 + json-rpc-engine: 6.1.0 + pify: 5.0.0 + + eth-lib@0.1.29(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + bn.js: 4.12.3 + elliptic: 6.6.1 + nano-json-stream-parser: 0.1.2 + servify: 0.1.12 + ws: 3.3.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + xhr-request-promise: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + eth-lib@0.2.8: + dependencies: + bn.js: 4.12.3 + elliptic: 6.6.1 + xhr-request-promise: 0.1.3 + + eth-provider@0.13.7(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + ethereum-provider: 0.7.7 + events: 3.3.0 + oboe: 2.1.5 + uuid: 9.0.0 + ws: 8.9.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + xhr2-cookies: 1.1.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + eth-query@2.1.2: + dependencies: + json-rpc-random-id: 1.0.1 + xtend: 4.0.2 + + eth-rpc-errors@4.0.3: + dependencies: + fast-safe-stringify: 2.1.1 + + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.8.0 + + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.7 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.5 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.4 + setimmediate: 1.0.5 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethereum-provider@0.7.7: + dependencies: + events: 3.3.0 + + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.3 + ethereumjs-util: 6.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.3 + create-hash: 1.2.0 + elliptic: 6.6.1 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.2.0 + bn.js: 5.2.3 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + + ethers@5.7.2(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/providers': 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/solidity': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/units': 5.8.0 + '@ethersproject/wallet': 5.8.0 + '@ethersproject/web': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + ethers@6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@adraffy/ens-normalize': 1.10.1 @@ -9819,8 +25552,31 @@ snapshots: - bufferutil - utf-8-validate + ethjs-unit@0.1.6: + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-target-shim@5.0.1: {} + eventemitter2@6.4.9: {} + + eventemitter3@4.0.4: {} + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + eventemitter3@5.0.4: {} events-universal@1.0.1: @@ -9831,8 +25587,53 @@ snapshots: events@3.3.0: {} + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + exit@0.1.2: {} + expect-type@1.3.0: {} + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + explain-error@1.0.4: {} + + express-rate-limit@7.5.1(express@4.22.1): + dependencies: + express: 4.22.1 + express@4.22.1: dependencies: accepts: 1.3.8 @@ -9871,10 +25672,23 @@ snapshots: exsolve@1.0.8: {} + ext@1.7.0: + dependencies: + type: 2.7.3 + extend@3.0.2: {} + extension-port-stream@3.0.0: + dependencies: + readable-stream: 4.7.0 + webextension-polyfill: 0.10.0 + extsprintf@1.3.0: {} + fast-content-type-parse@1.1.0: {} + + fast-decode-uri-component@1.0.1: {} + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -9899,10 +25713,61 @@ snapshots: fast-json-stable-stringify@2.1.0: {} + fast-json-stringify@5.16.1: + dependencies: + '@fastify/merge-json-schemas': 0.1.1 + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + fast-deep-equal: 3.1.3 + fast-uri: 2.4.0 + json-schema-ref-resolver: 1.0.1 + rfdc: 1.4.1 + fast-levenshtein@2.0.6: {} + fast-querystring@1.1.2: + dependencies: + fast-decode-uri-component: 1.0.1 + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fast-text-encoding@1.0.6: {} + + fast-uri@2.4.0: {} + fast-uri@3.1.0: {} + fastestsmallesttextencoderdecoder@1.0.22: {} + + fastify-plugin@4.5.1: {} + + fastify-type-provider-zod@1.2.0(fastify@4.29.1)(zod@3.25.76): + dependencies: + fastify: 4.29.1 + zod: 3.25.76 + zod-to-json-schema: 3.25.2(zod@3.25.76) + + fastify@4.29.1: + dependencies: + '@fastify/ajv-compiler': 3.6.0 + '@fastify/error': 3.4.1 + '@fastify/fast-json-stringify-compiler': 4.3.0 + abstract-logging: 2.0.1 + avvio: 8.4.0 + fast-content-type-parse: 1.1.0 + fast-json-stringify: 5.16.1 + find-my-way: 8.2.2 + light-my-request: 5.14.0 + pino: 9.14.0 + process-warning: 3.0.0 + proxy-addr: 2.0.7 + rfdc: 1.4.1 + secure-json-parse: 2.7.0 + semver: 7.7.4 + toad-cache: 3.7.0 + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -9915,15 +25780,27 @@ snapshots: dependencies: format: 0.2.2 + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 + fecha@4.2.3: {} + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + fflate@0.8.2: {} + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9932,6 +25809,8 @@ snapshots: dependencies: to-regex-range: 5.0.1 + filter-obj@1.1.0: {} + finalhandler@1.3.2: dependencies: debug: 2.6.9 @@ -9944,13 +25823,32 @@ snapshots: transitivePeerDependencies: - supports-color + find-my-way@8.2.2: + dependencies: + fast-deep-equal: 3.1.3 + fast-querystring: 1.1.2 + safe-regex2: 3.1.0 + + find-root@1.1.0: {} + find-up-simple@1.0.1: {} + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + flat-cache@3.2.0: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + rimraf: 3.0.2 + flat-cache@4.0.1: dependencies: flatted: 3.4.2 @@ -9958,6 +25856,8 @@ snapshots: flatted@3.4.2: {} + fn.name@1.1.0: {} + follow-redirects@1.15.11: {} for-each@0.3.5: @@ -9971,6 +25871,23 @@ snapshots: forever-agent@0.6.1: {} + form-data-encoder@1.7.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@2.5.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + safe-buffer: 5.2.1 + form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -10001,6 +25918,20 @@ snapshots: fresh@0.5.2: {} + fs-extra@4.0.3: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-minipass@1.2.7: + dependencies: + minipass: 2.9.0 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -10022,12 +25953,52 @@ snapshots: functions-have-names@1.2.3: {} + fuse.js@7.0.0: {} + fuse.js@7.1.0: {} + gauge@3.0.2: + dependencies: + aproba: 2.1.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gaxios@6.7.1: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + is-stream: 2.0.1 + node-fetch: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + gcp-metadata@6.1.1: + dependencies: + gaxios: 6.7.1 + google-logging-utils: 0.0.2 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + + get-east-asian-width@1.5.0: {} + + get-func-name@2.0.2: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -10043,11 +26014,21 @@ snapshots: get-nonce@1.0.1: {} + get-package-type@0.1.0: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + get-symbol-description@1.1.0: dependencies: call-bound: 1.0.4 @@ -10058,10 +26039,16 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.14.0: + dependencies: + resolve-pkg-maps: 1.0.0 + getpass@0.1.7: dependencies: assert-plus: 1.0.0 + giget@3.2.0: {} + github-slugger@2.0.0: {} glob-parent@5.1.2: @@ -10086,10 +26073,19 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + globals@14.0.0: {} globals@15.15.0: {} @@ -10101,14 +26097,127 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + globrex@0.1.2: {} + goober@2.1.18(csstype@3.2.3): + dependencies: + csstype: 3.2.3 + + google-auth-library@9.15.1: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1 + gcp-metadata: 6.1.1 + gtoken: 7.1.0 + jws: 4.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + google-gax@4.6.1: + dependencies: + '@grpc/grpc-js': 1.14.3 + '@grpc/proto-loader': 0.7.15 + '@types/long': 4.0.2 + abort-controller: 3.0.0 + duplexify: 4.1.3 + google-auth-library: 9.15.1 + node-fetch: 2.7.0 + object-hash: 3.0.0 + proto3-json-serializer: 2.0.2 + protobufjs: 7.5.5 + retry-request: 7.0.2 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + google-logging-utils@0.0.2: {} + gopd@1.2.0: {} + got@11.8.6: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + + got@12.1.0: + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 5.0.1 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 6.1.0 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + form-data-encoder: 1.7.1 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 2.0.1 + graceful-fs@4.2.11: {} graphemer@1.4.0: {} + gtoken@7.1.0: + dependencies: + gaxios: 6.7.1 + jws: 4.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + h3@1.15.11: + dependencies: + cookie-es: 1.2.3 + crossws: 0.3.5 + defu: 6.1.7 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.4 + radix3: 1.1.2 + ufo: 1.6.3 + uncrypto: 0.1.3 + + handlebars@4.7.9: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.14.0 + har-schema: 2.0.0 + + harmony-reflect@1.6.2: {} + has-bigints@1.1.0: {} has-flag@4.0.0: {} @@ -10127,6 +26236,25 @@ snapshots: dependencies: has-symbols: 1.1.0 + has-unicode@2.0.1: {} + + hash-base@3.0.5: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + hash-base@3.1.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -10159,18 +26287,40 @@ snapshots: dependencies: hermes-estree: 0.25.1 + hey-listen@1.0.8: {} + highlight.js@10.7.3: {} highlightjs-vue@1.0.0: {} - html-encoding-sniffer@6.0.0: + hmac-drbg@1.0.1: dependencies: - '@exodus/bytes': 1.15.0 + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + hono@4.12.14: {} + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + + html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): + dependencies: + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) transitivePeerDependencies: - '@noble/hashes' html-entities@2.6.0: {} + html-escaper@2.0.2: {} + + http-cache-semantics@4.2.0: {} + http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -10179,6 +26329,16 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 + http-https@1.0.0: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -10186,12 +26346,37 @@ snapshots: transitivePeerDependencies: - supports-color + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + http-signature@1.4.0: dependencies: assert-plus: 1.0.0 jsprim: 2.0.2 sshpk: 1.18.0 + http2-wrapper@1.0.3: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-browserify@1.0.0: {} + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -10201,20 +26386,42 @@ snapshots: https@1.0.0: {} + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 + idb-keyval@6.2.1: {} + + idb-keyval@6.2.2: {} + + identity-obj-proxy@3.0.0: + dependencies: + harmony-reflect: 1.6.2 + + idna-uts46-hx@2.3.1: + dependencies: + punycode: 2.1.0 + ieee754@1.2.1: {} ignore@5.3.2: {} ignore@7.0.5: {} + immediate@3.0.6: {} + immer@10.2.0: {} immer@11.1.4: {} @@ -10224,8 +26431,15 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + imurmurhash@0.1.4: {} + indent-string@4.0.0: {} + indent-string@5.0.0: {} inflight@1.0.6: @@ -10233,8 +26447,15 @@ snapshots: once: 1.4.0 wrappy: 1.0.2 + inherits@2.0.3: {} + inherits@2.0.4: {} + input-otp@1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -10261,6 +26482,8 @@ snapshots: ipaddr.js@1.9.1: {} + iron-webcrypto@1.2.1: {} + is-alphabetical@1.0.4: {} is-alphabetical@2.0.1: {} @@ -10275,12 +26498,19 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -10302,6 +26532,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-buffer@1.1.6: {} + is-builtin-module@5.0.0: dependencies: builtin-modules: 5.0.0 @@ -10331,6 +26563,8 @@ snapshots: is-decimal@2.0.1: {} + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -10339,6 +26573,10 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-function@1.0.2: {} + + is-generator-fn@2.1.0: {} + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 @@ -10351,6 +26589,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hex-prefixed@1.0.0: {} + is-hexadecimal@1.0.4: {} is-hexadecimal@2.0.1: {} @@ -10365,8 +26605,21 @@ snapshots: transitivePeerDependencies: - supports-color + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + is-map@2.0.3: {} + is-nan@1.3.2: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + is-negative-zero@2.0.3: {} is-number-object@1.1.1: @@ -10376,6 +26629,8 @@ snapshots: is-number@7.0.0: {} + is-path-inside@3.0.3: {} + is-potential-custom-element-name@1.0.1: {} is-regex@1.2.1: @@ -10385,6 +26640,8 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + is-retry-allowed@2.2.0: {} + is-set@2.0.3: {} is-shared-array-buffer@1.0.4: @@ -10393,6 +26650,8 @@ snapshots: is-stream@2.0.1: {} + is-stream@3.0.0: {} + is-string@1.1.1: dependencies: call-bound: 1.0.4 @@ -10410,6 +26669,10 @@ snapshots: is-typedarray@1.0.0: {} + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -10421,14 +26684,84 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + isarray@1.0.0: {} isarray@2.0.5: {} isexe@2.0.0: {} + isomorphic-timers-promises@1.0.1: {} + + isomorphic-unfetch@3.1.0: + dependencies: + node-fetch: 2.7.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + + isows@1.0.4(ws@8.13.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.13.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + + isows@1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + + isows@1.0.7(ws@8.18.2(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + + isows@1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + isstream@0.1.2: {} + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + '@istanbuljs/schema': 0.1.6 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.3 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -10444,10 +26777,429 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0(babel-plugin-macros@3.1.0): + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.7.2(babel-plugin-macros@3.1.0) + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-cli@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.19.33 + ts-node: 10.9.2(@types/node@20.19.33)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 25.5.0 + ts-node: 10.9.2(@types/node@20.19.33)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)): + dependencies: + '@babel/core': 7.29.0 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.0) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 25.5.0 + ts-node: 10.9.2(@types/node@25.5.0)(typescript@5.9.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 25.5.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.29.0 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.11 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.3 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/types': 7.29.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.4 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 25.5.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 25.5.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jiti@1.21.7: {} + jiti@2.6.1: {} + + jose@6.2.2: {} + + js-sha3@0.5.7: {} + + js-sha3@0.8.0: {} + + js-sha3@0.9.3: {} + js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -10460,15 +27212,43 @@ snapshots: jsdoc-type-pratt-parser@7.1.1: {} - jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + jsdom@23.2.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@asamuzakjp/dom-selector': 2.0.2 + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + form-data: 4.0.5 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 7.3.0 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@acemir/cssom': 0.9.31 '@asamuzakjp/dom-selector': 6.8.1 - '@exodus/bytes': 1.15.0 + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) cssstyle: 5.3.7 data-urls: 6.0.1 decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0 + html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 @@ -10490,8 +27270,25 @@ snapshots: jsesc@3.1.0: {} + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.1 + json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + + json-rpc-engine@6.1.0: + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + eth-rpc-errors: 4.0.3 + + json-rpc-random-id@1.0.1: {} + + json-schema-ref-resolver@1.0.1: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -10510,17 +27307,41 @@ snapshots: jsonc-eslint-parser@2.4.2: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.7.4 jsonc-eslint-parser@3.1.0: dependencies: - acorn: 8.15.0 + acorn: 8.16.0 eslint-visitor-keys: 5.0.1 semver: 7.7.4 + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.3: + dependencies: + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.7.4 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + jsprim@2.0.2: dependencies: assert-plus: 1.0.0 @@ -10535,10 +27356,40 @@ snapshots: object.assign: 4.1.7 object.values: 1.2.1 + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + + key-encoder@2.0.3: + dependencies: + '@types/elliptic': 6.4.18 + asn1.js: 5.4.1 + bn.js: 4.12.3 + elliptic: 6.6.1 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + keyvaluestorage-interface@1.0.0: {} + + kleur@3.0.3: {} + + kuler@2.0.0: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -10549,11 +27400,23 @@ snapshots: dependencies: readable-stream: 2.3.8 + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lie@3.1.1: + dependencies: + immediate: 3.0.6 + + light-my-request@5.14.0: + dependencies: + cookie: 0.7.2 + process-warning: 3.0.0 + set-cookie-parser: 2.7.2 + lightningcss-android-arm64@1.32.0: optional: true @@ -10607,32 +27470,121 @@ snapshots: lines-and-columns@1.2.4: {} + lit-element@3.3.3: + dependencies: + '@lit-labs/ssr-dom-shim': 1.5.1 + '@lit/reactive-element': 1.6.3 + lit-html: 2.8.0 + + lit-element@4.2.2: + dependencies: + '@lit-labs/ssr-dom-shim': 1.5.1 + '@lit/reactive-element': 2.1.2 + lit-html: 3.3.2 + + lit-html@2.8.0: + dependencies: + '@types/trusted-types': 2.0.7 + + lit-html@3.3.2: + dependencies: + '@types/trusted-types': 2.0.7 + + lit@2.8.0: + dependencies: + '@lit/reactive-element': 1.6.3 + lit-element: 3.3.3 + lit-html: 2.8.0 + + lit@3.3.0: + dependencies: + '@lit/reactive-element': 2.1.2 + lit-element: 4.2.2 + lit-html: 3.3.2 + + local-pkg@0.5.1: + dependencies: + mlly: 1.8.2 + pkg-types: 1.3.1 + local-pkg@1.1.2: dependencies: mlly: 1.8.2 pkg-types: 2.3.0 quansync: 0.2.11 + localforage@1.10.0: + dependencies: + lie: 3.1.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 + lodash.camelcase@4.3.0: {} + lodash.defaults@4.2.0: {} + lodash.includes@4.3.0: {} + lodash.isarguments@3.1.0: {} + lodash.isboolean@3.0.3: {} + + lodash.isequal@4.5.0: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} + lodash.once@4.1.1: {} + lodash@4.17.23: {} + log-symbols@6.0.0: + dependencies: + chalk: 5.6.2 + is-unicode-supported: 1.3.0 + + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + + long@5.3.2: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + loupe@3.2.1: {} + lowercase-keys@2.0.0: {} + + lowercase-keys@3.0.0: {} + lowlight@1.20.0: dependencies: fault: 1.0.4 @@ -10650,16 +27602,51 @@ snapshots: dependencies: react: 19.2.3 + lz-string@1.5.0: {} + + magic-sdk@13.6.2: + dependencies: + '@magic-sdk/commons': 9.6.2(@magic-sdk/provider@13.6.2(localforage@1.10.0))(@magic-sdk/types@11.6.2) + '@magic-sdk/provider': 13.6.2(localforage@1.10.0) + '@magic-sdk/types': 11.6.2 + localforage: 1.10.0 + transitivePeerDependencies: + - supports-color + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.4 + make-error@1.3.6: {} + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + markdown-table@3.0.4: {} math-intrinsics@1.1.0: {} + md5.js@1.3.5: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -10773,16 +27760,30 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.0.30: {} + mdn-data@2.27.1: {} media-typer@0.3.0: {} merge-descriptors@1.0.3: {} + merge-stream@2.0.0: {} + merge2@1.4.1: {} + merkletreejs@0.3.11: + dependencies: + bignumber.js: 9.3.1 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.4 + methods@1.1.2: {} + micro-ftch@0.3.1: {} + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -10986,6 +27987,11 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.3 + brorand: 1.1.0 + mime-db@1.52.0: {} mime-types@2.1.35: @@ -10994,8 +28000,30 @@ snapshots: mime@1.6.0: {} + mime@3.0.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + min-indent@1.0.1: {} + mini-svg-data-uri@1.4.4: {} + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + minimatch@10.2.4: dependencies: brace-expansion: 5.0.5 @@ -11012,14 +28040,50 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.2 + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 minimist@1.2.8: {} + minipass@2.9.0: + dependencies: + safe-buffer: 5.2.1 + yallist: 3.1.1 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + minipass@7.1.3: {} + minizlib@1.3.3: + dependencies: + minipass: 2.9.0 + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mipd@0.0.7(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + + mkdirp-promise@5.0.1: + dependencies: + mkdirp: 1.0.4 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + mkdirp@1.0.4: {} mlly@1.8.2: @@ -11029,12 +28093,23 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.3 + mock-fs@4.14.0: {} + motion-dom@12.38.0: dependencies: motion-utils: 12.36.0 motion-utils@12.36.0: {} + motion@10.16.2: + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/dom': 10.18.0 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + '@motionone/vue': 10.16.4 + motion@12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: framer-motion: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -11044,10 +28119,56 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + mrmime@2.0.1: {} + ms@2.0.0: {} + ms@2.1.2: {} + ms@2.1.3: {} + multibase@0.6.1: + dependencies: + base-x: 3.0.11 + buffer: 5.7.1 + + multibase@0.7.0: + dependencies: + base-x: 3.0.11 + buffer: 5.7.1 + + multibase@4.0.6: + dependencies: + '@multiformats/base-x': 4.0.1 + + multicodec@0.5.7: + dependencies: + varint: 5.0.2 + + multicodec@1.0.4: + dependencies: + buffer: 5.7.1 + varint: 5.0.2 + + multicodec@3.2.1: + dependencies: + uint8arrays: 3.1.1 + varint: 6.0.0 + + multiformats@9.9.0: {} + + multihashes@0.4.21: + dependencies: + buffer: 5.7.1 + multibase: 0.7.0 + varint: 5.0.2 + + multihashes@4.0.3: + dependencies: + multibase: 4.0.6 + uint8arrays: 3.1.1 + varint: 5.0.2 + mustache@4.2.0: {} mz@2.7.0: @@ -11056,6 +28177,8 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nano-json-stream-parser@0.1.2: {} + nanoid@3.3.11: {} napi-postinstall@0.3.4: {} @@ -11066,11 +28189,17 @@ snapshots: negotiator@0.6.3: {} + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + next-tick@1.1.0: {} + next@15.5.8(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@next/env': 15.5.8 @@ -11094,6 +28223,14 @@ snapshots: - '@babel/core' - babel-plugin-macros + node-addon-api@2.0.2: {} + + node-addon-api@5.1.0: {} + + node-cron@3.0.3: + dependencies: + uuid: 8.3.2 + node-domexception@1.0.0: {} node-exports-info@1.6.0: @@ -11103,17 +28240,82 @@ snapshots: object.entries: 1.1.9 semver: 6.3.1 + node-fetch-native@1.6.7: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-fetch@3.3.2: dependencies: data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-gyp-build@4.8.4: - optional: true + node-gyp-build@4.8.4: {} + + node-int64@0.4.0: {} + + node-libs-browser@2.2.1: + dependencies: + assert: 1.5.1 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.1 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.4 + util: 0.11.1 + vm-browserify: 1.1.2 + + node-mock-http@1.0.4: {} node-releases@2.0.36: {} + node-stdlib-browser@1.3.1: + dependencies: + assert: 2.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + create-require: 1.1.1 + crypto-browserify: 3.12.1 + domain-browser: 4.22.0 + events: 3.3.0 + https-browserify: 1.0.0 + isomorphic-timers-promises: 1.0.1 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + pkg-dir: 5.0.0 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 3.6.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.4 + util: 0.12.5 + vm-browserify: 1.1.2 + node-vault@0.10.9: dependencies: debug: 4.4.3 @@ -11123,21 +28325,55 @@ snapshots: transitivePeerDependencies: - supports-color + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + normalize-path@3.0.0: {} + normalize-url@6.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - nuqs@2.8.9(next@15.5.8(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3): + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + nuqs@2.8.9(next@15.5.8(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-router-dom@6.30.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-router@6.30.3(react@19.2.3))(react@19.2.3): dependencies: '@standard-schema/spec': 1.0.0 react: 19.2.3 optionalDependencies: next: 15.5.8(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-router: 6.30.3(react@19.2.3) + react-router-dom: 6.30.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) oauth-sign@0.9.0: {} + obj-multiplex@1.0.0: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + readable-stream: 2.3.8 + object-assign@4.1.1: {} object-deep-merge@2.0.0: {} @@ -11146,6 +28382,11 @@ snapshots: object-inspect@1.13.4: {} + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + object-keys@1.1.1: {} object.assign@4.1.7: @@ -11184,19 +28425,73 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + oboe@2.1.5: + dependencies: + http-https: 1.0.0 + obug@2.1.1: optional: true + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.3 + ohash@2.0.11: {} + on-exit-leak-free@0.2.0: {} + + on-exit-leak-free@2.1.2: {} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 + on-headers@1.1.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@10.1.1: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.1 + + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + openapi-fetch@0.13.8: + dependencies: + openapi-typescript-helpers: 0.0.15 + + openapi-typescript-helpers@0.0.15: {} + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -11206,12 +28501,245 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@8.2.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + os-browserify@0.3.0: {} + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 object-keys: 1.1.1 safe-push-apply: 1.0.0 + ox@0.14.20(typescript@5.9.3)(zod@3.22.4): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@3.22.4) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.14.20(typescript@5.9.3)(zod@3.25.75): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@3.25.75) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.14.20(typescript@5.9.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.14.20(typescript@5.9.3)(zod@4.3.6): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.6.7(typescript@5.9.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.6.7(typescript@5.9.3)(zod@4.3.6): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 + abitype: 1.0.8(typescript@5.9.3)(zod@4.3.6) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.6.9(typescript@5.9.3)(zod@3.25.75): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.75) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.6.9(typescript@5.9.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.6.9(typescript@5.9.3)(zod@4.3.6): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.9.3)(zod@4.3.6) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.7.0(typescript@5.9.3)(zod@3.25.75): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.75) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.7.1(typescript@5.9.3)(zod@3.25.75): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.2 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.75) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.9.17(typescript@5.9.3)(zod@4.3.6): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.4(typescript@5.9.3)(zod@4.3.6) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.9.3(typescript@5.9.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.9.3(typescript@5.9.3)(zod@4.3.6): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.4(typescript@5.9.3)(zod@4.3.6) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + ox@0.9.6(typescript@5.9.3)(zod@3.25.75): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.1.0(typescript@5.9.3)(zod@3.25.75) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + oxfmt@0.35.0: dependencies: tinypool: 2.1.0 @@ -11236,22 +28764,50 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.35.0 '@oxfmt/binding-win32-x64-msvc': 0.35.0 + p-cancelable@2.1.1: {} + + p-cancelable@3.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-limit@5.0.0: + dependencies: + yocto-queue: 1.2.2 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 + p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} package-manager-detector@1.6.0: {} + pako@1.0.11: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-asn1@5.1.9: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.5 + safe-buffer: 5.2.1 + parse-entities@2.0.0: dependencies: character-entities: 1.2.4 @@ -11273,24 +28829,43 @@ snapshots: parse-gitignore@2.0.0: {} + parse-headers@2.0.6: {} + parse-imports-exports@0.2.4: dependencies: parse-statements: 1.0.11 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parse-statements@1.0.11: {} + parse5@7.3.0: + dependencies: + entities: 6.0.1 + parse5@8.0.0: dependencies: entities: 6.0.1 parseurl@1.3.3: {} + path-browserify@0.0.1: {} + + path-browserify@1.0.1: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -11300,12 +28875,64 @@ snapshots: path-to-regexp@0.1.12: {} + path-type@4.0.0: {} + pathe@1.1.2: {} pathe@2.0.3: {} + pathval@1.1.1: {} + pathval@2.0.1: {} + pbkdf2@3.1.5: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + + perfect-debounce@2.1.0: {} + + performance-now@2.1.0: {} + + pg-cloudflare@1.3.0: + optional: true + + pg-connection-string@2.12.0: {} + + pg-int8@1.0.1: {} + + pg-pool@3.13.0(pg@8.20.0): + dependencies: + pg: 8.20.0 + + pg-protocol@1.13.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.20.0: + dependencies: + pg-connection-string: 2.12.0 + pg-pool: 3.13.0(pg@8.20.0) + pg-protocol: 1.13.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.3.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -11314,8 +28941,75 @@ snapshots: pify@2.3.0: {} + pify@3.0.0: {} + + pify@5.0.0: {} + + pino-abstract-transport@0.5.0: + dependencies: + duplexify: 4.1.3 + split2: 4.2.0 + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-std-serializers@4.0.0: {} + + pino-std-serializers@7.1.0: {} + + pino@10.0.0: + dependencies: + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + slow-redact: 0.3.2 + sonic-boom: 4.2.1 + thread-stream: 3.1.0 + + pino@7.11.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + + pino@9.14.0: + dependencies: + '@pinojs/redact': 0.4.0 + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.1.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 4.2.1 + thread-stream: 3.1.0 + pirates@4.0.7: {} + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-dir@5.0.0: + dependencies: + find-up: 5.0.0 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -11338,10 +29032,54 @@ snapshots: pluralize@8.0.0: {} + pngjs@5.0.0: {} + pnpm-workspace-yaml@1.6.0: dependencies: yaml: 2.8.3 + pony-cause@2.1.11: {} + + porto@0.2.35(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)): + dependencies: + '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + hono: 4.12.14 + idb-keyval: 6.2.2 + mipd: 0.0.7(typescript@5.9.3) + ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + zod: 4.3.6 + zustand: 5.0.12(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/react-query': 5.81.5(react@18.3.1) + react: 18.3.1 + typescript: 5.9.3 + wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + transitivePeerDependencies: + - '@types/react' + - immer + - use-sync-external-store + + porto@0.2.35(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)): + dependencies: + '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + hono: 4.12.14 + idb-keyval: 6.2.2 + mipd: 0.0.7(typescript@5.9.3) + ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + zod: 4.3.6 + zustand: 5.0.12(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/react-query': 5.95.2(react@18.3.1) + react: 18.3.1 + typescript: 5.9.3 + wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + transitivePeerDependencies: + - '@types/react' + - immer + - use-sync-external-store + possible-typed-array-names@1.1.0: {} postcss-import@15.1.0(postcss@8.5.8): @@ -11399,6 +29137,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + postman-request@2.88.1-postman.48: dependencies: '@postman/form-data': 3.1.1 @@ -11424,6 +29172,12 @@ snapshots: transitivePeerDependencies: - supports-color + powershell-utils@0.1.0: {} + + preact@10.24.2: {} + + preact@10.29.1: {} + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.1: @@ -11432,14 +29186,37 @@ snapshots: prettier@3.8.1: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + prismjs@1.27.0: {} prismjs@1.30.0: {} process-nextick-args@2.0.1: {} + process-warning@1.0.0: {} + + process-warning@3.0.0: {} + + process-warning@5.0.0: {} + process@0.11.10: {} + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -11452,29 +29229,127 @@ snapshots: property-information@7.1.0: {} + proto3-json-serializer@2.0.2: + dependencies: + protobufjs: 7.5.5 + + protobufjs@7.5.5: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 25.5.0 + long: 5.3.2 + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-compare@2.5.1: {} + + proxy-compare@2.6.0: {} + + proxy-compare@3.0.1: {} + proxy-from-env@1.1.0: {} psl@1.15.0: dependencies: punycode: 2.3.1 + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.3 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.9 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode@1.4.1: {} + + punycode@2.1.0: {} + punycode@2.3.1: {} + pure-rand@6.1.0: {} + + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + optional: true + + pvutils@1.1.5: + optional: true + + qrcode@1.5.3: + dependencies: + dijkstrajs: 1.0.3 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + qs@6.14.2: dependencies: side-channel: 1.1.0 + qs@6.5.5: {} + quansync@0.2.11: {} + query-string@5.1.1: + dependencies: + decode-uri-component: 0.2.2 + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + querystring-es3@0.2.1: {} + querystringify@2.2.0: {} queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + + quick-lru@5.1.1: {} + + radix3@1.1.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + range-parser@1.2.1: {} raw-body@2.5.3: @@ -11491,6 +29366,11 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 + rc9@3.0.1: + dependencies: + defu: 6.1.7 + destr: 2.0.5 + react-chartjs-2@5.3.1(chart.js@4.5.1)(react@19.2.3): dependencies: chart.js: 4.5.1 @@ -11522,17 +29402,34 @@ snapshots: date-fns-jalali: 4.1.0-0 react: 19.2.3 + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + react-dom@19.2.3(react@19.2.3): dependencies: react: 19.2.3 scheduler: 0.27.0 + react-hot-toast@2.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + csstype: 3.2.3 + goober: 2.1.18(csstype@3.2.3) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-icons@5.6.0(react@19.2.3): dependencies: react: 19.2.3 react-is@16.13.1: {} + react-is@17.0.2: {} + + react-is@18.3.1: {} + react-redux@9.2.0(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1): dependencies: '@types/use-sync-external-store': 0.0.6 @@ -11542,8 +29439,18 @@ snapshots: '@types/react': types-react@19.0.0-rc.1 redux: 5.0.1 + react-refresh@0.17.0: {} + react-refresh@0.18.0: {} + react-remove-scroll-bar@2.3.8(@types/react@18.3.28)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.28)(react@18.3.1) + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.28 + react-remove-scroll-bar@2.3.8(react@19.2.3)(types-react@19.0.0-rc.1): dependencies: react: 19.2.3 @@ -11552,6 +29459,28 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + react-remove-scroll@2.5.5(@types/react@18.3.28)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.28)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.28)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.28)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.28)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + + react-remove-scroll@2.7.2(@types/react@18.3.28)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.28)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.28)(react@18.3.1) + tslib: 2.7.0 + use-callback-ref: 1.3.3(@types/react@18.3.28)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.28)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + react-remove-scroll@2.7.2(react@19.2.3)(types-react@19.0.0-rc.1): dependencies: react: 19.2.3 @@ -11563,6 +29492,40 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + react-router-dom@6.30.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.30.3(react@18.3.1) + + react-router-dom@6.30.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@remix-run/router': 1.23.2 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-router: 6.30.3(react@19.2.3) + optional: true + + react-router@6.30.3(react@18.3.1): + dependencies: + '@remix-run/router': 1.23.2 + react: 18.3.1 + + react-router@6.30.3(react@19.2.3): + dependencies: + '@remix-run/router': 1.23.2 + react: 19.2.3 + optional: true + + react-style-singleton@2.2.3(@types/react@18.3.28)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.28 + react-style-singleton@2.2.3(react@19.2.3)(types-react@19.0.0-rc.1): dependencies: get-nonce: 1.0.1 @@ -11597,6 +29560,10 @@ snapshots: optionalDependencies: react-dom: 19.2.3(react@19.2.3) + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + react@19.2.3: {} read-cache@1.0.0: @@ -11613,6 +29580,12 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + readable-stream@4.7.0: dependencies: abort-controller: 3.0.0 @@ -11629,7 +29602,13 @@ snapshots: dependencies: picomatch: 2.3.1 - recharts@3.6.0(react-dom@19.2.3(react@19.2.3))(react-is@16.13.1)(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1): + readdirp@5.0.0: {} + + real-require@0.1.0: {} + + real-require@0.2.0: {} + + recharts@3.6.0(react-dom@19.2.3(react@19.2.3))(react-is@18.3.1)(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1): dependencies: '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1))(react@19.2.3) clsx: 2.1.1 @@ -11639,7 +29618,7 @@ snapshots: immer: 10.2.0 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - react-is: 16.13.1 + react-is: 18.3.1 react-redux: 9.2.0(react@19.2.3)(redux@5.0.1)(types-react@19.0.0-rc.1) reselect: 5.1.1 tiny-invariant: 1.3.3 @@ -11649,6 +29628,11 @@ snapshots: - '@types/react' - redux + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + redis-errors@1.2.0: {} redis-parser@3.0.0: @@ -11709,18 +29693,55 @@ snapshots: dependencies: jsesc: 3.1.0 + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.5 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + require-from-string@2.0.2: {} + require-main-filename@2.0.0: {} + requires-port@1.0.0: {} reselect@5.1.1: {} reserved-identifiers@1.2.0: {} + resolve-alpn@1.2.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve.exports@2.0.3: {} + resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -11736,12 +29757,47 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: + dependencies: + lowercase-keys: 2.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + ret@0.4.3: {} + + retry-request@7.0.2: + dependencies: + '@types/request': 2.48.13 + extend: 3.0.2 + teeny-request: 9.0.0 + transitivePeerDependencies: + - encoding + - supports-color + reusify@1.1.0: {} + rfdc@1.4.1: {} + rimraf@2.7.1: dependencies: glob: 7.2.3 + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + ripemd160@2.0.3: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + + rlp@2.2.7: + dependencies: + bn.js: 5.2.3 + rolldown@1.0.0-rc.12: dependencies: '@oxc-project/types': 0.122.0 @@ -11794,6 +29850,12 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.0 fsevents: 2.3.3 + rrweb-cssom@0.6.0: {} + + rrweb-cssom@0.8.0: {} + + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -11810,6 +29872,8 @@ snapshots: safe-buffer@5.2.1: {} + safe-json-utils@1.1.1: {} + safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -11821,22 +29885,44 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 + safe-regex2@3.1.0: + dependencies: + ret: 0.4.3 + + safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: {} saxes@6.0.0: dependencies: xmlchars: 2.2.0 + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + scheduler@0.27.0: {} + scrypt-js@3.0.1: {} + scslre@0.3.0: dependencies: '@eslint-community/regexpp': 4.12.2 refa: 0.12.1 regexp-ast-analysis: 0.7.1 + secp256k1@4.0.4: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + + secure-json-parse@2.7.0: {} + semver@6.3.1: {} + semver@7.7.2: {} + semver@7.7.4: {} send@0.19.2: @@ -11866,6 +29952,20 @@ snapshots: transitivePeerDependencies: - supports-color + servify@0.1.12: + dependencies: + body-parser: 1.20.4 + cors: 2.8.6 + express: 4.22.1 + request: 2.88.2 + xhr: 2.6.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-cookie-parser@2.7.2: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -11888,8 +29988,16 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + setimmediate@1.0.5: {} + setprototypeof@1.2.0: {} + sha.js@2.4.12: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + shallowequal@1.1.0: {} sharp@0.34.5: @@ -11959,12 +30067,50 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} + simple-concat@1.0.1: {} + + simple-get@2.8.2: + dependencies: + decompress-response: 3.3.0 + once: 1.4.0 + simple-concat: 1.0.1 + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + sisteransi@1.0.5: {} + slash@3.0.0: {} + + slow-redact@0.3.2: {} + smart-buffer@4.2.0: {} + socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.6: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 @@ -11978,6 +30124,16 @@ snapshots: ip-address: 10.1.0 smart-buffer: 4.2.0 + solady@0.0.180: {} + + sonic-boom@2.8.0: + dependencies: + atomic-sleep: 1.0.0 + + sonic-boom@4.2.1: + dependencies: + atomic-sleep: 1.0.0 + sonner@2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: react: 19.2.3 @@ -11985,11 +30141,18 @@ snapshots: source-map-js@1.2.1: {} + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + source-map@0.5.7: {} + source-map@0.6.1: {} space-separated-tokens@1.1.5: {} @@ -12005,6 +30168,16 @@ snapshots: spdx-license-ids@3.0.23: {} + split-on-first@1.1.0: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -12019,6 +30192,12 @@ snapshots: stable-hash@0.0.5: {} + stack-trace@0.0.10: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + stackback@0.0.2: {} standard-as-callback@2.1.0: {} @@ -12030,15 +30209,48 @@ snapshots: std-env@4.0.0: optional: true + stdin-discarder@0.2.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 internal-slot: 1.1.0 + stream-browserify@2.0.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + stream-events@1.0.5: + dependencies: + stubs: 3.0.0 + + stream-http@2.8.3: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + + stream-http@3.2.0: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + stream-length@1.0.2: dependencies: bluebird: 2.11.0 + stream-shift@1.0.3: {} + streamx@2.25.0: dependencies: events-universal: 1.0.1 @@ -12048,6 +30260,15 @@ snapshots: - bare-abort-controller - react-native-b4a + strict-uri-encode@1.1.0: {} + + strict-uri-encode@2.0.0: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + string-ts@2.3.1: {} string-width@4.2.3: @@ -12062,6 +30283,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + string.prototype.includes@2.0.1: dependencies: call-bind: 1.0.8 @@ -12130,12 +30357,32 @@ snapshots: strip-bom@3.0.0: {} + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + strip-indent@4.1.1: {} strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + stubs@3.0.0: {} + styled-components@6.3.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@emotion/is-prop-valid': 1.4.0 @@ -12158,6 +30405,8 @@ snapshots: optionalDependencies: '@babel/core': 7.29.0 + stylis@4.2.0: {} + stylis@4.3.6: {} sucrase@3.35.1: @@ -12170,12 +30419,36 @@ snapshots: tinyglobby: 0.2.15 ts-interface-checker: 0.1.13 + superstruct@1.0.4: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + swarm-js@0.1.42(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + bluebird: 3.7.2 + buffer: 5.7.1 + eth-lib: 0.1.29(bufferutil@4.1.0)(utf-8-validate@5.0.10) + fs-extra: 4.0.3 + got: 11.8.6 + mime-types: 2.1.35 + mkdirp-promise: 5.0.1 + mock-fs: 4.14.0 + setimmediate: 1.0.5 + tar: 4.4.19 + xhr-request: 1.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + symbol-tree@3.2.4: {} synckit@0.11.12: @@ -12235,6 +30508,36 @@ snapshots: - bare-buffer - react-native-b4a + tar@4.4.19: + dependencies: + chownr: 1.1.4 + fs-minipass: 1.2.7 + minipass: 2.9.0 + minizlib: 1.3.3 + mkdirp: 0.5.6 + safe-buffer: 5.2.1 + yallist: 3.1.1 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + teeny-request@9.0.0: + dependencies: + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + node-fetch: 2.7.0 + stream-events: 1.0.5 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + teex@1.0.1: dependencies: streamx: 2.25.0 @@ -12242,12 +30545,22 @@ snapshots: - bare-abort-controller - react-native-b4a + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.6 + glob: 7.2.3 + minimatch: 3.1.5 + text-decoder@1.2.7: dependencies: b4a: 1.8.0 transitivePeerDependencies: - react-native-b4a + text-hex@1.0.0: {} + + text-table@0.2.0: {} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -12256,6 +30569,152 @@ snapshots: dependencies: any-promise: 1.3.0 + thirdweb@5.119.4(@hey-api/openapi-ts@0.96.1(typescript@5.9.3))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.95.2)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + '@base-org/account': 2.5.0(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(zod@3.25.75) + '@coinbase/wallet-sdk': 4.3.0 + '@emotion/react': 11.14.0(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 + '@passwordless-id/webauthn': 2.3.5 + '@radix-ui/react-dialog': 1.1.14(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-icons': 1.3.2(react@18.3.1) + '@radix-ui/react-tooltip': 1.2.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': 5.81.5(react@18.3.1) + '@thirdweb-dev/engine': 3.4.0(@hey-api/openapi-ts@0.96.1(typescript@5.9.3))(typescript@5.9.3) + '@thirdweb-dev/insight': 1.1.1(typescript@5.9.3) + '@walletconnect/sign-client': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + '@walletconnect/universal-provider': 2.21.8(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + abitype: 1.0.8(typescript@5.9.3)(zod@3.25.75) + cross-spawn: 7.0.6 + fuse.js: 7.1.0 + input-otp: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + mipd: 0.0.7(typescript@5.9.3) + open: 10.1.1 + ora: 8.2.0 + ox: 0.7.0(typescript@5.9.3)(zod@3.25.75) + prompts: 2.4.2 + qrcode: 1.5.3 + toml: 3.0.0 + uqr: 0.1.2 + viem: 2.39.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75) + x402: 0.7.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + zod: 3.25.75 + optionalDependencies: + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + react: 18.3.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@hey-api/openapi-ts' + - '@netlify/blobs' + - '@planetscale/database' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react-dom + - supports-color + - uploadthing + - use-sync-external-store + - utf-8-validate + - ws + + thirdweb@5.29.6(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(bufferutil@4.1.0)(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(ioredis@5.9.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + dependencies: + '@coinbase/wallet-sdk': 4.0.3 + '@emotion/react': 11.11.4(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@google/model-viewer': 2.1.1 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@passwordless-id/webauthn': 1.6.2 + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-icons': 1.3.0(react@18.3.1) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-query': 5.29.2(react@18.3.1) + '@walletconnect/ethereum-provider': 2.12.2(@types/react@18.3.28)(bufferutil@4.1.0)(ioredis@5.9.3)(react@18.3.1)(utf-8-validate@5.0.10) + '@walletconnect/sign-client': 2.23.9(bufferutil@4.1.0)(ioredis@5.9.3)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + abitype: 1.0.0(typescript@5.9.3)(zod@3.25.76) + fast-text-encoding: 1.0.6 + fuse.js: 7.0.0 + input-otp: 1.4.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + mipd: 0.0.7(typescript@5.9.3) + node-libs-browser: 2.2.1 + uqr: 0.1.2 + viem: 2.13.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + optionalDependencies: + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + react: 18.3.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/react' + - '@types/react-dom' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react-dom + - supports-color + - uploadthing + - utf-8-validate + - zod + + thread-stream@0.15.2: + dependencies: + real-require: 0.1.0 + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + three@0.146.0: {} + + timed-out@4.0.1: {} + + timers-browserify@2.0.12: + dependencies: + setimmediate: 1.0.5 + tiny-invariant@1.3.3: {} tinybench@2.9.0: {} @@ -12269,6 +30728,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinypool@0.8.4: {} + tinypool@1.1.1: {} tinypool@2.1.0: {} @@ -12278,6 +30739,8 @@ snapshots: tinyrainbow@3.1.0: optional: true + tinyspy@2.2.1: {} + tinyspy@3.0.2: {} tldts-core@7.0.27: {} @@ -12286,6 +30749,16 @@ snapshots: dependencies: tldts-core: 7.0.27 + tmpl@1.0.5: {} + + to-arraybuffer@1.0.1: {} + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -12295,22 +30768,56 @@ snapshots: '@sindresorhus/base62': 1.0.0 reserved-identifiers: 1.2.0 + toad-cache@3.7.0: {} + + toggle-selection@1.0.6: {} + toidentifier@1.0.1: {} toml-eslint-parser@0.10.1: dependencies: eslint-visitor-keys: 3.4.3 + toml@3.0.0: {} + + totalist@3.0.1: {} + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + tough-cookie@6.0.1: dependencies: tldts: 7.0.27 + tr46@0.0.3: {} + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + tr46@6.0.0: dependencies: punycode: 2.3.1 tree-kill@1.2.2: {} + treeify@1.1.0: {} + + triple-beam@1.4.1: {} + + ts-api-utils@1.4.3(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + ts-api-utils@2.5.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -12322,6 +30829,46 @@ snapshots: ts-interface-checker@0.1.13: {} + ts-jest@29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)))(typescript@5.9.3): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + handlebars: 4.7.9 + jest: 29.7.0(@types/node@20.19.33)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.19.33)(typescript@5.9.3)) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.4 + type-fest: 4.41.0 + typescript: 5.9.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.29.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.0) + jest-util: 29.7.0 + + ts-jest@29.4.9(@babel/core@7.29.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)))(typescript@5.9.3): + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + handlebars: 4.7.9 + jest: 29.7.0(@types/node@25.5.0)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3)) + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.4 + type-fest: 4.41.0 + typescript: 5.9.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.29.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.29.0) + jest-util: 29.7.0 + ts-node-dev@2.0.0(@types/node@20.19.33)(typescript@5.9.3): dependencies: chokidar: 3.6.0 @@ -12348,7 +30895,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.19.33 - acorn: 8.15.0 + acorn: 8.16.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -12358,6 +30905,25 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.12 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 25.5.0 + acorn: 8.16.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.4 + make-error: 1.3.6 + typescript: 5.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-pattern@5.9.0: {} tsconfig-paths@3.15.0: @@ -12374,23 +30940,49 @@ snapshots: strip-bom: 3.0.0 strip-json-comments: 2.0.1 + tslib@1.14.1: {} + tslib@2.7.0: {} tslib@2.8.1: {} + tty-browserify@0.0.0: {} + + tty-browserify@0.0.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + tv4@1.3.0: {} + tweetnacl-util@0.15.1: {} + tweetnacl@0.14.5: {} + tweetnacl@1.0.3: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + type-detect@4.0.8: {} + + type-detect@4.1.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@4.41.0: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + type@2.7.3: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -12424,6 +31016,10 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + types-react-dom@19.0.0-rc.1: dependencies: '@types/react': 19.2.14 @@ -12436,6 +31032,23 @@ snapshots: ufo@1.6.3: {} + uglify-js@3.19.3: + optional: true + + uint8arrays@2.1.10: + dependencies: + multiformats: 9.9.0 + + uint8arrays@3.1.0: + dependencies: + multiformats: 9.9.0 + + uint8arrays@3.1.1: + dependencies: + multiformats: 9.9.0 + + ultron@1.1.1: {} + unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -12443,12 +31056,18 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + uncrypto@0.1.3: {} + undici-types@6.19.8: {} undici-types@6.21.0: {} undici-types@7.18.2: {} + undici-types@7.25.0: {} + + unfetch@4.2.0: {} + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -12468,6 +31087,8 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 + universalify@0.1.2: {} + universalify@0.2.0: {} unpipe@1.0.0: {} @@ -12496,12 +31117,28 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + unstorage@1.17.5(idb-keyval@6.2.2)(ioredis@5.9.3): + dependencies: + anymatch: 3.1.3 + chokidar: 5.0.0 + destr: 2.0.5 + h3: 1.15.11 + lru-cache: 11.2.7 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.3 + optionalDependencies: + idb-keyval: 6.2.2 + ioredis: 5.9.3 + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 + uqr@0.1.2: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -12511,6 +31148,20 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 + url-set-query@1.0.0: {} + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.14.2 + + use-callback-ref@1.3.3(@types/react@18.3.28)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.28 + use-callback-ref@1.3.3(react@19.2.3)(types-react@19.0.0-rc.1): dependencies: react: 19.2.3 @@ -12518,6 +31169,14 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + use-sidecar@1.1.3(@types/react@18.3.28)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.28 + use-sidecar@1.1.3(react@19.2.3)(types-react@19.0.0-rc.1): dependencies: detect-node-es: 1.1.0 @@ -12526,6 +31185,18 @@ snapshots: optionalDependencies: '@types/react': types-react@19.0.0-rc.1 + use-sync-external-store@1.2.0(react@18.3.1): + dependencies: + react: 18.3.1 + + use-sync-external-store@1.4.0(react@18.3.1): + dependencies: + react: 18.3.1 + + use-sync-external-store@1.6.0(react@18.3.1): + dependencies: + react: 18.3.1 + use-sync-external-store@1.6.0(react@19.2.3): dependencies: react: 19.2.3 @@ -12533,18 +31204,73 @@ snapshots: utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 - optional: true + + utf8@3.0.0: {} util-deprecate@1.0.2: {} + util@0.10.4: + dependencies: + inherits: 2.0.3 + + util@0.11.1: + dependencies: + inherits: 2.0.3 + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.2 + is-typed-array: 1.1.15 + which-typed-array: 1.1.20 + utils-merge@1.0.1: {} + uuid@3.4.0: {} + uuid@8.3.2: {} + uuid@9.0.0: {} + uuid@9.0.1: {} v8-compile-cache-lib@3.0.1: {} + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + valtio@1.11.2(@types/react@18.3.28)(react@18.3.1): + dependencies: + proxy-compare: 2.5.1 + use-sync-external-store: 1.2.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + react: 18.3.1 + + valtio@1.13.2(@types/react@18.3.28)(react@18.3.1): + dependencies: + derive-valtio: 0.1.0(valtio@1.13.2(@types/react@18.3.28)(react@18.3.1)) + proxy-compare: 2.6.0 + use-sync-external-store: 1.2.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + react: 18.3.1 + + valtio@2.1.7(@types/react@18.3.28)(react@18.3.1): + dependencies: + proxy-compare: 3.0.1 + optionalDependencies: + '@types/react': 18.3.28 + react: 18.3.1 + + varint@5.0.2: {} + + varint@6.0.0: {} + vary@1.1.2: {} verror@1.10.0: @@ -12570,6 +31296,177 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 + viem@2.13.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.9.3)(zod@3.25.76) + isows: 1.0.4(ws@8.13.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ws: 8.13.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + 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(typescript@5.9.3)(zod@3.25.76) + isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.6.7(typescript@5.9.3)(zod@3.25.76) + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6): + 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(typescript@5.9.3)(zod@4.3.6) + isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.6.7(typescript@5.9.3)(zod@4.3.6) + ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.31.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75): + 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@5.9.3)(zod@3.25.75) + isows: 1.0.7(ws@8.18.2(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.7.1(typescript@5.9.3)(zod@3.25.75) + ws: 8.18.2(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.39.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.1.0(typescript@5.9.3)(zod@3.25.75) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.9.6(typescript@5.9.3)(zod@3.25.75) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.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.2.3(typescript@5.9.3)(zod@3.22.4) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.14.20(typescript@5.9.3)(zod@3.22.4) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.75): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@3.25.75) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.14.20(typescript@5.9.3)(zod@3.25.75) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.2.3(typescript@5.9.3)(zod@3.25.76) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.14.20(typescript@5.9.3)(zod@3.25.76) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + ox: 0.14.20(typescript@5.9.3)(zod@4.3.6) + ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + vite-node@1.6.1(@types/node@25.5.0)(lightningcss@1.32.0): + dependencies: + cac: 6.7.14 + debug: 4.4.3 + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.21(@types/node@25.5.0)(lightningcss@1.32.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vite-node@2.1.9(@types/node@22.19.15)(lightningcss@1.32.0): dependencies: cac: 6.7.14 @@ -12588,6 +31485,14 @@ snapshots: - supports-color - terser + vite-plugin-node-polyfills@0.24.0(rollup@4.60.0)(vite@5.4.21(@types/node@25.5.0)(lightningcss@1.32.0)): + dependencies: + '@rollup/plugin-inject': 5.0.5(rollup@4.60.0) + node-stdlib-browser: 1.3.1 + vite: 5.4.21(@types/node@25.5.0)(lightningcss@1.32.0) + transitivePeerDependencies: + - rollup + vite@5.4.21(@types/node@22.19.15)(lightningcss@1.32.0): dependencies: esbuild: 0.21.5 @@ -12598,6 +31503,16 @@ snapshots: fsevents: 2.3.3 lightningcss: 1.32.0 + vite@5.4.21(@types/node@25.5.0)(lightningcss@1.32.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.8 + rollup: 4.60.0 + optionalDependencies: + '@types/node': 25.5.0 + fsevents: 2.3.3 + lightningcss: 1.32.0 + vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 @@ -12611,7 +31526,43 @@ snapshots: jiti: 1.21.7 yaml: 2.8.3 - vitest@2.1.9(@types/node@22.19.15)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0): + vitest@1.6.1(@types/node@25.5.0)(@vitest/ui@1.6.1)(jsdom@23.2.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0): + dependencies: + '@vitest/expect': 1.6.1 + '@vitest/runner': 1.6.1 + '@vitest/snapshot': 1.6.1 + '@vitest/spy': 1.6.1 + '@vitest/utils': 1.6.1 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.4.3 + execa: 8.0.1 + local-pkg: 0.5.1 + magic-string: 0.30.21 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.10.0 + strip-literal: 2.1.1 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.21(@types/node@25.5.0)(lightningcss@1.32.0) + vite-node: 1.6.1(@types/node@25.5.0)(lightningcss@1.32.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.5.0 + '@vitest/ui': 1.6.1(vitest@1.6.1) + jsdom: 23.2.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.9(@types/node@22.19.15)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.32.0): dependencies: '@vitest/expect': 2.1.9 '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.15)(lightningcss@1.32.0)) @@ -12635,7 +31586,7 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.19.15 - jsdom: 27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + jsdom: 27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - less - lightningcss @@ -12647,7 +31598,7 @@ snapshots: - supports-color - terser - vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)): + vitest@4.1.2(@types/node@25.5.0)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10))(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@25.5.0)(jiti@1.21.7)(yaml@2.8.3)) @@ -12671,11 +31622,13 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.5.0 - jsdom: 27.4.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + jsdom: 27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: - msw optional: true + vm-browserify@1.1.2: {} + vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@1.21.7)): dependencies: debug: 4.4.3 @@ -12692,19 +31645,429 @@ snapshots: dependencies: xml-name-validator: 5.0.0 + wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): + dependencies: + '@tanstack/react-query': 5.81.5(react@18.3.1) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - expo-web-browser + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react-native + - supports-color + - uploadthing + - utf-8-validate + - zod + + wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6): + dependencies: + '@tanstack/react-query': 5.95.2(react@18.3.1) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@4.3.6) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6)) + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@tanstack/query-core' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - expo-web-browser + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react-native + - supports-color + - uploadthing + - utf-8-validate + - zod + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + web-streams-polyfill@3.3.3: {} + web3-bzz@1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@types/node': 12.20.55 + got: 12.1.0 + swarm-js: 0.1.42(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + web3-core-helpers@1.10.4: + dependencies: + web3-eth-iban: 1.10.4 + web3-utils: 1.10.4 + + web3-core-helpers@1.5.2: + dependencies: + web3-eth-iban: 1.5.2 + web3-utils: 1.5.2 + + web3-core-method@1.10.4: + dependencies: + '@ethersproject/transactions': 5.8.0 + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-utils: 1.10.4 + + web3-core-method@1.5.2: + dependencies: + '@ethereumjs/common': 2.6.5 + '@ethersproject/transactions': 5.8.0 + web3-core-helpers: 1.5.2 + web3-core-promievent: 1.5.2 + web3-core-subscriptions: 1.5.2 + web3-utils: 1.5.2 + + web3-core-promievent@1.10.4: + dependencies: + eventemitter3: 4.0.4 + + web3-core-promievent@1.5.2: + dependencies: + eventemitter3: 4.0.4 + + web3-core-requestmanager@1.10.4: + dependencies: + util: 0.12.5 + web3-core-helpers: 1.10.4 + web3-providers-http: 1.10.4 + web3-providers-ipc: 1.10.4 + web3-providers-ws: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-core-requestmanager@1.5.2: + dependencies: + util: 0.12.5 + web3-core-helpers: 1.5.2 + web3-providers-http: 1.5.2 + web3-providers-ipc: 1.5.2 + web3-providers-ws: 1.5.2 + transitivePeerDependencies: + - supports-color + + web3-core-subscriptions@1.10.4: + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.10.4 + + web3-core-subscriptions@1.5.2: + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.5.2 + + web3-core@1.10.4: + dependencies: + '@types/bn.js': 5.2.0 + '@types/node': 12.20.55 + bignumber.js: 9.3.1 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-requestmanager: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-core@1.5.2: + dependencies: + '@types/bn.js': 4.11.6 + '@types/node': 12.20.55 + bignumber.js: 9.3.1 + web3-core-helpers: 1.5.2 + web3-core-method: 1.5.2 + web3-core-requestmanager: 1.5.2 + web3-utils: 1.5.2 + transitivePeerDependencies: + - supports-color + + web3-eth-abi@1.10.4: + dependencies: + '@ethersproject/abi': 5.8.0 + web3-utils: 1.10.4 + + web3-eth-accounts@1.10.4: + dependencies: + '@ethereumjs/common': 2.6.5 + '@ethereumjs/tx': 3.5.2 + '@ethereumjs/util': 8.1.0 + eth-lib: 0.2.8 + scrypt-js: 3.0.1 + uuid: 9.0.1 + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth-contract@1.10.4: + dependencies: + '@types/bn.js': 5.2.0 + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-eth-abi: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth-ens@1.10.4: + dependencies: + content-hash: 2.5.2 + eth-ens-namehash: 2.0.8 + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-eth-abi: 1.10.4 + web3-eth-contract: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth-iban@1.10.4: + dependencies: + bn.js: 5.2.3 + web3-utils: 1.10.4 + + web3-eth-iban@1.5.2: + dependencies: + bn.js: 4.12.3 + web3-utils: 1.5.2 + + web3-eth-personal@1.10.4: + dependencies: + '@types/node': 12.20.55 + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-net: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-eth@1.10.4: + dependencies: + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-eth-abi: 1.10.4 + web3-eth-accounts: 1.10.4 + web3-eth-contract: 1.10.4 + web3-eth-ens: 1.10.4 + web3-eth-iban: 1.10.4 + web3-eth-personal: 1.10.4 + web3-net: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-net@1.10.4: + dependencies: + web3-core: 1.10.4 + web3-core-method: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-providers-http@1.10.4: + dependencies: + abortcontroller-polyfill: 1.7.8 + cross-fetch: 4.1.0 + es6-promise: 4.2.8 + web3-core-helpers: 1.10.4 + transitivePeerDependencies: + - encoding + + web3-providers-http@1.5.2: + dependencies: + web3-core-helpers: 1.5.2 + xhr2-cookies: 1.1.0 + + web3-providers-ipc@1.10.4: + dependencies: + oboe: 2.1.5 + web3-core-helpers: 1.10.4 + + web3-providers-ipc@1.5.2: + dependencies: + oboe: 2.1.5 + web3-core-helpers: 1.5.2 + + web3-providers-ws@1.10.4: + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.10.4 + websocket: 1.0.35 + transitivePeerDependencies: + - supports-color + + web3-providers-ws@1.5.2: + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.5.2 + websocket: 1.0.35 + transitivePeerDependencies: + - supports-color + + web3-shh@1.10.4: + dependencies: + web3-core: 1.10.4 + web3-core-method: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-net: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.3 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + + web3-utils@1.5.2: + dependencies: + bn.js: 4.12.3 + eth-lib: 0.2.8 + ethereum-bloom-filters: 1.2.0 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + + web3@1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + web3-bzz: 1.10.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + web3-core: 1.10.4 + web3-eth: 1.10.4 + web3-eth-personal: 1.10.4 + web3-net: 1.10.4 + web3-shh: 1.10.4 + web3-utils: 1.10.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + webextension-polyfill@0.10.0: {} + + webidl-conversions@3.0.1: {} + + webidl-conversions@7.0.0: {} + webidl-conversions@8.0.1: {} + websocket@1.0.35: + dependencies: + bufferutil: 4.1.0 + debug: 2.6.9 + es5-ext: 0.10.64 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-mimetype@4.0.0: {} whatwg-mimetype@5.0.0: {} + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + whatwg-url@15.1.0: dependencies: tr46: 6.0.0 webidl-conversions: 8.0.1 + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -12736,6 +32099,8 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 + which-module@2.0.1: {} + which-typed-array@1.1.20: dependencies: available-typed-arrays: 1.0.7 @@ -12755,8 +32120,40 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.19.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.8 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + word-wrap@1.2.5: {} + wordwrap@1.0.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -12771,26 +32168,165 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@3.3.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + async-limiter: 1.0.1 + safe-buffer: 5.1.2 + ultron: 1.1.1 + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + + ws@7.4.6(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + + ws@8.13.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + ws@8.17.1(bufferutil@4.1.0)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.1.0 utf-8-validate: 5.0.10 + ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + + ws@8.18.2(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + + ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.1.0 utf-8-validate: 5.0.10 + ws@8.9.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + + x402@0.7.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + '@scure/base': 1.2.6 + '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))) + '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.81.5(react@18.3.1))(@types/react@18.3.28)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(immer@11.1.4)(ioredis@5.9.3)(react@18.3.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + zod: 3.25.76 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@solana/sysvars' + - '@tanstack/query-core' + - '@tanstack/react-query' + - '@types/react' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - expo-auth-session + - expo-crypto + - expo-web-browser + - fastestsmallesttextencoderdecoder + - immer + - ioredis + - react + - react-native + - supports-color + - typescript + - uploadthing + - utf-8-validate + - ws + + xhr-request-promise@0.1.3: + dependencies: + xhr-request: 1.1.0 + + xhr-request@1.1.0: + dependencies: + buffer-to-arraybuffer: 0.0.5 + object-assign: 4.1.1 + query-string: 5.1.1 + simple-get: 2.8.2 + timed-out: 4.0.1 + url-set-query: 1.0.0 + xhr: 2.6.0 + + xhr2-cookies@1.1.0: + dependencies: + cookiejar: 2.1.4 + + xhr@2.6.0: + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.6 + xtend: 4.0.2 + xml-name-validator@4.0.0: {} xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} + xmlhttprequest-ssl@2.1.2: {} + xtend@4.0.2: {} + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yaeti@0.0.6: {} + yallist@3.1.1: {} + yallist@4.0.0: {} + yaml-eslint-parser@1.3.2: dependencies: eslint-visitor-keys: 3.4.3 @@ -12801,24 +32337,104 @@ snapshots: eslint-visitor-keys: 5.0.1 yaml: 2.8.3 + yaml@1.10.3: {} + yaml@2.8.3: {} + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yn@3.1.1: {} yocto-queue@0.1.0: {} + yocto-queue@1.2.2: {} + zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 compress-commons: 6.0.2 readable-stream: 4.7.0 + zksync-web3@0.14.4(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + + zod-to-json-schema@3.25.2(zod@3.25.76): + dependencies: + zod: 3.25.76 + zod-validation-error@4.0.2(zod@4.3.6): dependencies: zod: 4.3.6 + zod@3.22.4: {} + + zod@3.25.75: {} + zod@3.25.76: {} zod@4.3.6: {} + zustand@5.0.0(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + optionalDependencies: + '@types/react': 18.3.28 + immer: 11.1.4 + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + + zustand@5.0.12(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + optionalDependencies: + '@types/react': 18.3.28 + immer: 11.1.4 + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + + zustand@5.0.3(@types/react@18.3.28)(immer@11.1.4)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)): + optionalDependencies: + '@types/react': 18.3.28 + immer: 11.1.4 + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + zwitch@2.0.4: {} diff --git a/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json b/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json index 414c1f52..f04981ab 100644 --- a/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json +++ b/reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json @@ -1,8 +1,8 @@ { - "generated_at": "2026-04-18T17:04:47Z", + "generated_at": "2026-04-22T04:59:28Z", "write_discovered": false, "discovered_live_pair_count": 19, - "healthy_live_pair_count": 7, + "healthy_live_pair_count": 10, "writes_applied": [], "entries": [ { @@ -43,15 +43,15 @@ "poolAddress": "0x422608c5dDff909675ac2C5F872fD42f16B9287A", "live": true, "health": { - "baseReserveRaw": "8", - "quoteReserveRaw": "8888510473469", - "baseReserveUnits": "0.000008", - "quoteReserveUnits": "8888510.473469", - "priceQuotePerBase": "1111063809183.625", - "deviationBps": "11110638091826250.000", - "depthOk": false, - "parityOk": false, - "healthy": false + "baseReserveRaw": "9898542641851", + "quoteReserveRaw": "9898540782562", + "baseReserveUnits": "9898542.641851", + "quoteReserveUnits": "9898540.782562", + "priceQuotePerBase": "0.9999998121653795641660116571", + "deviationBps": "0.0018783462043583398834290000", + "depthOk": true, + "parityOk": true, + "healthy": true } } ] @@ -190,8 +190,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -207,8 +207,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -289,15 +289,15 @@ "poolAddress": "0x3411A20C39773d1A18cb53864893b236f41f1e99", "live": true, "health": { - "baseReserveRaw": "996297636", - "quoteReserveRaw": "9", - "baseReserveUnits": "996.297636", - "quoteReserveUnits": "0.000009", - "priceQuotePerBase": "9.03344510194140418496385953484285894662105E-9", - "deviationBps": "9999.99990966554898058595815036140465157141", - "depthOk": false, - "parityOk": false, - "healthy": false + "baseReserveRaw": "10994302668", + "quoteReserveRaw": "10996392462", + "baseReserveUnits": "10994.302668", + "quoteReserveUnits": "10996.392462", + "priceQuotePerBase": "1.000190079722480494476414209", + "deviationBps": "1.900797224804944764142090000", + "depthOk": true, + "parityOk": true, + "healthy": true } }, { @@ -310,8 +310,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -327,8 +327,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -390,8 +390,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -407,8 +407,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -449,15 +449,15 @@ "poolAddress": "0x79c8eA153e77BC69b989f59F69BfA44c466D5DEE", "live": true, "health": { - "baseReserveRaw": "800000", - "quoteReserveRaw": "800000", - "baseReserveUnits": "0.8", - "quoteReserveUnits": "0.8", + "baseReserveRaw": "10000800000", + "quoteReserveRaw": "10000800000", + "baseReserveUnits": "10000.8", + "quoteReserveUnits": "10000.8", "priceQuotePerBase": "1", "deviationBps": "0", - "depthOk": false, + "depthOk": true, "parityOk": true, - "healthy": false + "healthy": true } }, { @@ -470,8 +470,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false @@ -487,8 +487,8 @@ "quoteReserveRaw": "1000000000", "baseReserveUnits": "1500", "quoteReserveUnits": "1000", - "priceQuotePerBase": "0.666666666666666666666666666666666666666667", - "deviationBps": "3333.33333333333333333333333333333333333333", + "priceQuotePerBase": "0.6666666666666666666666666667", + "deviationBps": "3333.333333333333333333333333", "depthOk": true, "parityOk": false, "healthy": false diff --git a/reports/inventory/deployed-contracts-by-network.csv b/reports/inventory/deployed-contracts-by-network.csv new file mode 100644 index 00000000..73f9ede5 --- /dev/null +++ b/reports/inventory/deployed-contracts-by-network.csv @@ -0,0 +1,132 @@ +network,chain_id,contract_name,address,category,status,notes,source +DBIS Mainnet / Chain 138,138,WETH9,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,token,live,Genesis token,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,WETH10,0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f,token,live,Genesis token,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,LINK,0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03,token,live,CCIP fee token,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cUSDT,0x93E66202A11B1772E55407B32B44e5Cd8eda7f22,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cUSDC,0xf22258f57794CC8E06237084b353Ab30fFfa640b,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cEURC,0x8085961F9cF02b4d800A3c6d386D31da4B34266a,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cEURT,0xdf4b71c61E5912712C1Bdd451416B9aC26949d72,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cGBPC,0x003960f16D9d34F2e98d62723B6721Fb92074aD2,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cGBPT,0x350f54e4D23795f86A9c03988c7135357CCaD97c,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cAUDC,0xD51482e567c03899eecE3CAe8a058161FD56069D,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cJPYC,0xEe269e1226a334182aace90056EE4ee5Cc8A6770,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cCHFC,0x873990849DDa5117d7C644f0aF24370797C03885,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cCADC,0x54dBd40cF05e15906A2C21f600937e96787f5679,token,live,Compliant stablecoin,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cXAUC,0x290E52a8819A4fbD0714E517225429aA2B70EC6b,token,live,1 token equals 1 troy oz Au,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cXAUT,0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E,token,live,1 token equals 1 troy oz Au,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,USDT official mirror,0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1,token,live,Official mirror used in PMM pool,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,USDC official mirror,0x71D6687F38b93CCad569Fa6352c876eea967201b,token,live,Official mirror used in PMM pool,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,cAUSDT,0x5fdDF65733e3d590463F68f93Cf16E8c04081271,token,live,Present in address inventory,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,wXRP,0xe8572f3ABD73Eff0A2e8AC5C88C2b6D180735f97,token,live,XRPL bridge asset,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,ComplianceRegistry,0xbc54fe2b6fda157c59d59826bcfdbcc654ec9ea1,registry,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,TokenFactory,0xEBFb5C60dE5f7C4baae180CA328D3BB39E1a5133,factory,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,BridgeVault,0x31884f84555210FFB36a19D2471b8eBc7372d0A8,vault,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,DebtRegistry,0x95BC4A997c0670d5DAC64d55cDf3769B53B63C28,registry,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,PolicyManager,0x0C4FD27018130A00762a802f91a72D6a64a60F14,policy,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,TokenImplementation,0x0059e237973179146237aB49f1322E8197c22b21,implementation,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,TokenRegistry,0x91Efe92229dbf7C5B38D422621300956B55870Fa,registry,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,FeeCollector,0xF78246eB94c6CB14018E507E60661314E5f4C53f,treasury,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,UniversalAssetRegistry,0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575,registry,live,Proxy,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,GovernanceController,0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e,governance,live,Proxy,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,UniversalCCIPBridge,0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8,bridge,live,Proxy,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,BridgeOrchestrator,0x89aB428c437f23bAB9781ff8Db8D3848e27EeD6c,bridge,live,Proxy,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,MerchantSettlementRegistry,0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800,settlement,live,Also referenced as SettlementRegistry,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,WithdrawalEscrow,0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D,settlement,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,RegulatedEntityRegistry,0xEA4C892D6c1253797c5D95a05BF3863363080b4B,registry,live,Vault stack,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,VaultFactory,0xB2Ac70f35A81481B005067ed6567a5043BA32336,factory,live,Vault stack,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,CREATE2Factory,0x750E4a8adCe9f0e67A420aBE91342DC64Eb90825,factory,live,Deterministic deployments,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,UniversalAssetRegistry deterministic,0xC98602aa574F565b5478E8816BCab03C9De0870f,registry,live,Deterministic deployment,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,UniversalCCIPBridge deterministic,0x532DE218b94993446Be30eC894442f911499f6a3,bridge,live,Deterministic deployment,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,MirrorRegistry,0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8,registry,live,Deterministic deployment,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,ChainRegistry,0x6949137625CA923A4e9C80D5bc7DF673f9bbb84F,registry,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Governance Multisig,0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965,governance,live,Operational verification subset,contract-addresses.conf +DBIS Mainnet / Chain 138,138,Voting,0x022267b26400114aF01BaCcb92456Fe36cfccD93,governance,live,Operational verification subset,contract-addresses.conf +DBIS Mainnet / Chain 138,138,MintBurnController,0x44F79a3cec3fb829973d9b8d630839726D19e9c5,controller,live,XRPL bridge support,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Oracle Aggregator,0x99b3511a2d315a497c8112c1fdd8d508d4b1e506,oracle,live,Docs note historical Multicall overlap,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Oracle Proxy,0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6,oracle,live,MetaMask price feed proxy,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,OraclePriceFeed,0x8918eE0819fD687f4eb3e8b9B7D0ef7557493cfa,oracle,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,WETH MockPriceFeed,0x3e8725b8De386feF3eFE5678c92eA6aDB41992B2,oracle,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,PriceFeedKeeper,0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04,keeper,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,PaymentChannelManager,0x302aF72966aFd21C599051277a48DAa7f01a5f54,channels,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,GenericStateChannelManager,0xe5e3bB424c8a0259FDE23F0A58F7e36f73B90aBd,channels,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,AddressMapper,0x439Fcb2d2ab2f890DCcAE50461Fa7d978F9Ffe1A,mapping,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,AddressMapper legacy duplicate,0xe48E3f248698610e18Db865457fcd935Bb3da856,mapping,live,Legacy duplicate in inventory,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,MirrorManager,0x6eD905A30c552a6e003061A38FD52A5A427beE56,mirror,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,TransactionMirror,0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc,mirror,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,ReserveSystem,0x607e97cD626f209facfE48c1464815DDE15B5093,reserve,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,ReserveTokenIntegration,0x34B73e6EDFd9f85a7c25EeD31dcB13aB6E969b96,reserve,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Lockbox138,0xFce6f50B312B3D936Ea9693C5C9531CF92a3324c,trustless_bridge,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Ledger,0x67b3831dc64C14FB9352B2a45C6Dd69b3C86B7af,vault,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Liquidation,0x3aCdbCB749d6037a02F0ef6ea2E5Fb89D31fAB72,vault,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,XAU Oracle,0xf23E1eDa304082ab7a81531dFE6020E6105e77A8,vault,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,TruthAdapter,0x7880Ef14887a0567807AcF785eC92553D014930f,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,XRPL Adapter,0x351f207F2DE66bF166ec730a0133613A10691439,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Tron Adapter,0x28a94FB4bC415Ac3273211429338f768074CBEF6,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,CCIP Router,0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817,bridge,live,,CONTRACT_ADDRESSES_REFERENCE.md +DBIS Mainnet / Chain 138,138,CCIP Sender,0x105F8A15b819948a89153505762444Ee9f324684,bridge,live,,CONTRACT_ADDRESSES_REFERENCE.md +DBIS Mainnet / Chain 138,138,CCIP Receiver,0xC12236C03b28e675d376774FCE2C2C052488430F,bridge,live,Operational verification subset,contract-addresses.conf +DBIS Mainnet / Chain 138,138,CCIPWETH9Bridge,0xcacfd227A040002e49e2e01626363071324f820a,bridge,live,Working router path,CONTRACT_ADDRESSES_REFERENCE.md +DBIS Mainnet / Chain 138,138,CCIPWETH10Bridge,0xe0E93247376aa097dB308B92e6Ba36bA015535D0,bridge,live,,CONTRACT_ADDRESSES_REFERENCE.md +DBIS Mainnet / Chain 138,138,AlltraAdapter,0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc,bridge,live,Bridge to ALL Mainnet,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,CrossChainFlashBridgeAdapter,0xBe9e0B2d4cF6A3b2994d6f2f0904D2B165eB8ffC,flash_bridge,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,CrossChainFlashRepayReceiver,0xD084b68cB4B1ef2cBA09CF99FB1B6552fd9b4859,flash_bridge,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,CrossChainFlashVaultCreditReceiver,0x89F7a1fcbBe104BeE96Da4b4b6b7d3AF85f7E661,flash_bridge,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,IntentBridgeCoordinatorV2,0x7D0022B7e8360172fd9C0bB6778113b7Ea3674E7,bridge,live,Address inventory key INTENT_BRIDGE_COORDINATOR_V2_ADDRESS,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,DODOPMMIntegration,0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d,dex,live,Canonical corrected stack,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,DODOPMMProvider,0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381,dex,live,Canonical corrected stack,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,PrivatePoolRegistry,0xb27057B27db09e8Df353AF722c299f200519882A,dex,live,Live private XAU registry,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,DODO DVM Factory,0xc93870594C7f83A0aE076c2e30b494Efc526b68E,dex,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,DODO VendingMachine,0xb6D9EF3575bc48De3f011C310DC24d87bEC6087C,dex,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Pool cUSDT/cUSDC,0xff8d3b8fDF7B112759F076B69f4271D4209C0849,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cUSDT/USDT,0x6fc60DEDc92a2047062294488539992710b99D71,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cUSDC/USDC,0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263,pool,live,Canonical corrected-stack pool from docs,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cUSDT/cXAUC public,0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cUSDC/cXAUC public,0xEA9Ac6357CaCB42a83b9082B870610363B177cBa,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cEURT/cXAUC public,0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cUSDT/cXAUC private,0x94316511621430423a2cff0C036902BAB4aA70c2,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cUSDC/cXAUC private,0x7867D58567948e5b9908F1057055Ee4440de0851,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,Pool cEURT/cXAUC private,0x505403093826D494983A93b43Aa0B8601078A44e,pool,live,,ADDRESS_MATRIX_AND_STATUS.md +DBIS Mainnet / Chain 138,138,EnhancedSwapRouterV2,0xF1c93F54A5C2fc0d7766Ccb0Ad8f157DFB4C99Ce,router,live,Address inventory,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,DODO RouteExecutorAdapter,0x88495B3dccEA93b0633390fDE71992683121Fa62,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,DODO V3 RouteExecutorAdapter,0x9Cb97adD29c52e3B81989BcA2E33D46074B530eF,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 RouteExecutorAdapter,0x960D6db4E78705f82995690548556fb2266308EA,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Balancer RouteExecutorAdapter,0x4E1B71B69188Ab45021c797039b4887a4924157A,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Curve RouteExecutorAdapter,0x5f0E07071c41ACcD2A1b1032D3bd49b323b9ADE6,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,1inch RouteExecutorAdapter,0x8168083d29b3293F215392A49D16e7FeF4a02600,adapter,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 Factory,0x2f7219276e3ce367dB9ec74C1196a8ecEe67841C,dex,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 Router,0xde9cD8ee2811E6E64a41D5F68Be315d33995975E,dex,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 Quoter V2,0x6abbB1CEb2468e748a03A00CD6aA9BFE893AFa1f,dex,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 NFT Descriptor Library,0x6F5fdE32DD2aC66B27e296EC9D6F4E79A3dE2947,dex,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 Token Descriptor,0xca66DCAC4633555033F6fDDBE4234B6913c7ff51,dex,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 Position Manager,0x31b68BE5af4Df565Ce261dfe53D529005D947B48,dex,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 WETH/USDT Pool,0xa893add35aEfe6A6d858EB01828bE4592f12C9F5,pool,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Uniswap V3 WETH/USDC Pool,0xEC745bfb6b3cd32f102d594E5F432d8d85B19391,pool,live,Native deployment,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Balancer Vault,0x96423d7C1727698D8a25EbFB88131e9422d1a3C3,dex,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,Curve 3Pool,0xE440Ec15805BE4C7BabCD17A63B8C8A08a492e0f,dex,live,,address-inventory.chain138.json +DBIS Mainnet / Chain 138,138,1inch Router,0x500B84b1Bc6F59C1898a5Fe538eA20A758757A4F,dex,live,,address-inventory.chain138.json +Ethereum Mainnet,1,CCIPRelayRouter,0xAd9A228CcEB4cbB612cD165FFB72fE090ff10Afb,bridge,live,Relay-side mainnet router,ADDRESS_MATRIX_AND_STATUS.md +Ethereum Mainnet,1,CCIPRelayBridge,0xF9A32F37099c582D28b4dE7Fca6eaC1e5259f939,bridge,live,Relay-side mainnet WETH bridge,ADDRESS_MATRIX_AND_STATUS.md +Ethereum Mainnet,1,WETH,0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,token,live,Counterparty asset,ADDRESS_MATRIX_AND_STATUS.md +Ethereum Mainnet,1,USDT,0xdAC17F958D2ee523a2206206994597C13D831ec7,token,live,Counterparty asset,ADDRESS_MATRIX_AND_STATUS.md +Ethereum Mainnet,1,USDC,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,token,live,Counterparty asset,ADDRESS_MATRIX_AND_STATUS.md +ALL Mainnet / Alltra,651940,AUSDT,0x015B1897Ed5279930bC2Be46F661894d219292A6,token,live,,ADDRESS_MATRIX_AND_STATUS.md +ALL Mainnet / Alltra,651940,USDT,0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e,token,live,,ADDRESS_MATRIX_AND_STATUS.md +ALL Mainnet / Alltra,651940,USDC / AUSDC,0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881,token,live,,ADDRESS_MATRIX_AND_STATUS.md +ALL Mainnet / Alltra,651940,WETH,0x798F6762BB40d6801A593459d08F890603D3979C,token,live,,ADDRESS_MATRIX_AND_STATUS.md +ALL Mainnet / Alltra,651940,WALL,0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4,token,live,,ADDRESS_MATRIX_AND_STATUS.md +ALL Mainnet / Alltra,651940,HYDX,0x0d9793861AEB9244AD1B34375a83A6730F6AdD38,token,live,,ADDRESS_MATRIX_AND_STATUS.md +XDC parent / XDC Zero pair,50,Endpoint,0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e,bridge,live,Parent-side endpoint stack,endpoint-apothem-or-mainnet.env +XDC parent / XDC Zero pair,50,EthereumTrieDB,0x99B3511A2d315A497C8112C1fdd8D508d4B1E506,bridge,live,Parent-side endpoint stack,endpoint-apothem-or-mainnet.env +XDC parent / XDC Zero pair,50,MerklePatricia,0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6,bridge,live,Parent-side endpoint stack,endpoint-apothem-or-mainnet.env +XDC parent / XDC Zero pair,50,CSC for chain 50 registration,0x3cf12c78b5E52EB802aD4f3b4653c616786b792c,bridge,live,Registered in endpoint config fragment,endpointconfig.fragment.chain138.json +Chain 138 side of XDC Zero pair,138,Endpoint,0x43F435cDC82e415500c0abcf48261176052CadcA,bridge,live,Chain 138 endpoint stack,endpoint-chain138.env +Chain 138 side of XDC Zero pair,138,EthereumTrieDB,0xB7A32E86Fa1533ebb0Ed1D41Ce502110E739E54A,bridge,live,Chain 138 endpoint stack,endpoint-chain138.env +Chain 138 side of XDC Zero pair,138,MerklePatricia,0xAF12F73f0BCa1E52559Db807A2B438BD14de6B09,bridge,live,Chain 138 endpoint stack,endpoint-chain138.env +Chain 138 side of XDC Zero pair,138,CSC for chain 138 registration,0x105F8A15b819948a89153505762444Ee9f324684,bridge,live,Recorded in parent registration fragment,xdcparentnet-register-chain138.fragment.json +Cronos,25,WETH9,0x99B3511A2d315A497C8112C1fdd8D508d4B1E506,token,live,Documented in multi-chain matrix,ADDRESS_MATRIX_AND_STATUS.md +Cronos,25,WETH10,0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6,token,live,Documented in multi-chain matrix,ADDRESS_MATRIX_AND_STATUS.md +Cronos,25,LINK,0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85,token,live,Documented in multi-chain matrix,ADDRESS_MATRIX_AND_STATUS.md +Gnosis,100,CCIPWETH9Bridge,0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82,bridge,live,Documented as live in routing status docs,DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md +Gnosis,100,CCIPWETH10Bridge,0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44,bridge,live,Documented as live in routing status docs,DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md +Celo,42220,CCIPWETH9Bridge,0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04,bridge,live,Documented as configured live in routing status docs,DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md +Celo,42220,CCIPWETH10Bridge,0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08,bridge,live,Documented as configured live in routing status docs,DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md diff --git a/reports/inventory/deployed-contracts-by-network.md b/reports/inventory/deployed-contracts-by-network.md new file mode 100644 index 00000000..c8931310 --- /dev/null +++ b/reports/inventory/deployed-contracts-by-network.md @@ -0,0 +1,253 @@ +# Deployed Contracts by Network + +**Generated:** 2026-04-18 +**Scope:** Repo-backed deployed contract inventory across all networks evidenced in this checkout. +**Output pair:** This Markdown summary plus [deployed-contracts-by-network.csv](/home/intlc/projects/proxmox/reports/inventory/deployed-contracts-by-network.csv). + +## Method and caveats + +- This report includes only contracts and token contracts that are explicitly evidenced in committed config/docs in this workspace. +- `config/smart-contracts-master.json` is referenced by code/docs but is not present in this checkout, so it was not used as a source. +- Where multiple sources disagree, the most recent repo-backed operational docs were preferred. +- Chain 138 is the only network with a broad in-repo address inventory. Other networks are listed where the repo explicitly records deployed contracts or bridge endpoints. +- Some networks are marked as bridge-live in routing docs without a committed destination-side contract address book; those are called out separately and are not expanded into speculative per-contract rows here. + +## Source precedence + +1. [docs/11-references/ADDRESS_MATRIX_AND_STATUS.md](/home/intlc/projects/proxmox/docs/11-references/ADDRESS_MATRIX_AND_STATUS.md) +2. [docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md](/home/intlc/projects/proxmox/docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md) +3. [docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md](/home/intlc/projects/proxmox/docs/11-references/CONTRACT_ADDRESSES_REFERENCE.md) +4. [smom-dbis-138/config/address-inventory.chain138.json](/home/intlc/projects/proxmox/smom-dbis-138/config/address-inventory.chain138.json) +5. [config/contract-addresses.conf](/home/intlc/projects/proxmox/config/contract-addresses.conf) +6. [config/xdc-zero/deployed/endpoint-chain138.env](/home/intlc/projects/proxmox/config/xdc-zero/deployed/endpoint-chain138.env), [config/xdc-zero/deployed/endpoint-apothem-or-mainnet.env](/home/intlc/projects/proxmox/config/xdc-zero/deployed/endpoint-apothem-or-mainnet.env), [config/xdc-zero/deployed/xdcparentnet-register-chain138.fragment.json](/home/intlc/projects/proxmox/config/xdc-zero/deployed/xdcparentnet-register-chain138.fragment.json), [config/xdc-zero/deployed/endpointconfig.fragment.chain138.json](/home/intlc/projects/proxmox/config/xdc-zero/deployed/endpointconfig.fragment.chain138.json) + +## Network summary + +| Network | Chain ID | Status | Notes | +|---|---:|---|---| +| DBIS Mainnet / Chain 138 | 138 | Live | Broadest deployed inventory in repo: tokens, registries, CCIP, PMM, vault, reserve, channel, mirror, settlement, adapter, and cross-chain support contracts. | +| Ethereum Mainnet | 1 | Partial but explicit | Relay-side contracts are explicitly recorded. | +| ALL Mainnet / Alltra | 651940 | Partial but explicit | Live token inventory is documented; 138-side bridge adapter is explicit. | +| XDC parent / XDC Zero pair | 50 | Partial but explicit | Endpoint stack and 50-to-138 registration are explicitly recorded. | +| Cronos | 25 | Partial but explicit | Repo records deployed ISO-4217 W token set plus bridge-live status. | +| Gnosis | 100 | Bridge-live in docs | Destination-side bridge addresses are documented in status docs. | +| BSC | 56 | Bridge-live from 138 | 138-side bridge contracts are explicit; destination-side bridge address book is not committed here. | +| Polygon | 137 | Bridge-live from 138 | Same limitation as BSC. | +| Optimism | 10 | Bridge-live from 138 | Same limitation as BSC. | +| Arbitrum One | 42161 | Bridge-live from 138 | Same limitation as BSC. | +| Avalanche C-Chain | 43114 | Bridge-live from 138 | Same limitation as BSC. | +| Base | 8453 | Bridge-live from 138 | Same limitation as BSC. | +| Celo | 42220 | Config-complete in docs | Destination-side bridge addresses are documented in status docs. | +| Wemix | 1111 | Pending | Not treated as deployed in this report. | + +## Chain 138 deployed contracts + +### Tokens and token-like contracts + +| Contract | Address | Category | Notes | +|---|---|---|---| +| WETH9 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | Token | Genesis | +| WETH10 | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | Token | Genesis | +| LINK | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | Token | CCIP fee token | +| cUSDT | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | Token | Compliant stablecoin | +| cUSDC | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | Token | Compliant stablecoin | +| cEURC | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | Token | Compliant stablecoin | +| cEURT | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | Token | Compliant stablecoin | +| cGBPC | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | Token | Compliant stablecoin | +| cGBPT | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | Token | Compliant stablecoin | +| cAUDC | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | Token | Compliant stablecoin | +| cJPYC | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | Token | Compliant stablecoin | +| cCHFC | `0x873990849DDa5117d7C644f0aF24370797C03885` | Token | Compliant stablecoin | +| cCADC | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | Token | Compliant stablecoin | +| cXAUC | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | Token | 1 token = 1 troy oz Au | +| cXAUT | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | Token | 1 token = 1 troy oz Au | +| USDT official mirror | `0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1` | Token | Quote-side mirror on 138 | +| USDC official mirror | `0x71D6687F38b93CCad569Fa6352c876eea967201b` | Token | Quote-side mirror on 138 | +| cAUSDT | `0x5fdDF65733e3d590463F68f93Cf16E8c04081271` | Token | Present in address inventory | +| wXRP | `0xe8572f3ABD73Eff0A2e8AC5C88C2b6D180735f97` | Token | XRPL bridge asset | + +### Core, registry, governance, and settlement + +| Contract | Address | Category | Notes | +|---|---|---|---| +| ComplianceRegistry | `0xbc54fe2b6fda157c59d59826bcfdbcc654ec9ea1` | Registry | | +| TokenFactory | `0xEBFb5C60dE5f7C4baae180CA328D3BB39E1a5133` | Factory | | +| BridgeVault | `0x31884f84555210FFB36a19D2471b8eBc7372d0A8` | Vault | | +| DebtRegistry | `0x95BC4A997c0670d5DAC64d55cDf3769B53B63C28` | Registry | | +| PolicyManager | `0x0C4FD27018130A00762a802f91a72D6a64a60F14` | Policy | | +| TokenImplementation | `0x0059e237973179146237aB49f1322E8197c22b21` | Implementation | | +| TokenRegistry | `0x91Efe92229dbf7C5B38D422621300956B55870Fa` | Registry | | +| FeeCollector | `0xF78246eB94c6CB14018E507E60661314E5f4C53f` | Treasury | | +| UniversalAssetRegistry | `0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575` | Registry | Proxy | +| GovernanceController | `0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e` | Governance | Proxy | +| UniversalCCIPBridge | `0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8` | Bridge | Proxy | +| BridgeOrchestrator | `0x89aB428c437f23bAB9781ff8Db8D3848e27EeD6c` | Bridge | Proxy | +| MerchantSettlementRegistry | `0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800` | Settlement | Also recorded as SettlementRegistry | +| WithdrawalEscrow | `0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D` | Settlement | | +| RegulatedEntityRegistry | `0xEA4C892D6c1253797c5D95a05BF3863363080b4B` | Registry | Vault stack | +| VaultFactory | `0xB2Ac70f35A81481B005067ed6567a5043BA32336` | Factory | Vault stack | +| CREATE2Factory | `0x750E4a8adCe9f0e67A420aBE91342DC64Eb90825` | Factory | Deterministic deploys | +| UniversalAssetRegistry deterministic | `0xC98602aa574F565b5478E8816BCab03C9De0870f` | Registry | Deterministic | +| UniversalCCIPBridge deterministic | `0x532DE218b94993446Be30eC894442f911499f6a3` | Bridge | Deterministic | +| MirrorRegistry | `0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8` | Registry | Deterministic | +| ChainRegistry | `0x6949137625CA923A4e9C80D5bc7DF673f9bbb84F` | Registry | Address inventory | +| Governance/Multisig | `0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965` | Governance | From `contract-addresses.conf` | +| Voting | `0x022267b26400114aF01BaCcb92456Fe36cfccD93` | Governance | From `contract-addresses.conf` | +| MintBurnController | `0x44F79a3cec3fb829973d9b8d630839726D19e9c5` | Controller | XRP bridge support | + +### Oracle, mirror, reserve, trustless bridge, and channels + +| Contract | Address | Category | Notes | +|---|---|---|---| +| Oracle Aggregator | `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` | Oracle | Docs note historical Multicall overlap at this slot | +| Oracle Proxy | `0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6` | Oracle | MetaMask price feed proxy | +| OraclePriceFeed | `0x8918eE0819fD687f4eb3e8b9B7D0ef7557493cfa` | Oracle | | +| WETH MockPriceFeed | `0x3e8725b8De386feF3eFE5678c92eA6aDB41992B2` | Oracle | | +| PriceFeedKeeper | `0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04` | Keeper | | +| PaymentChannelManager | `0x302aF72966aFd21C599051277a48DAa7f01a5f54` | Channels | | +| GenericStateChannelManager | `0xe5e3bB424c8a0259FDE23F0A58F7e36f73B90aBd` | Channels | | +| AddressMapper | `0x439Fcb2d2ab2f890DCcAE50461Fa7d978F9Ffe1A` | Mapping | | +| AddressMapper legacy duplicate | `0xe48E3f248698610e18Db865457fcd935Bb3da856` | Mapping | Legacy duplicate in inventory | +| MirrorManager | `0x6eD905A30c552a6e003061A38FD52A5A427beE56` | Mirror | | +| TransactionMirror | `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc` | Mirror | | +| ReserveSystem | `0x607e97cD626f209facfE48c1464815DDE15B5093` | Reserve | | +| ReserveTokenIntegration | `0x34B73e6EDFd9f85a7c25EeD31dcB13aB6E969b96` | Reserve | | +| Lockbox138 | `0xFce6f50B312B3D936Ea9693C5C9531CF92a3324c` | Trustless bridge | | +| Ledger | `0x67b3831dc64C14FB9352B2a45C6Dd69b3C86B7af` | Vault | | +| Liquidation | `0x3aCdbCB749d6037a02F0ef6ea2E5Fb89D31fAB72` | Vault | | +| XAU Oracle | `0xf23E1eDa304082ab7a81531dFE6020E6105e77A8` | Vault | | +| TruthAdapter | `0x7880Ef14887a0567807AcF785eC92553D014930f` | Adapter | | +| XRPL Adapter | `0x351f207F2DE66bF166ec730a0133613A10691439` | Adapter | | +| Tron Adapter | `0x28a94FB4bC415Ac3273211429338f768074CBEF6` | Adapter | | + +### CCIP, bridge, routing, and flash-bridge contracts + +| Contract | Address | Category | Notes | +|---|---|---|---| +| CCIP Router | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | Bridge | | +| CCIP Sender | `0x105F8A15b819948a89153505762444Ee9f324684` | Bridge | | +| CCIP Receiver | `0xC12236C03b28e675d376774FCE2C2C052488430F` | Bridge | From `contract-addresses.conf` | +| CCIPWETH9Bridge | `0xcacfd227A040002e49e2e01626363071324f820a` | Bridge | Working router path | +| CCIPWETH10Bridge | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | Bridge | | +| AlltraAdapter | `0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc` | Bridge | 138 to 651940 | +| CrossChainFlashBridgeAdapter | `0xBe9e0B2d4cF6A3b2994d6f2f0904D2B165eB8ffC` | Flash bridge | | +| CrossChainFlashRepayReceiver | `0xD084b68cB4B1ef2cBA09CF99FB1B6552fd9b4859` | Flash bridge | | +| CrossChainFlashVaultCreditReceiver | `0x89F7a1fcbBe104BeE96Da4b4b6b7d3AF85f7E661` | Flash bridge | | +| BridgeOrchestrator V2 / IntentBridgeCoordinatorV2 | `0x7D0022B7e8360172fd9C0bB6778113b7Ea3674E7` | Bridge | Address inventory key is `INTENT_BRIDGE_COORDINATOR_V2_ADDRESS` | + +### DODO, Uniswap, Balancer, Curve, and related pool contracts + +| Contract | Address | Category | Notes | +|---|---|---|---| +| DODOPMMIntegration | `0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d` | DEX | Canonical corrected stack per docs | +| DODOPMMProvider | `0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381` | DEX | Canonical corrected stack per docs | +| PrivatePoolRegistry | `0xb27057B27db09e8Df353AF722c299f200519882A` | DEX | Live private XAU registry | +| DODO DVM Factory | `0xc93870594C7f83A0aE076c2e30b494Efc526b68E` | DEX | | +| DODO VendingMachine | `0xb6D9EF3575bc48De3f011C310DC24d87bEC6087C` | DEX | | +| Pool cUSDT/cUSDC | `0xff8d3b8fDF7B112759F076B69f4271D4209C0849` | Pool | Live | +| Pool cUSDT/USDT | `0x6fc60DEDc92a2047062294488539992710b99D71` | Pool | Live | +| Pool cUSDC/USDC | `0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263` | Pool | Canonical corrected-stack pool from docs | +| Pool cUSDT/cXAUC public | `0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0` | Pool | Live | +| Pool cUSDC/cXAUC public | `0xEA9Ac6357CaCB42a83b9082B870610363B177cBa` | Pool | Live | +| Pool cEURT/cXAUC public | `0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf` | Pool | Live | +| Pool cUSDT/cXAUC private | `0x94316511621430423a2cff0C036902BAB4aA70c2` | Pool | Live | +| Pool cUSDC/cXAUC private | `0x7867D58567948e5b9908F1057055Ee4440de0851` | Pool | Live | +| Pool cEURT/cXAUC private | `0x505403093826D494983A93b43Aa0B8601078A44e` | Pool | Live | +| EnhancedSwapRouterV2 | `0xF1c93F54A5C2fc0d7766Ccb0Ad8f157DFB4C99Ce` | Router | Address inventory | +| DODO RouteExecutorAdapter | `0x88495B3dccEA93b0633390fDE71992683121Fa62` | Adapter | | +| DODO V3 RouteExecutorAdapter | `0x9Cb97adD29c52e3B81989BcA2E33D46074B530eF` | Adapter | | +| Uniswap V3 RouteExecutorAdapter | `0x960D6db4E78705f82995690548556fb2266308EA` | Adapter | | +| Balancer RouteExecutorAdapter | `0x4E1B71B69188Ab45021c797039b4887a4924157A` | Adapter | | +| Curve RouteExecutorAdapter | `0x5f0E07071c41ACcD2A1b1032D3bd49b323b9ADE6` | Adapter | | +| 1inch RouteExecutorAdapter | `0x8168083d29b3293F215392A49D16e7FeF4a02600` | Adapter | | +| Uniswap V3 Factory | `0x2f7219276e3ce367dB9ec74C1196a8ecEe67841C` | DEX | Native deployment | +| Uniswap V3 Router | `0xde9cD8ee2811E6E64a41D5F68Be315d33995975E` | DEX | Native deployment | +| Uniswap V3 Quoter V2 | `0x6abbB1CEb2468e748a03A00CD6aA9BFE893AFa1f` | DEX | Native deployment | +| Uniswap V3 NFT Descriptor Library | `0x6F5fdE32DD2aC66B27e296EC9D6F4E79A3dE2947` | DEX | Native deployment | +| Uniswap V3 Token Descriptor | `0xca66DCAC4633555033F6fDDBE4234B6913c7ff51` | DEX | Native deployment | +| Uniswap V3 Position Manager | `0x31b68BE5af4Df565Ce261dfe53D529005D947B48` | DEX | Native deployment | +| Uniswap V3 WETH/USDT Pool | `0xa893add35aEfe6A6d858EB01828bE4592f12C9F5` | Pool | Native deployment | +| Uniswap V3 WETH/USDC Pool | `0xEC745bfb6b3cd32f102d594E5F432d8d85B19391` | Pool | Native deployment | +| Balancer Vault | `0x96423d7C1727698D8a25EbFB88131e9422d1a3C3` | DEX | | +| Curve 3Pool | `0xE440Ec15805BE4C7BabCD17A63B8C8A08a492e0f` | DEX | | +| 1inch Router | `0x500B84b1Bc6F59C1898a5Fe538eA20A758757A4F` | DEX | | + +## Other networks with explicit deployed contracts in repo + +### Ethereum Mainnet (chain 1) + +| Contract | Address | Notes | +|---|---|---| +| CCIPRelayRouter | `0xAd9A228CcEB4cbB612cD165FFB72fE090ff10Afb` | Relay-side mainnet router | +| CCIPRelayBridge | `0xF9A32F37099c582D28b4dE7Fca6eaC1e5259f939` | Relay-side mainnet WETH bridge | +| WETH | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | Counterparty asset | +| USDT | `0xdAC17F958D2ee523a2206206994597C13D831ec7` | Counterparty asset | +| USDC | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | Counterparty asset | + +### ALL Mainnet / Alltra (chain 651940) + +| Contract | Address | Notes | +|---|---|---| +| AUSDT | `0x015B1897Ed5279930bC2Be46F661894d219292A6` | Token | +| USDT | `0x66D8Efa0AF63B0e84eb1Dd72bf00f00cd1e2234e` | Token | +| USDC / AUSDC | `0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881` | Token | +| WETH | `0x798F6762BB40d6801A593459d08F890603D3979C` | Token | +| WALL | `0x2da2b8f961F161ab6320acB3377e2e844a3C3ce4` | Token | +| HYDX | `0x0d9793861AEB9244AD1B34375a83A6730F6AdD38` | Token | + +### XDC parent / XDC Zero pair (chain 50 side) + +| Contract | Address | Notes | +|---|---|---| +| Endpoint | `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` | Parent-side endpoint | +| EthereumTrieDB | `0x99B3511A2d315A497C8112C1fdd8D508d4B1E506` | Parent-side endpoint stack | +| MerklePatricia | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | Parent-side endpoint stack | +| CSC for chain 50 registration | `0x3cf12c78b5E52EB802aD4f3b4653c616786b792c` | Registered in `endpointconfig.fragment.chain138.json` | + +### Chain 138 side of XDC Zero pair + +| Contract | Address | Notes | +|---|---|---| +| Endpoint | `0x43F435cDC82e415500c0abcf48261176052CadcA` | Chain 138 endpoint | +| EthereumTrieDB | `0xB7A32E86Fa1533ebb0Ed1D41Ce502110E739E54A` | Chain 138 endpoint stack | +| MerklePatricia | `0xAF12F73f0BCa1E52559Db807A2B438BD14de6B09` | Chain 138 endpoint stack | +| CSC for chain 138 registration | `0x105F8A15b819948a89153505762444Ee9f324684` | Recorded in parent registration fragment | + +### Cronos (chain 25) + +| Contract | Address | Notes | +|---|---|---| +| WETH9 | `0x99B3511A2d315A497C8112C1fdd8D508d4B1E506` | Token inventory in docs | +| WETH10 | `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` | Token inventory in docs | +| LINK | `0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85` | Token inventory in docs | + +### Gnosis (chain 100) + +| Contract | Address | Notes | +|---|---|---| +| CCIPWETH9Bridge | `0x4ab39b5BaB7b463435209A9039bd40Cf241F5a82` | Documented as live in routing status docs | +| CCIPWETH10Bridge | `0xC15ACdBAC59B3C7Cb4Ea4B3D58334A4b143B4b44` | Documented as live in routing status docs | + +### Celo (chain 42220) + +| Contract | Address | Notes | +|---|---|---| +| CCIPWETH9Bridge | `0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04` | Documented as configured/live in routing status docs | +| CCIPWETH10Bridge | `0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08` | Documented as configured/live in routing status docs | + +## Networks with live routing but without committed destination-side contract books here + +| Network | Chain ID | What is evidenced | +|---|---:|---| +| BSC | 56 | Chain 138-side CCIP bridge contracts are live and route-enabled; destination-side bridge address is not committed in this checkout. | +| Polygon | 137 | Same as BSC. | +| Optimism | 10 | Same as BSC. | +| Arbitrum One | 42161 | Same as BSC. | +| Avalanche C-Chain | 43114 | Same as BSC. | +| Base | 8453 | Same as BSC. | + +## Notes on inconsistencies + +- The repo contains multiple historical Chain 138 address sets for `Multicall`, `Oracle Aggregator`, and parts of the PMM stack. This report follows the most recent operational docs where they explicitly correct earlier addresses. +- `smom-dbis-138/config/address-inventory.chain138.json` appears broader but partially lags the corrected PMM addresses recorded in the March 2026 reference docs. +- `config/contract-addresses.conf` is a smaller operational subset used for verification workflows, not a complete inventory. diff --git a/rpc-translator-138/deploy-remote.sh b/rpc-translator-138/deploy-remote.sh index 2aadece5..d46c9e2d 100644 --- a/rpc-translator-138/deploy-remote.sh +++ b/rpc-translator-138/deploy-remote.sh @@ -48,6 +48,19 @@ echo "Target Node: $NODE" echo "Proxmox Host: $PROXMOX_HOST" echo "" +format_proxmox_auth_header() { + local user="$1" + local token_name="$2" + local token_value="$3" + + if [[ "$token_name" == *"!"* ]]; then + printf 'Authorization: PVEAPIToken=%s=%s' "$token_name" "$token_value" + return 0 + fi + + printf 'Authorization: PVEAPIToken=%s!%s=%s' "$user" "$token_name" "$token_value" +} + # Function to call Proxmox API proxmox_api() { local method=$1 @@ -58,7 +71,7 @@ proxmox_api() { local auth_header="" if [ -n "$PROXMOX_TOKEN_VALUE" ]; then - auth_header="Authorization: PVEAPIToken=${PROXMOX_USER}!${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_VALUE}" + auth_header="$(format_proxmox_auth_header "$PROXMOX_USER" "$PROXMOX_TOKEN_NAME" "$PROXMOX_TOKEN_VALUE")" else # Would need to get ticket first for password auth echo "⚠️ Password authentication not yet implemented in this script" diff --git a/scripts/README.md b/scripts/README.md index 3011eeb9..22186a15 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -203,7 +203,7 @@ CT 2301 (besu-rpc-private-1) may fail to start with `lxc.hook.pre-start` due to - **Daily/weekly checks:** `./scripts/maintenance/daily-weekly-checks.sh [daily|weekly|all]` — explorer sync (135), RPC health (136), config API (137). **Cron:** `./scripts/maintenance/schedule-daily-weekly-cron.sh [--install|--show]` (daily 08:00, weekly Sun 09:00). See [OPERATIONAL_RUNBOOKS.md](../docs/03-deployment/OPERATIONAL_RUNBOOKS.md) § Maintenance. - **Start firefly-ali-1 (6201):** `./scripts/maintenance/start-firefly-6201.sh [--dry-run] [--host HOST]` — start CT 6201 on r630-02 when needed (optional ongoing). -- **Config validation (pre-deploy):** `./scripts/validation/validate-config-files.sh` — set `VALIDATE_REQUIRED_FILES` for required paths. **CI / all validation:** `./scripts/verify/run-all-validation.sh [--skip-genesis]` — dependencies + config + optional genesis (no LAN/SSH). +- **Config validation (pre-deploy):** `./scripts/validation/validate-config-files.sh` — set `VALIDATE_REQUIRED_FILES` for required paths. **CI / all validation:** `./scripts/verify/run-all-validation.sh [--skip-genesis]` — dependencies, config files, **cW\* mesh matrix** (merge of `cross-chain-pmm-lps/config/deployment-status.json` and `reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json` when that file exists; no RPC), optional genesis (no LAN/SSH). **Matrix only:** `./scripts/verify/build-cw-mesh-deployment-matrix.sh` — stdout markdown; `--json-out reports/status/cw-mesh-deployment-matrix-latest.json` for machine-readable rows. ### 13. Phase 2, 3 & 4 Deployment Scripts diff --git a/scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh b/scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh index 9ff1f740..b84e15a2 100755 --- a/scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh +++ b/scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh @@ -1,21 +1,19 @@ #!/usr/bin/env bash -# Check deployer wallet balances on ChainID 138 (native ETH + ERC-20: WETH, WETH10, LINK, cUSDT, cUSDC). -# Output half of each balance as the funding plan for the three PMM liquidity pools. +# Check deployer wallet balances on ChainID 138 (native ETH + ERC-20: WETH, WETH10, LINK, cUSDT, cUSDC, cEURT). +# Output half of each balance as the funding plan for the canonical PMM liquidity pools. # # Usage: -# RPC_URL_138=https://rpc-core.d-bis.org ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh +# ./scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh +# RPC_URL_138=https://rpc-core.d-bis.org ./scripts/deployment/... # override # # Or from smom-dbis-138: source .env then run from repo root with RPC_URL_138 set # -# Requires: cast (foundry), jq (optional). RPC_URL_138 must be set and reachable. +# Requires: cast (foundry), jq (optional). Defaults to public Chain 138 HTTP RPC if RPC_URL_138 unset. set -euo pipefail DEPLOYER="${DEPLOYER_ADDRESS:-0x4A666F96fC8764181194447A7dFdb7d471b301C8}" -RPC="${RPC_URL_138:-}" -if [ -z "$RPC" ]; then - echo "ERROR: Set RPC_URL_138 (e.g. https://rpc-core.d-bis.org or http://192.168.11.211:8545)" - exit 1 -fi +CHAIN138_PUBLIC_RPC_DEFAULT="https://rpc-http-pub.d-bis.org" +RPC="${RPC_URL_138:-${CHAIN138_PUBLIC_RPC_URL:-$CHAIN138_PUBLIC_RPC_DEFAULT}}" CHAIN_ID=138 @@ -25,27 +23,48 @@ WETH10="0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f" LINK="0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03" CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22" CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b" +CEURT="0xdf4b71c61E5912712C1Bdd451416B9aC26949d72" USDT_OFFICIAL="0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1" # PMM pool addresses (from LIQUIDITY_POOLS_MASTER_MAP / ADDRESS_MATRIX) -POOL_CUSDTCUSDC="0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8" -POOL_CUSDTUSDT="0x6fc60DEDc92a2047062294488539992710b99D71" -POOL_CUSDCUSDC="0x90bd9Bf18Daa26Af3e814ea224032d015db58Ea5" +POOL_CUSDTCUSDC="0x9e89bAe009adf128782E19e8341996c596ac40dC" +POOL_CUSDTUSDT="0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66" +POOL_CUSDCUSDC="0xc39B7D0F40838cbFb54649d327f49a6DAC964062" +POOL_CUSDTWETH="0xaE38a008Ba4Dbf8D9F141D03e9dC8f7Dbe0ce17c" +POOL_CUSDCWETH="0xAAE68830a55767722618E869882c6Ed064Cc1eb2" +POOL_CEURTWETH="0x4a64c886cedF00db42ea5B946D6b304121ad9529" get_balance() { local addr="$1" - cast call "$addr" "balanceOf(address)(uint256)" "$DEPLOYER" --rpc-url "$RPC" 2>/dev/null || echo "0" + cast call "$addr" "balanceOf(address)(uint256)" "$DEPLOYER" --rpc-url "$RPC" 2>/dev/null | awk '{print $1}' || echo "0" } -get_decimals() { - local addr="$1" - cast call "$addr" "decimals()(uint8)" --rpc-url "$RPC" 2>/dev/null | cast --to-dec 2>/dev/null || echo "18" +half_of() { + python3 - "$1" <<'PY' +import sys +print(int(sys.argv[1]) // 2) +PY +} + +format_units() { + python3 - "$1" "$2" <<'PY' +from decimal import Decimal, getcontext +import sys +getcontext().prec = 80 +raw = Decimal(sys.argv[1]) +decimals = int(sys.argv[2]) +value = raw / (Decimal(10) ** decimals) +if decimals == 18: + print(f"{value:.6f}") +else: + print(f"{value:.2f}") +PY } # Native balance -native_wei=$(cast balance "$DEPLOYER" --rpc-url "$RPC" 2>/dev/null || echo "0") -native_eth=$(awk "BEGIN { printf \"%.6f\", $native_wei / 1e18 }" 2>/dev/null || echo "0") -half_native_wei=$((native_wei / 2)) +native_wei=$(cast balance "$DEPLOYER" --rpc-url "$RPC" 2>/dev/null | awk '{print $1}' || echo "0") +native_eth=$(format_units "$native_wei" 18) +half_native_wei=$(half_of "$native_wei") echo "============================================" echo "Deployer wallet — ChainID 138" @@ -57,27 +76,23 @@ echo "--- Current balances ---" echo " Native ETH: $native_eth ETH (raw: $native_wei wei)" echo "" -RAW_WETH=0; RAW_WETH10=0; RAW_LINK=0; RAW_CUSDT=0; RAW_CUSDC=0 -HALF_WETH=0; HALF_WETH10=0; HALF_LINK=0; HALF_CUSDT=0; HALF_CUSDC=0 +RAW_WETH=0; RAW_WETH10=0; RAW_LINK=0; RAW_CUSDT=0; RAW_CUSDC=0; RAW_CEURT=0 +HALF_WETH=0; HALF_WETH10=0; HALF_LINK=0; HALF_CUSDT=0; HALF_CUSDC=0; HALF_CEURT=0 -for entry in "WETH:$WETH:18" "WETH10:$WETH10:18" "LINK:$LINK:18" "cUSDT:$CUSDT:6" "cUSDC:$CUSDC:6"; do +for entry in "WETH:$WETH:18" "WETH10:$WETH10:18" "LINK:$LINK:18" "cUSDT:$CUSDT:6" "cUSDC:$CUSDC:6" "cEURT:$CEURT:6"; do sym="${entry%%:*}"; rest="${entry#*:}"; addr="${rest%%:*}"; dec="${rest#*:}" raw=$(get_balance "$addr") - half=$((raw / 2)) + half=$(half_of "$raw") case "$sym" in WETH) RAW_WETH=$raw; HALF_WETH=$half ;; WETH10) RAW_WETH10=$raw; HALF_WETH10=$half ;; LINK) RAW_LINK=$raw; HALF_LINK=$half ;; cUSDT) RAW_CUSDT=$raw; HALF_CUSDT=$half ;; cUSDC) RAW_CUSDC=$raw; HALF_CUSDC=$half ;; + cEURT) RAW_CEURT=$raw; HALF_CEURT=$half ;; esac - if [ "$dec" = "18" ]; then - disp=$(awk "BEGIN { printf \"%.6f\", $raw / 1e18 }" 2>/dev/null || echo "0") - half_disp=$(awk "BEGIN { printf \"%.6f\", $half / 1e18 }" 2>/dev/null || echo "0") - else - disp=$(awk "BEGIN { printf \"%.2f\", $raw / 1e$dec }" 2>/dev/null || echo "0") - half_disp=$(awk "BEGIN { printf \"%.2f\", $half / 1e$dec }" 2>/dev/null || echo "0") - fi + disp=$(format_units "$raw" "$dec") + half_disp=$(format_units "$half" "$dec") echo " $sym: $disp (raw: $raw) → half for LP: $half_disp (raw: $half)" done @@ -96,18 +111,36 @@ echo "Pool 3: cUSDC/USDC ($POOL_CUSDCUSDC)" echo " Base (cUSDC): $HALF_CUSDC (decimals 6)" echo " Quote (USDC): use same amount in USDC (official) — check deployer USDC balance separately if needed" echo "" +echo "Pool 4: cUSDT/WETH ($POOL_CUSDTWETH)" +echo " Base (cUSDT): $HALF_CUSDT (decimals 6)" +echo " Quote (WETH): $HALF_WETH (decimals 18)" +echo "" +echo "Pool 5: cUSDC/WETH ($POOL_CUSDCWETH)" +echo " Base (cUSDC): $HALF_CUSDC (decimals 6)" +echo " Quote (WETH): $HALF_WETH (decimals 18)" +echo "" +echo "Pool 6: cEURT/WETH ($POOL_CEURTWETH)" +echo " Base (cEURT): $HALF_CEURT (decimals 6)" +echo " Quote (WETH): $HALF_WETH (decimals 18)" +echo "" echo "--- Env vars for AddLiquidityPMMPoolsChain138 (half of cUSDT/cUSDC) ---" echo "# Add to smom-dbis-138/.env and run: forge script script/dex/AddLiquidityPMMPoolsChain138.s.sol:AddLiquidityPMMPoolsChain138 --rpc-url \$RPC_URL_138 --broadcast --private-key \$PRIVATE_KEY" echo "POOL_CUSDTCUSDC=$POOL_CUSDTCUSDC" echo "POOL_CUSDTUSDT=$POOL_CUSDTUSDT" echo "POOL_CUSDCUSDC=$POOL_CUSDCUSDC" +echo "POOL_CUSDTWETH=$POOL_CUSDTWETH" +echo "POOL_CUSDCWETH=$POOL_CUSDCWETH" +echo "POOL_CEURTWETH=$POOL_CEURTWETH" echo "ADD_LIQUIDITY_BASE_AMOUNT=$HALF_CUSDT" echo "ADD_LIQUIDITY_QUOTE_AMOUNT=$HALF_CUSDC" echo "# For pool cUSDT/cUSDC only (base=cUSDT, quote=cUSDC). For cUSDT/USDT and cUSDC/USDC use per-pool vars:" echo "# ADD_LIQUIDITY_CUSDTUSDT_BASE=$HALF_CUSDT ADD_LIQUIDITY_CUSDTUSDT_QUOTE=" echo "# ADD_LIQUIDITY_CUSDCUSDC_BASE=$HALF_CUSDC ADD_LIQUIDITY_CUSDCUSDC_QUOTE=" +echo "# ADD_LIQUIDITY_CUSDTWETH_BASE=$HALF_CUSDT ADD_LIQUIDITY_CUSDTWETH_QUOTE=$HALF_WETH" +echo "# ADD_LIQUIDITY_CUSDCWETH_BASE=$HALF_CUSDC ADD_LIQUIDITY_CUSDCWETH_QUOTE=$HALF_WETH" +echo "# ADD_LIQUIDITY_CEURTWETH_BASE=$HALF_CEURT ADD_LIQUIDITY_CEURTWETH_QUOTE=$HALF_WETH" echo "" echo "--- Reserve ---" -echo " Keep half of native ETH for gas. Half for LP (if wrapping to WETH for a pool): $((half_native_wei / 2)) wei." +echo " Keep half of native ETH for gas. Half for LP (if wrapping to WETH for a pool): $(half_of "$half_native_wei") wei." echo " WETH/LINK: half amounts above can be reserved for other use or future pools." echo "============================================" diff --git a/scripts/deployment/check-deployer-lp-balances.py b/scripts/deployment/check-deployer-lp-balances.py new file mode 100755 index 00000000..5501a6fa --- /dev/null +++ b/scripts/deployment/check-deployer-lp-balances.py @@ -0,0 +1,516 @@ +#!/usr/bin/env python3 +""" +Enumerate PMM pool addresses (deployment-status.json) and Uniswap V2 pair addresses +(pair-discovery JSON), then report deployer balances with **LP token resolution**. + +**Uniswap V2:** The pair contract *is* the LP ERC-20 (`lpToken` = pair). + +**DODO PMM (DVM / IDODOPMMPool):** Official DODO Vending Machine pools inherit ERC-20; +`balanceOf(pool)` is the LP share balance — the pool address **is** the LP token. + +**DODO V1-style PMM:** Some pools expose ``_BASE_CAPITAL_TOKEN_`` / ``_QUOTE_CAPITAL_TOKEN_``; +LP exposure may be split across two capital ERC-20s (balances reported separately). + +When ``balanceOf(pool)`` fails (RPC flake, proxy, or non-DVM), this script optionally +re-probes with DODO view calls and alternate public RPCs (see ``--resolve-dodo``). + +Deployer: ``--deployer`` / ``DEPLOYER_ADDRESS`` / ``PRIVATE_KEY`` (see below). + +Usage: + python3 scripts/deployment/check-deployer-lp-balances.py --summary-only + python3 scripts/deployment/check-deployer-lp-balances.py --resolve-dodo --json-out /tmp/lp.json + +Requires: ``cast`` (Foundry). Environment: ``DEPLOYER_ADDRESS``, ``PRIVATE_KEY``, etc. +""" +from __future__ import annotations + +import argparse +import json +import os +import re +import subprocess +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +DEFAULT_STATUS = ROOT / "cross-chain-pmm-lps" / "config" / "deployment-status.json" +DEFAULT_DISCOVERY = ROOT / "reports" / "extraction" / "promod-uniswap-v2-live-pair-discovery-latest.json" +DEFAULT_ENV = ROOT / "smom-dbis-138" / ".env" + +ZERO = "0x0000000000000000000000000000000000000000" + +DEFAULT_RPC: dict[str, str] = { + "1": "https://eth.llamarpc.com", + "10": "https://mainnet.optimism.io", + "25": "https://evm.cronos.org", + "56": "https://bsc-dataseed.binance.org", + "100": "https://rpc.gnosischain.com", + "137": "https://polygon-rpc.com", + "8453": "https://mainnet.base.org", + "42161": "https://arbitrum-one.publicnode.com", + "42220": "https://forno.celo.org", + "43114": "https://avalanche-c-chain.publicnode.com", + "1111": "https://api.wemix.com", +} + +# Extra public RPCs (retry when primary fails — connection resets, rate limits). +RPC_FALLBACKS: dict[str, list[str]] = { + "1": [ + "https://ethereum.publicnode.com", + "https://1rpc.io/eth", + "https://rpc.ankr.com/eth", + ], + "137": ["https://polygon-bor.publicnode.com", "https://1rpc.io/matic"], + "42161": ["https://arbitrum.llamarpc.com"], + "56": ["https://bsc.publicnode.com"], + "8453": ["https://base.llamarpc.com"], + "10": ["https://optimism.publicnode.com"], +} + +RPC_KEYS: dict[str, list[str]] = { + "1": ["ETHEREUM_MAINNET_RPC", "ETH_MAINNET_RPC_URL"], + "10": ["OPTIMISM_RPC_URL", "OPTIMISM_MAINNET_RPC"], + "25": ["CRONOS_RPC_URL", "CRONOS_MAINNET_RPC"], + "56": ["BSC_RPC_URL", "BSC_MAINNET_RPC"], + "100": ["GNOSIS_RPC_URL", "GNOSIS_MAINNET_RPC", "GNOSIS_RPC"], + "137": ["POLYGON_MAINNET_RPC", "POLYGON_RPC_URL"], + "138": ["RPC_URL_138", "CHAIN_138_RPC_URL"], + "8453": ["BASE_RPC_URL", "BASE_MAINNET_RPC"], + "42161": ["ARBITRUM_RPC_URL", "ARBITRUM_MAINNET_RPC"], + "42220": ["CELO_RPC_URL", "CELO_MAINNET_RPC", "CELO_RPC"], + "43114": ["AVALANCHE_RPC_URL", "AVALANCHE_MAINNET_RPC"], + "1111": ["WEMIX_RPC_URL", "WEMIX_RPC"], + "651940": ["ALL_MAINNET_RPC", "CHAIN_651940_RPC_URL"], +} + + +def load_dotenv(path: Path) -> dict[str, str]: + out: dict[str, str] = {} + if not path.is_file(): + return out + for raw in path.read_text().splitlines(): + line = raw.strip() + if not line or line.startswith("#") or "=" not in line: + continue + k, v = line.split("=", 1) + out[k.strip()] = v.strip().strip('"').strip("'") + return out + + +def resolve(env: dict[str, str], key: str, default: str = "") -> str: + v = env.get(key, "") + if v.startswith("${") and ":-" in v: + inner = v[2:-1] + alt = inner.split(":-", 1) + return env.get(alt[0], alt[1] if len(alt) > 1 else "") + return v or default + + +def rpc_for(env: dict[str, str], cid: str) -> str: + for k in RPC_KEYS.get(cid, []): + v = resolve(env, k, "") + if v and not v.startswith("$"): + return v + return DEFAULT_RPC.get(cid, "") or ( + resolve(env, "RPC_URL_138", "http://127.0.0.1:8545") if cid == "138" else "" + ) + + +def rpc_chain_list(env: dict[str, str], cid: str) -> list[str]: + primary = rpc_for(env, cid) + seen: set[str] = set() + out: list[str] = [] + for u in [primary] + RPC_FALLBACKS.get(cid, []): + if u and u not in seen: + seen.add(u) + out.append(u) + return out + + +def deployer_address(env: dict[str, str], override: str | None) -> str: + if override: + return override + for k in ("DEPLOYER_ADDRESS", "DEPLOYER"): + v = (os.environ.get(k) or "").strip() + if v: + return v + pk = env.get("PRIVATE_KEY", "") or (os.environ.get("PRIVATE_KEY") or "").strip() + if pk: + r = subprocess.run( + ["cast", "wallet", "address", pk], + capture_output=True, + text=True, + check=False, + ) + if r.returncode == 0 and r.stdout.strip(): + return r.stdout.strip() + return (env.get("DEPLOYER_ADDRESS") or "").strip() + + +def parse_uint(s: str) -> int: + return int(s.strip().split()[0]) + + +def parse_address_line(s: str) -> str | None: + s = s.strip() + if not s: + return None + m = re.search(r"(0x[a-fA-F0-9]{40})", s) + return m.group(1) if m else None + + +def cast_call(to: str, sig: str, rpc: str) -> tuple[str, str]: + cmd = ["cast", "call", to, sig, "--rpc-url", rpc] + r = subprocess.run(cmd, capture_output=True, text=True) + if r.returncode != 0: + return "err", (r.stderr or r.stdout or "").strip()[:400] + return "ok", r.stdout.strip() + + +def erc20_balance(token: str, holder: str, rpc: str) -> tuple[str, int | str]: + cmd = ["cast", "call", token, "balanceOf(address)(uint256)", holder, "--rpc-url", rpc] + r = subprocess.run(cmd, capture_output=True, text=True) + if r.returncode != 0: + return "err", (r.stderr or r.stdout or "").strip()[:400] + try: + return "ok", parse_uint(r.stdout) + except (ValueError, IndexError): + return "err", f"parse:{r.stdout[:120]}" + + +def erc20_balance_any_rpc( + token: str, holder: str, rpcs: list[str] +) -> tuple[str, int | str, str]: + """Returns (status, value|err, rpc_used).""" + last_err = "" + for rpc in rpcs: + st, val = erc20_balance(token, holder, rpc) + if st == "ok": + return st, val, rpc + last_err = str(val) + return "err", last_err, rpcs[0] if rpcs else "" + + +def resolve_pmm_row( + pool: str, + deployer: str, + rpcs: list[str], + do_resolve_dodo: bool, +) -> dict: + """ + Build a result dict with lp resolution fields. + Tries: pool ERC20 balance (any RPC) -> DODO _BASE/_QUOTE -> capital tokens. + """ + rec: dict = { + "contract": pool, + "lpTokenAddress": pool, + "lpResolution": "unknown", + "dodoBaseToken": None, + "dodoQuoteToken": None, + "lpBalances": [], + "balanceRaw": 0, + "status": "pending", + "error": None, + "rpcUsed": rpcs[0] if rpcs else None, + } + + st, val, used = erc20_balance_any_rpc(pool, deployer, rpcs) + rec["rpcUsed"] = used + if st == "ok": + rec["status"] = "ok" + rec["lpResolution"] = "dvm_or_erc20_pool" + rec["balanceRaw"] = int(val) + rec["lpBalances"] = [ + { + "role": "lp_erc20", + "token": pool, + "raw": int(val), + "note": "balanceOf(pool): DVM LP shares are usually the pool contract itself", + } + ] + return rec + + rec["error"] = str(val) + if not do_resolve_dodo: + rec["status"] = "erc20_error" + rec["lpResolution"] = "unresolved_pass_resolve_dodo" + return rec + + base_tok: str | None = None + quote_tok: str | None = None + for rpc in rpcs: + stb, outb = cast_call(pool, "_BASE_TOKEN_()(address)", rpc) + if stb == "ok": + base_tok = parse_address_line(outb) + rec["rpcUsed"] = rpc + break + if base_tok: + rec["dodoBaseToken"] = base_tok + for rpc in rpcs: + stq, outq = cast_call(pool, "_QUOTE_TOKEN_()(address)", rpc) + if stq == "ok": + quote_tok = parse_address_line(outq) + rec["dodoQuoteToken"] = quote_tok + break + + # Retry pool balanceOf after confirming DVM interface (fresh RPC may fix flake) + st2, val2, used2 = erc20_balance_any_rpc(pool, deployer, rpcs) + if st2 == "ok": + rec["status"] = "ok" + rec["lpResolution"] = "dvm_erc20_pool_after_probe" + rec["balanceRaw"] = int(val2) + rec["rpcUsed"] = used2 + rec["error"] = None + rec["lpBalances"] = [ + { + "role": "lp_erc20", + "token": pool, + "raw": int(val2), + "note": "balanceOf(pool) succeeded after _BASE_TOKEN_ probe + RPC retry", + } + ] + return rec + + capital_balances: list[dict] = [] + for cap_sig, role in ( + ("_BASE_CAPITAL_TOKEN_()(address)", "base_capital"), + ("_QUOTE_CAPITAL_TOKEN_()(address)", "quote_capital"), + ): + tok_a: str | None = None + for rpc in rpcs: + stc, outc = cast_call(pool, cap_sig, rpc) + if stc == "ok": + tok_a = parse_address_line(outc) + if tok_a and tok_a != ZERO: + bst, bval, bused = erc20_balance_any_rpc(tok_a, deployer, rpcs) + if bst == "ok": + capital_balances.append( + { + "role": role, + "token": tok_a, + "raw": int(bval), + "note": f"DODO V1-style {cap_sig.split('(')[0]} balanceOf", + } + ) + break + + if capital_balances: + rec["status"] = "ok" + rec["lpResolution"] = "v1_capital_tokens" + rec["lpTokenAddress"] = pool + rec["lpBalances"] = capital_balances + rec["balanceRaw"] = sum(x["raw"] for x in capital_balances) + rec["error"] = None + return rec + + if base_tok: + rec["lpResolution"] = "dvm_interface_no_balance" + rec["status"] = "erc20_error" + rec["error"] = ( + f"Pool responds as DVM (_BASE_TOKEN_={base_tok}) but balanceOf(pool) failed: {rec.get('error', '')[:200]}" + ) + else: + rec["status"] = "erc20_error" + rec["lpResolution"] = "unresolved" + return rec + + +def collect_entries(status_path: Path, discovery_path: Path) -> list[tuple]: + status = json.loads(status_path.read_text()) + rows: list[tuple] = [] + for cid, ch in (status.get("chains") or {}).items(): + name = ch.get("name", cid) + for pool in (ch.get("pmmPools") or []) + (ch.get("pmmPoolsVolatile") or []) + (ch.get("gasPmmPools") or []): + addr = pool.get("poolAddress") or "" + if not addr or addr == ZERO: + continue + label = f"{pool.get('base')}/{pool.get('quote')}" + rows.append((cid, name, "PMM", label, addr)) + if discovery_path.is_file(): + disc = json.loads(discovery_path.read_text()) + for ent in disc.get("entries") or []: + cid = str(ent.get("chain_id")) + name = ent.get("network", cid) + for pr in ent.get("pairsChecked") or []: + addr = pr.get("poolAddress") or "" + if not addr or addr == ZERO: + continue + label = f"{pr.get('base')}/{pr.get('quote')}" + rows.append((cid, name, "UniV2", label, addr)) + seen: set[tuple[str, str]] = set() + out: list[tuple] = [] + for row in rows: + k = (row[0], row[4].lower()) + if k in seen: + continue + seen.add(k) + out.append(row) + return out + + +def main() -> int: + ap = argparse.ArgumentParser( + description="Deployer LP balances with DODO / Uni V2 LP token resolution." + ) + ap.add_argument("--status", type=Path, default=DEFAULT_STATUS) + ap.add_argument("--discovery", type=Path, default=DEFAULT_DISCOVERY) + ap.add_argument("--env", type=Path, default=DEFAULT_ENV) + ap.add_argument("--deployer", default=None) + ap.add_argument("--summary-only", action="store_true") + ap.add_argument("--only-nonzero", action="store_true") + ap.add_argument( + "--no-resolve-dodo", + action="store_true", + help="Skip DODO _BASE_TOKEN_ / capital-token probes and extra RPC fallbacks (faster; more erc20_error).", + ) + ap.add_argument( + "--chain-id", + type=int, + default=None, + metavar="N", + help="Only check this chain (e.g. 1 for Ethereum). Default: all chains.", + ) + ap.add_argument( + "--json-out", + type=Path, + default=None, + help="Full report JSON.", + ) + ap.add_argument( + "--errors-json", + type=Path, + default=None, + help="Rows that remain erc20_error or no_rpc.", + ) + args = ap.parse_args() + + env = load_dotenv(args.env) + dep = deployer_address(env, args.deployer) + if not dep: + print("No deployer: set PRIVATE_KEY or DEPLOYER_ADDRESS in .env or pass --deployer", file=sys.stderr) + return 1 + + rows = collect_entries(args.status, args.discovery) + if args.chain_id is not None: + want = str(args.chain_id) + rows = [r for r in rows if r[0] == want] + results: list[dict] = [] + nonzero: list[dict] = [] + errors: list[dict] = [] + + for cid, name, venue, label, addr in sorted(rows, key=lambda x: (int(x[0]), x[2], x[3])): + rpcs = rpc_chain_list(env, cid) + base_rec: dict = { + "chainId": cid, + "network": name, + "venue": venue, + "pair": label, + "contract": addr, + } + if not rpcs or not rpcs[0]: + base_rec["status"] = "no_rpc" + base_rec["lpResolution"] = "no_rpc" + errors.append(base_rec) + results.append(base_rec) + continue + + if venue == "UniV2": + st, val, used = erc20_balance_any_rpc(addr, dep, rpcs) + r = { + **base_rec, + "lpTokenAddress": addr, + "lpResolution": "uniswap_v2_pair", + "rpcUsed": used, + "lpBalances": [ + { + "role": "pair_lp", + "token": addr, + "raw": int(val) if st == "ok" else 0, + "note": "Uniswap V2 pair contract is the LP ERC-20", + } + ], + "balanceRaw": int(val) if st == "ok" else 0, + "status": "ok" if st == "ok" else "erc20_error", + "error": None if st == "ok" else str(val), + "dodoBaseToken": None, + "dodoQuoteToken": None, + } + if st != "ok": + r["status"] = "erc20_error" + errors.append(r) + elif r["balanceRaw"] > 0: + nonzero.append(r) + results.append(r) + continue + + # PMM + r = {**base_rec, **resolve_pmm_row(addr, dep, rpcs, not args.no_resolve_dodo)} + if r.get("status") == "ok" and r.get("balanceRaw", 0) > 0: + nonzero.append(r) + if r.get("status") != "ok": + errors.append(r) + results.append(r) + + # Summary stats + by_res: dict[str, int] = {} + for r in results: + lr = r.get("lpResolution") or "unknown" + by_res[lr] = by_res.get(lr, 0) + 1 + + print(f"Deployer: {dep}") + print(f"Contracts checked: {len(rows)}") + print(f"Non-zero LP exposure (sum of components): {len(nonzero)}") + print(f"Errors / no RPC: {len(errors)}") + print(f"Resolution breakdown: {by_res}") + if args.no_resolve_dodo: + print("(Re-run without --no-resolve-dodo to probe DODO interfaces + RPC fallbacks.)") + + if not args.summary_only: + print("\n=== Non-zero LP / capital balances ===") + for r in nonzero: + lp = r.get("lpTokenAddress", r.get("contract")) + print( + f" chain {r['chainId']} {r['venue']} {r['pair']} | lpToken={lp} | " + f"resolution={r.get('lpResolution')} | raw_total={r.get('balanceRaw')}" + ) + for leg in r.get("lpBalances") or []: + if leg.get("raw", 0) > 0: + print(f" - {leg.get('role')} {leg.get('token')}: {leg.get('raw')} ({leg.get('note', '')[:60]})") + if not args.only_nonzero and errors: + print("\nSample unresolved / errors:") + for r in errors[:12]: + e = r.get("error", r.get("status", "")) + print( + f" chain {r['chainId']} {r['venue']} {r['pair']} | " + f"{r.get('lpResolution', '')}: {str(e)[:120]}" + ) + + if args.json_out: + payload = { + "deployer": dep, + "resolveDodo": not args.no_resolve_dodo, + "summary": { + "checked": len(rows), + "nonzero": len(nonzero), + "errors": len(errors), + "byLpResolution": by_res, + }, + "nonzero": nonzero, + "all": results, + } + args.json_out.parent.mkdir(parents=True, exist_ok=True) + args.json_out.write_text(json.dumps(payload, indent=2) + "\n") + print(f"Wrote {args.json_out}") + + if args.errors_json: + err_only = [r for r in results if r.get("status") in ("no_rpc", "erc20_error")] + args.errors_json.parent.mkdir(parents=True, exist_ok=True) + args.errors_json.write_text(json.dumps(err_only, indent=2) + "\n") + print(f"Wrote {args.errors_json} ({len(err_only)} rows)") + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/deployment/check-deployer-nonce-and-balance.sh b/scripts/deployment/check-deployer-nonce-and-balance.sh index ba25eae0..2699b822 100755 --- a/scripts/deployment/check-deployer-nonce-and-balance.sh +++ b/scripts/deployment/check-deployer-nonce-and-balance.sh @@ -1,31 +1,48 @@ #!/usr/bin/env bash -# Check deployer nonce and balance on Mainnet, Cronos, and Arbitrum. +# Check deployer nonce and balance on Mainnet, Cronos, and Arbitrum (public RPCs by default). # Use to diagnose "nonce too high" / "invalid nonce" and "insufficient funds" before retrying cW* deploy. # Usage: ./scripts/deployment/check-deployer-nonce-and-balance.sh -# Requires: smom-dbis-138/.env with PRIVATE_KEY, ETHEREUM_MAINNET_RPC, CRONOS_RPC_URL, ARBITRUM_MAINNET_RPC +# Requires: PRIVATE_KEY (repo root .env, smom-dbis-138/.env, or ~/.secure-secrets/private-keys.env via load-project-env). +# Optional: ETHEREUM_MAINNET_RPC, CRONOS_RPC_URL, ARBITRUM_MAINNET_RPC — if unset, uses public endpoints +# (override per chain with ETHEREUM_MAINNET_PUBLIC_RPC / CRONOS_MAINNET_PUBLIC_RPC / ARBITRUM_MAINNET_PUBLIC_RPC). set -euo pipefail + SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" -SMOM="${PROJECT_ROOT}/smom-dbis-138" -[[ -f "$SMOM/.env" ]] || { echo "Missing $SMOM/.env" >&2; exit 1; } -set -a -source "$SMOM/.env" -set +a +# shellcheck disable=SC1091 +source "${PROJECT_ROOT}/scripts/lib/load-project-env.sh" + +# Defaults when .env does not set provider URLs (read-only public RPCs). +PUBLIC_ETHEREUM_RPC="${ETHEREUM_MAINNET_PUBLIC_RPC:-https://ethereum-rpc.publicnode.com}" +PUBLIC_CRONOS_RPC="${CRONOS_MAINNET_PUBLIC_RPC:-https://evm.cronos.org}" +PUBLIC_ARBITRUM_RPC="${ARBITRUM_MAINNET_PUBLIC_RPC:-https://arbitrum-one-rpc.publicnode.com}" DEPLOYER="" if [[ -n "${PRIVATE_KEY:-}" ]]; then DEPLOYER=$(cast wallet address "$PRIVATE_KEY" 2>/dev/null || true) fi -[[ -z "$DEPLOYER" ]] && { echo "Could not derive deployer address (set PRIVATE_KEY in $SMOM/.env)" >&2; exit 1; } +[[ -z "$DEPLOYER" ]] && { + echo "Could not derive deployer address. Set PRIVATE_KEY in ${PROJECT_ROOT}/.env, smom-dbis-138/.env, or ~/.secure-secrets/private-keys.env" >&2 + exit 1 +} echo "Deployer address: $DEPLOYER" echo "" for label in "Mainnet (1)" "Cronos (25)" "Arbitrum (42161)"; do case "$label" in - "Mainnet (1)") RPC="${ETHEREUM_MAINNET_RPC:-$ETH_MAINNET_RPC_URL}"; CHAIN=1 ;; - "Cronos (25)") RPC="${CRONOS_RPC_URL:-$CRONOS_RPC}"; CHAIN=25 ;; - "Arbitrum (42161)") RPC="${ARBITRUM_MAINNET_RPC:-$ARBITRUM_MAINNET_RPC_URL}"; CHAIN=42161 ;; + "Mainnet (1)") + RPC="${ETHEREUM_MAINNET_RPC:-${ETH_MAINNET_RPC_URL:-$PUBLIC_ETHEREUM_RPC}}" + CHAIN=1 + ;; + "Cronos (25)") + RPC="${CRONOS_RPC_URL:-${CRONOS_RPC:-$PUBLIC_CRONOS_RPC}}" + CHAIN=25 + ;; + "Arbitrum (42161)") + RPC="${ARBITRUM_MAINNET_RPC:-${ARBITRUM_MAINNET_RPC_URL:-$PUBLIC_ARBITRUM_RPC}}" + CHAIN=42161 + ;; esac [[ -z "$RPC" ]] && { echo "$label: no RPC set, skip"; continue; } NONCE=$(cast nonce "$DEPLOYER" --rpc-url "$RPC" 2>/dev/null || echo "?") diff --git a/scripts/deployment/deploy-atomic-swap-dapp-5801.sh b/scripts/deployment/deploy-atomic-swap-dapp-5801.sh new file mode 100644 index 00000000..3c28ff5c --- /dev/null +++ b/scripts/deployment/deploy-atomic-swap-dapp-5801.sh @@ -0,0 +1,144 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +SUBMODULE_ROOT="$PROJECT_ROOT/atomic-swap-dapp" +source "$PROJECT_ROOT/config/ip-addresses.conf" 2>/dev/null || true +PROXMOX_HOST="${PROXMOX_HOST:-${PROXMOX_HOST_R630_02:-192.168.11.12}}" +VMID="${VMID:-5801}" +DEPLOY_ROOT="${DEPLOY_ROOT:-/var/www/atomic-swap}" +TMP_ARCHIVE="/tmp/atomic-swap-dapp-5801.tgz" +DIST_DIR="$SUBMODULE_ROOT/dist" +SKIP_BUILD="${SKIP_BUILD:-0}" + +cleanup() { + rm -f "$TMP_ARCHIVE" +} + +trap cleanup EXIT + +if [ ! -d "$SUBMODULE_ROOT" ]; then + echo "Missing submodule at $SUBMODULE_ROOT" >&2 + exit 1 +fi + +cd "$SUBMODULE_ROOT" +if [ "$SKIP_BUILD" != "1" ]; then + npm run sync:ecosystem >/dev/null + npm run validate:manifest >/dev/null + npm run build >/dev/null +fi + +for required_path in \ + "$DIST_DIR/index.html" \ + "$DIST_DIR/data/ecosystem-manifest.json" \ + "$DIST_DIR/data/live-route-registry.json" \ + "$DIST_DIR/data/deployed-venue-inventory.json"; do + if [ ! -f "$required_path" ]; then + echo "Missing required build artifact: $required_path" >&2 + exit 1 + fi +done + +jq -e '.supportedNetworks[] | select(.chainId == 138) | .deployedVenuePoolCount >= 19 and .publicRoutingPoolCount >= 19' \ + "$DIST_DIR/data/ecosystem-manifest.json" >/dev/null +jq -e '.liveSwapRoutes | length >= 19' "$DIST_DIR/data/live-route-registry.json" >/dev/null +jq -e '.liveBridgeRoutes | length >= 12' "$DIST_DIR/data/live-route-registry.json" >/dev/null +jq -e '.networks[] | select(.chainId == 138) | .venueCounts.deployedVenuePoolCount >= 19 and .summary.totalVenues >= 19' \ + "$DIST_DIR/data/deployed-venue-inventory.json" >/dev/null + +rm -f "$TMP_ARCHIVE" +tar -C "$SUBMODULE_ROOT" -czf "$TMP_ARCHIVE" dist + +scp -q -o StrictHostKeyChecking=accept-new "$TMP_ARCHIVE" "root@$PROXMOX_HOST:/tmp/atomic-swap-dapp-5801.tgz" + +ssh -o StrictHostKeyChecking=accept-new "root@$PROXMOX_HOST" " + pct push $VMID /tmp/atomic-swap-dapp-5801.tgz /tmp/atomic-swap-dapp-5801.tgz + pct exec $VMID -- bash -lc ' + set -euo pipefail + mkdir -p \"$DEPLOY_ROOT\" + find \"$DEPLOY_ROOT\" -mindepth 1 -maxdepth 1 -exec rm -rf {} + + rm -rf /tmp/dist + tar -xzf /tmp/atomic-swap-dapp-5801.tgz -C /tmp + cp -R /tmp/dist/. \"$DEPLOY_ROOT/\" + mkdir -p /var/cache/nginx/atomic-swap-api + cat > /etc/nginx/conf.d/atomic-swap-api-cache.conf <<\"EOF\" +proxy_cache_path /var/cache/nginx/atomic-swap-api + levels=1:2 + keys_zone=atomic_swap_api_cache:10m + max_size=256m + inactive=30m + use_temp_path=off; +EOF + cat > /etc/nginx/sites-available/atomic-swap <<\"EOF\" +server { + listen 80 default_server; + listen [::]:80 default_server; + server_name _; + + root $DEPLOY_ROOT; + index index.html; + + location / { + try_files \$uri \$uri/ /index.html; + } + + location = /index.html { + add_header Cache-Control \"no-store, no-cache, must-revalidate\" always; + } + + location /data/ { + add_header Cache-Control \"no-store, no-cache, must-revalidate\" always; + } + + location /assets/ { + add_header Cache-Control \"public, max-age=31536000, immutable\" always; + } + + location /api/v1/ { + proxy_pass https://explorer.d-bis.org/api/v1/; + proxy_ssl_server_name on; + proxy_set_header Host explorer.d-bis.org; + proxy_set_header X-Forwarded-Proto \$scheme; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host \$host; + proxy_http_version 1.1; + proxy_buffering on; + proxy_cache atomic_swap_api_cache; + proxy_cache_methods GET HEAD; + proxy_cache_key \"\$scheme\$proxy_host\$request_uri\"; + proxy_cache_lock on; + proxy_cache_lock_timeout 10s; + proxy_cache_lock_age 10s; + proxy_cache_background_update on; + proxy_cache_revalidate on; + proxy_cache_valid 200 10s; + proxy_cache_valid 404 1s; + proxy_cache_valid any 0; + proxy_cache_use_stale error timeout invalid_header updating http_429 http_500 http_502 http_503 http_504; + add_header X-Atomic-Swap-Cache \$upstream_cache_status always; + } +} +EOF + ln -sfn /etc/nginx/sites-available/atomic-swap /etc/nginx/sites-enabled/atomic-swap + rm -f /etc/nginx/sites-enabled/default + rm -f /etc/nginx/sites-enabled/dapp + nginx -t + systemctl reload nginx + curl -fsS http://127.0.0.1/index.html >/dev/null + curl -fsS http://127.0.0.1/data/ecosystem-manifest.json >/dev/null + curl -fsS http://127.0.0.1/data/live-route-registry.json >/dev/null + curl -fsS http://127.0.0.1/data/deployed-venue-inventory.json >/dev/null + rm -rf /tmp/dist /tmp/atomic-swap-dapp-5801.tgz +' + rm -f /tmp/atomic-swap-dapp-5801.tgz +" + +curl -fsS https://atomic-swap.defi-oracle.io/ >/dev/null +curl -fsS https://atomic-swap.defi-oracle.io/data/ecosystem-manifest.json | jq -e '.supportedNetworks[] | select(.chainId == 138) | .deployedVenuePoolCount >= 19 and .publicRoutingPoolCount >= 19' >/dev/null +curl -fsS https://atomic-swap.defi-oracle.io/data/live-route-registry.json | jq -e '.liveSwapRoutes | length >= 19' >/dev/null +curl -fsS https://atomic-swap.defi-oracle.io/data/live-route-registry.json | jq -e '.liveBridgeRoutes | length >= 12' >/dev/null +curl -fsS https://atomic-swap.defi-oracle.io/data/deployed-venue-inventory.json | jq -e '.networks[] | select(.chainId == 138) | .venueCounts.deployedVenuePoolCount >= 19 and .summary.totalVenues >= 19' >/dev/null + +echo "Deployed atomic-swap-dapp to VMID $VMID via $PROXMOX_HOST" diff --git a/scripts/deployment/price-cw-token-mainnet.sh b/scripts/deployment/price-cw-token-mainnet.sh new file mode 100755 index 00000000..ac65b0d7 --- /dev/null +++ b/scripts/deployment/price-cw-token-mainnet.sh @@ -0,0 +1,191 @@ +#!/usr/bin/env bash +# Price cW* wrapped stables on Ethereum Mainnet using: +# (1) Accounting peg assumption ($1 per token for USD-stable wrappers — document in reporting) +# (2) DODO PMM integration: getPoolPrice / getPoolPriceOrOracle (1e18 = $1 when oracle aligned) +# (3) Implied ratio from pool vault reserves (USDC per cWUSDT if base/quote match manifest) +# (4) Optional Chainlink ETH/USD (macro reference only; not cW* direct) +# +# Usage (from repo root): +# source scripts/lib/load-project-env.sh +# ./scripts/deployment/price-cw-token-mainnet.sh +# ./scripts/deployment/price-cw-token-mainnet.sh --json +# POOL_CWUSDT_USDC_MAINNET=0x... ./scripts/deployment/price-cw-token-mainnet.sh +# +# Requires: cast (Foundry), jq (for --json) + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +# shellcheck disable=SC1091 +[[ -f "$PROJECT_ROOT/scripts/lib/load-project-env.sh" ]] && source "$PROJECT_ROOT/scripts/lib/load-project-env.sh" + +JSON=false +for a in "$@"; do [[ "$a" == "--json" ]] && JSON=true; done + +RPC="${ETHEREUM_MAINNET_RPC:-https://ethereum-rpc.publicnode.com}" +INT="${DODO_PMM_INTEGRATION_MAINNET:-0xa9F284eD010f4F7d7F8F201742b49b9f58e29b84}" +CWUSDT="${CWUSDT_MAINNET:-0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE}" +# Mainnet canonical USDC (do not use Chain 138 OFFICIAL_USDC_ADDRESS for this script) +USDC_MAINNET_CANON="${USDC_MAINNET:-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}" +USDC_OFFICIAL="${USDC_MAINNET_CANON}" +POOL="${POOL_CWUSDT_USDC_MAINNET:-0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2}" +# Chainlink ETH/USD — verified on mainnet; optional macro reference +CHAINLINK_ETH_USD="${CHAINLINK_ETH_USD_FEED:-0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419}" + +first_word() { + awk '{print $1}' | head -1 +} + +to_dec() { + local x="$1" + [[ -z "$x" ]] && echo "" && return + echo "$x" | sed 's/\[.*//g' | awk '{print $1}' +} + +get_decimals() { + local tok="$1" + to_dec "$(cast call "$tok" "decimals()(uint8)" --rpc-url "$RPC" 2>/dev/null || echo "")" +} + +price_oracle_or_mid() { + local pool="$1" + local out + out=$(cast call "$INT" "getPoolPriceOrOracle(address)(uint256)" "$pool" --rpc-url "$RPC" 2>/dev/null | first_word) || true + if [[ -n "$out" && "$out" != *Error* ]]; then + printf '%s|%s\n' "getPoolPriceOrOracle" "$out" + return + fi + out=$(cast call "$INT" "getPoolPrice(address)(uint256)" "$pool" --rpc-url "$RPC" 2>/dev/null | first_word) || true + printf '%s|%s\n' "getPoolPrice" "$out" +} + +parse_two_uints() { + python3 -c " +import re, sys +s = sys.stdin.read() +# cast may print scientific notation for large numbers +parts = re.findall(r'-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?', s) +if len(parts) >= 2: + print(int(float(parts[0])), int(float(parts[1]))) +" +} + +reserves() { + local pool="$1" + cast call "$INT" "getPoolReserves(address)(uint256,uint256)" "$pool" --rpc-url "$RPC" 2>/dev/null | parse_two_uints +} + +eth_usd_chainlink() { + local feed="$1" + [[ -z "$feed" ]] && { echo ""; return; } + local code + code=$(cast code "$feed" --rpc-url "$RPC" 2>/dev/null || true) + [[ -z "$code" || "$code" == "0x" ]] && { echo ""; return; } + cast call "$feed" "latestRoundData()(uint80,int256,uint256,uint256,uint80)" --rpc-url "$RPC" 2>/dev/null +} + +db=$(get_decimals "$CWUSDT") +dq=$(get_decimals "$USDC_OFFICIAL") +read -r br_raw qr_raw < <(reserves "$POOL" | awk '{print $1, $2}') +br_raw=$(to_dec "${br_raw:-0}") +qr_raw=$(to_dec "${qr_raw:-0}") + +_pom=$(price_oracle_or_mid "$POOL") +pm_method="${_pom%%|*}" +price_raw=$(to_dec "${_pom#*|}") + +# price from integration is 1e18-scaled "USD" in docs +price_human="" +if [[ -n "$price_raw" && "$price_raw" =~ ^[0-9]+$ ]]; then + price_human=$(python3 -c "print(int('$price_raw')/1e18)" 2>/dev/null || echo "") +fi + +implied_usdc_per_cwusdt="" +if [[ -n "$br_raw" && -n "$qr_raw" && "$br_raw" != "0" && -n "$db" && -n "$dq" ]]; then + implied_usdc_per_cwusdt=$(python3 -c "br=int('$br_raw'); qr=int('$qr_raw'); db=int('$db'); dq=int('$dq'); print((qr/10**dq)/(br/10**db))" 2>/dev/null || echo "") +fi + +cl_eth=$(eth_usd_chainlink "$CHAINLINK_ETH_USD") +cl_eth_price="" +if [[ -n "$cl_eth" ]]; then + # latestRoundData(): cast prints one value per line; answer is the 2nd field (int256, 1e8 USD for ETH/USD) + ans=$(echo "$cl_eth" | awk 'NR == 2 { print $1; exit }') + [[ -n "$ans" ]] && cl_eth_price=$(python3 -c "a=int(float('$ans')); print(a/1e8)" 2>/dev/null || echo "") +fi + +if [[ "$JSON" == true ]]; then + jq_n() { [[ -z "$1" ]] && echo null || echo "$1"; } + jq -n \ + --arg network "ethereum-mainnet" \ + --arg token "cWUSDT" \ + --arg token_addr "$CWUSDT" \ + --arg pool "$POOL" \ + --arg integration "$INT" \ + --argjson accounting_usd_assumption 1 \ + --arg pool_price_method "${pm_method:-none}" \ + --argjson pool_price_raw "$(jq_n "$price_raw")" \ + --argjson pool_price_usd_scale "$(jq_n "$price_human")" \ + --argjson base_reserve_raw "$(jq_n "$br_raw")" \ + --argjson quote_reserve_raw "$(jq_n "$qr_raw")" \ + --arg implied_str "${implied_usdc_per_cwusdt:-}" \ + --argjson chainlink_eth_usd "$(jq_n "$cl_eth_price")" \ + '{ + network: $network, + token: $token, + tokenAddress: $token_addr, + poolAddress: $pool, + integrationAddress: $integration, + accountingUsdAssumptionPerToken: $accounting_usd_assumption, + poolMidOrOracle: { + method: $pool_price_method, + priceRaw1e18: $pool_price_raw, + priceAsUsdIf1e18EqualsOneDollar: $pool_price_usd_scale + }, + impliedFromReserves: { + baseReserveRaw: $base_reserve_raw, + quoteReserveRaw: $quote_reserve_raw, + impliedUsdcPerCwusdtIfBaseIsCwusdtAndQuoteIsUsdc: (if $implied_str == "" then null else ($implied_str | tonumber) end) + }, + chainlinkEthUsd: $chainlink_eth_usd + }' + exit 0 +fi + +cat << EOF +======================================== +cWUSDT (Mainnet) — USD pricing toolkit +======================================== +RPC: ${RPC%%\?*} +Integration: $INT +Pool (cWUSDT/USDC): $POOL +cWUSDT token: $CWUSDT + USDC (mainnet): $USDC_OFFICIAL + +(1) ACCOUNTING ASSUMPTION (treasury / reporting) + Treat 1 cWUSDT ≈ 1 USD only if your policy says the wrapper tracks USDT 1:1. + Use for: internal books, dashboards where Etherscan shows \$0. + +(2) POOL MID / ORACLE (DODOPMMIntegration) + Method: ${pm_method:-n/a} + Raw price (uint256, doc scale 1e18 = \$1): ${price_raw:-n/a} + As decimal (if 1e18 = \$1): ${price_human:-n/a} + +(3) IMPLIED FROM VAULT RESERVES (USDC per cWUSDT) + Base reserve (cWUSDT, ${db:-?} dp): ${br_raw:-n/a} + Quote reserve (USDC, ${dq:-?} dp): ${qr_raw:-n/a} + Implied USDC per 1 cWUSDT: ${implied_usdc_per_cwusdt:-n/a} + (Thin or imbalanced pools skew this; use for sanity check, not sole mark.) + +(4) CHAINLINK ETH/USD (macro only — not cWUSDT) + Feed: ${CHAINLINK_ETH_USD} + ETH/USD: ${cl_eth_price:-n/a} + +Optional env overrides: + ETHEREUM_MAINNET_RPC, DODO_PMM_INTEGRATION_MAINNET, + CWUSDT_MAINNET, POOL_CWUSDT_USDC_MAINNET, USDC_MAINNET, + CHAINLINK_ETH_USD_FEED + +See: docs/03-deployment/CW_TOKEN_USD_PRICING_RUNBOOK.md +======================================== +EOF diff --git a/scripts/deployment/run-cw-remaining-steps.sh b/scripts/deployment/run-cw-remaining-steps.sh index f9e2d2f8..adb6ce5c 100755 --- a/scripts/deployment/run-cw-remaining-steps.sh +++ b/scripts/deployment/run-cw-remaining-steps.sh @@ -1,13 +1,14 @@ #!/usr/bin/env bash # Run remaining cW* steps: deploy (or dry-run), update token-mapping from .env, optional verify. # See docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/00-meta/CW_BRIDGE_TASK_LIST.md. +# Mainnet Etherscan (CompliantWrappedToken): smom-dbis-138/scripts/deployment/verify-mainnet-cw-etherscan.sh # # Usage: # ./scripts/deployment/run-cw-remaining-steps.sh [--dry-run] [--deploy] [--update-mapping] [--verify] # --dry-run Run deploy-cw in dry-run mode (print commands only). # --deploy Run deploy-cw on all chains (requires RPC/PRIVATE_KEY in smom-dbis-138/.env). -# --update-mapping Update config/token-mapping-multichain.json from CWUSDT_*/CWUSDC_* in .env. -# --verify For each chain with CWUSDT_* set, check MINTER_ROLE/BURNER_ROLE on cW* for CW_BRIDGE_*. +# --update-mapping Update config/token-mapping-multichain.json from CW*_CHAIN keys in .env (12 cW symbols × mapped chains). +# --verify For each chain with CW_BRIDGE_* set, check MINTER_ROLE/BURNER_ROLE on every deployed cW* (CWUSDT…CWXAUT) vs CW_BRIDGE_*. # With no options, runs --dry-run then --update-mapping (if any CWUSDT_* in .env). set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -103,18 +104,18 @@ if $DO_UPDATE_MAPPING; then fi if $DO_VERIFY; then - echo "=== Verify MINTER/BURNER roles on cW* for each chain ===" + echo "=== Verify MINTER/BURNER roles on cW* for each chain (12 symbols) ===" MINTER_ROLE=$(cast keccak "MINTER_ROLE" 2>/dev/null || echo "0x") BURNER_ROLE=$(cast keccak "BURNER_ROLE" 2>/dev/null || echo "0x") + # Env suffix -> env var for CompliantWrappedToken (must match update_mapping keyToEnv) + CW_KEYS=(CWUSDT CWUSDC CWEURC CWEURT CWGBPC CWGBPT CWAUDC CWJPYC CWCHFC CWCADC CWXAUC CWXAUT) for name in MAINNET CRONOS BSC POLYGON GNOSIS AVALANCHE BASE ARBITRUM OPTIMISM; do - cwusdt_var="CWUSDT_${name}" bridge_var="CW_BRIDGE_${name}" - cwusdt="${!cwusdt_var:-}" bridge="${!bridge_var:-}" rpc_var="${name}_RPC_URL" [[ -z "$rpc_var" ]] && rpc_var="${name}_RPC" rpc="${!rpc_var:-}" - if [[ -z "$cwusdt" || -z "$bridge" ]]; then continue; fi + if [[ -z "$bridge" ]]; then continue; fi if [[ -z "$rpc" ]]; then case "$name" in MAINNET) rpc="${ETH_MAINNET_RPC_URL:-${ETHEREUM_MAINNET_RPC:-}}";; @@ -129,9 +130,17 @@ if $DO_VERIFY; then esac fi if [[ -z "$rpc" ]]; then echo " Skip $name: no RPC"; continue; fi - m=$(cast call "$cwusdt" "hasRole(bytes32,address)(bool)" "$MINTER_ROLE" "$bridge" --rpc-url "$rpc" 2>/dev/null || echo "false") - b=$(cast call "$cwusdt" "hasRole(bytes32,address)(bool)" "$BURNER_ROLE" "$bridge" --rpc-url "$rpc" 2>/dev/null || echo "false") - echo " $name: MINTER=$m BURNER=$b (cWUSDT=$cwusdt bridge=$bridge)" + any=false + for key in "${CW_KEYS[@]}"; do + var="${key}_${name}" + addr="${!var:-}" + [[ -z "$addr" ]] && continue + any=true + m=$(cast call "$addr" "hasRole(bytes32,address)(bool)" "$MINTER_ROLE" "$bridge" --rpc-url "$rpc" 2>/dev/null || echo "false") + b=$(cast call "$addr" "hasRole(bytes32,address)(bool)" "$BURNER_ROLE" "$bridge" --rpc-url "$rpc" 2>/dev/null || echo "false") + echo " $name $key: MINTER=$m BURNER=$b ($addr)" + done + if ! $any; then echo " $name: no CW*_* addresses in .env; skipped"; fi done fi diff --git a/scripts/deployment/send-eth-ei-matrix-wallets.sh b/scripts/deployment/send-eth-ei-matrix-wallets.sh index e4ca7dc7..31f64124 100755 --- a/scripts/deployment/send-eth-ei-matrix-wallets.sh +++ b/scripts/deployment/send-eth-ei-matrix-wallets.sh @@ -1,24 +1,42 @@ #!/usr/bin/env bash -# Send a random amount between 5 and 9 ETH (inclusive) to each address in -# config/pmm-soak-wallet-grid.json (Elemental Imperium 33×33×6 matrix). +# Send native ETH to each address in config/pmm-soak-wallet-grid.json (Elemental +# Imperium 33×33×6 matrix). +# +# Default mode (spread): take BALANCE_PCT of the signer's native balance (minus +# optional reserve), split across the selected wallet slice with independent +# uniform random multipliers in [1 - SPREAD_PCT/100, 1 + SPREAD_PCT/100] around +# equal weight, then renormalize so the total sent equals that budget exactly. +# +# Legacy mode: random 5–9 ETH per wallet (--uniform-eth). # # Requires: cast (Foundry), jq, python3. Loads PRIVATE_KEY and RPC via load-project-env.sh. # # Usage: # ./scripts/deployment/send-eth-ei-matrix-wallets.sh [--dry-run] [--limit N] [--offset N] # -# --dry-run Print planned sends only (no transactions). -# --limit N Process at most N wallets (after offset). Default: all. -# --offset N Skip the first N wallets (resume / partial run). +# --dry-run Print planned sends only (no transactions). +# --limit N Process at most N wallets (after offset). Default: all. +# --offset N Skip the first N wallets (resume / partial run). +# --balance-pct P Percent of (balance minus reserve) to distribute (default: 80). +# --spread-pct S Per-wallet multiplier range ±S%% around fair share (default: 15). +# --reserve-wei W Wei to leave untouchable before applying balance-pct (default: 0). +# --uniform-eth Legacy: random 5–9 ETH per wallet (ignores balance-pct/spread). # # Gas (Chain 138 / Besu): defaults avoid stuck pending txs from near-zero EIP-1559 caps. # Override if needed: # EI_MATRIX_GAS_PRICE=100000000000 # EI_MATRIX_PRIORITY_GAS_PRICE=20000000000 # +# Spread mode defaults (same as --balance-pct / --spread-pct / --reserve-wei): +# EI_MATRIX_BALANCE_PCT=80 EI_MATRIX_SPREAD_PCT=15 EI_MATRIX_RESERVE_WEI=0 +# Balance query uses public RPC by default; override with EI_MATRIX_BALANCE_RPC. Tx RPC: RPC_URL_138 or public. +# # Nonces: each send uses an explicit --nonce from eth_getTransactionCount(..., "pending") # and increments locally so --async does not race duplicate nonces. # +# RPC: defaults to Chain 138 public HTTP (reachable without LAN). Override with RPC_URL_138 +# (e.g. core or Besu on 192.168.x.x). Public URL env: CHAIN138_PUBLIC_RPC_URL or RPC_URL_138_PUBLIC. +# set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -28,11 +46,19 @@ cd "$PROJECT_ROOT" DRY_RUN=false LIMIT="" OFFSET="0" +BALANCE_PCT="${EI_MATRIX_BALANCE_PCT:-80}" +SPREAD_PCT="${EI_MATRIX_SPREAD_PCT:-15}" +RESERVE_WEI="${EI_MATRIX_RESERVE_WEI:-0}" +UNIFORM_ETH_LEGACY=false while [[ $# -gt 0 ]]; do case "$1" in --dry-run) DRY_RUN=true; shift ;; --limit) LIMIT="${2:?}"; shift 2 ;; --offset) OFFSET="${2:?}"; shift 2 ;; + --balance-pct) BALANCE_PCT="${2:?}"; shift 2 ;; + --spread-pct) SPREAD_PCT="${2:?}"; shift 2 ;; + --reserve-wei) RESERVE_WEI="${2:?}"; shift 2 ;; + --uniform-eth) UNIFORM_ETH_LEGACY=true; shift ;; *) echo "Unknown arg: $1" >&2; exit 1 ;; esac done @@ -40,6 +66,13 @@ done # shellcheck disable=SC1091 source "$PROJECT_ROOT/scripts/lib/load-project-env.sh" +CHAIN138_PUBLIC_RPC_DEFAULT="https://rpc-http-pub.d-bis.org" +RPC_PUBLIC="${CHAIN138_PUBLIC_RPC_URL:-${RPC_URL_138_PUBLIC:-$CHAIN138_PUBLIC_RPC_DEFAULT}}" +# Balance read for spread budget: public RPC first (aligns with deployer checks on public endpoints). +# After that, nonce + sends use RPC (same as RPC_URL_138 when set, else public). +BALANCE_RPC="${EI_MATRIX_BALANCE_RPC:-$RPC_PUBLIC}" +RPC="${RPC_URL_138:-$RPC_PUBLIC}" + LOCK_FILE="${PROJECT_ROOT}/reports/status/ei-matrix-eth-send.lock" mkdir -p "$(dirname "$LOCK_FILE")" exec 200>"$LOCK_FILE" @@ -47,8 +80,6 @@ if ! flock -n 200; then echo "Another send-eth-ei-matrix-wallets.sh is already running (lock: $LOCK_FILE)." >&2 exit 1 fi - -RPC="${RPC_URL_138:-http://192.168.11.211:8545}" GRID="$PROJECT_ROOT/config/pmm-soak-wallet-grid.json" DEPLOYER_CANONICAL="0x4A666F96fC8764181194447A7dFdb7d471b301C8" # Wei per gas — must exceed stuck-replacement threshold on busy pools (see script header). @@ -63,13 +94,21 @@ command -v jq &>/dev/null || { echo "jq required" >&2; exit 1; } FROM_ADDR=$(cast wallet address --private-key "$PRIVATE_KEY") echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -echo "EI matrix ETH distribution (random 5–9 ETH per wallet)" +if $UNIFORM_ETH_LEGACY; then + echo "EI matrix ETH distribution (legacy: random 5–9 ETH per wallet)" +else + echo "EI matrix ETH distribution (${BALANCE_PCT}% of balance, ±${SPREAD_PCT}% jitter, normalized)" +fi echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -echo "RPC: $RPC" +echo "Balance RPC (public): $BALANCE_RPC" +echo "Tx / nonce RPC: $RPC" echo "Signer: $FROM_ADDR" echo "Grid: $GRID" echo "Dry-run: $DRY_RUN" echo "Offset: $OFFSET Limit: ${LIMIT:-all}" +if ! $UNIFORM_ETH_LEGACY; then + echo "Reserve: ${RESERVE_WEI} wei excluded before balance-pct" +fi echo "Gas: maxFee=$EI_MATRIX_GAS_PRICE wei priorityFee=$EI_MATRIX_PRIORITY_GAS_PRICE wei" echo "" @@ -87,10 +126,41 @@ pending_nonce() { cast to-dec "$hex" } -random_wei() { +random_wei_uniform_legacy() { python3 -c "import random; from decimal import Decimal; print(int(Decimal(str(random.uniform(5.0, 9.0))) * 10**18))" } +# Args: count budget_wei spread_pct — prints one wei amount per line; sum(lines) == budget_wei +generate_spread_amounts_wei() { + local count="$1" budget="$2" spread="$3" + python3 - "$count" "$budget" "$spread" <<'PY' +import random +import sys + +n = int(sys.argv[1]) +budget = int(sys.argv[2]) +spread = float(sys.argv[3]) +if n <= 0: + sys.exit("count must be positive") +if budget < 0: + sys.exit("budget must be non-negative") +if spread < 0 or spread > 100: + sys.exit("spread-pct must be in [0, 100]") +# Integer-only weights (float on ~10^27 wei rounds to 0 → huge remainder loop and hang) +base = 10000 +low_w = max(1, (100 * base - int(spread * base)) // 100) +high_w = (100 * base + int(spread * base)) // 100 +w = [random.randint(low_w, high_w) for _ in range(n)] +s = sum(w) +raw = [(budget * wi) // s for wi in w] +rem = budget - sum(raw) +for i in range(rem): + raw[i % n] += 1 +for w in raw: + print(w) +PY +} + ERR_LOG="${PROJECT_ROOT}/reports/status/ei-matrix-eth-send-failures.log" mkdir -p "$(dirname "$ERR_LOG")" @@ -102,55 +172,120 @@ else NONCE=0 fi +# Args: addr wei idx — uses global NONCE, sent, failed, DRY_RUN, RPC, PRIVATE_KEY, EI_MATRIX_* , ERR_LOG +matrix_try_send() { + local addr="$1" wei="$2" idx="$3" + local eth_approx out tx GP PP attempt + if [[ "$wei" == "0" ]]; then + echo "[skip] idx=$idx $addr zero wei" + return 0 + fi + eth_approx=$(python3 -c "w=int('$wei'); print(f'{w / 1e18:.6f}')") + if $DRY_RUN; then + echo "[dry-run] idx=$idx $addr ${wei} wei (~${eth_approx} ETH)" + return 0 + fi + GP="$EI_MATRIX_GAS_PRICE" + PP="$EI_MATRIX_PRIORITY_GAS_PRICE" + attempt=1 + while [[ "$attempt" -le 2 ]]; do + if out=$(cast send "$addr" --value "$wei" --rpc-url "$RPC" --private-key "$PRIVATE_KEY" \ + --nonce "$NONCE" \ + --async \ + --gas-price "$GP" \ + --priority-gas-price "$PP" \ + 2>&1); then + tx=$(echo "$out" | tail -n1) + echo "[ok] idx=$idx nonce=$NONCE $addr ${eth_approx} ETH tx=$tx" + sent=$((sent + 1)) + NONCE=$((NONCE + 1)) + echo "$idx" > "${PROJECT_ROOT}/reports/status/ei-matrix-eth-send-last-idx.txt" + break + fi + if echo "$out" | grep -q "Replacement transaction underpriced" && [[ "$attempt" -eq 1 ]]; then + GP=$((GP * 2)) + PP=$((PP * 2)) + NONCE=$(pending_nonce) || true + attempt=$((attempt + 1)) + continue + fi + echo "[fail] idx=$idx nonce=$NONCE $addr $out" | tee -a "$ERR_LOG" >&2 + failed=$((failed + 1)) + NONCE=$(pending_nonce) || true + break + done +} + stream_addresses() { + # Slice in jq only — jq|head breaks with SIGPIPE under pipefail when LIMIT is set. if [[ -n "${LIMIT:-}" ]]; then - jq -r '.wallets[] | .address' "$GRID" | tail -n +$((OFFSET + 1)) | head -n "$LIMIT" + jq -r --argjson o "$OFFSET" --argjson l "$LIMIT" '.wallets[$o:$o+$l][] | .address' "$GRID" else - jq -r '.wallets[] | .address' "$GRID" | tail -n +$((OFFSET + 1)) + jq -r --argjson o "$OFFSET" '.wallets[$o:][] | .address' "$GRID" fi } +compute_budget_wei() { + python3 - "$1" "$2" "$3" <<'PY' +import sys +bal = int(sys.argv[1]) +reserve = int(sys.argv[2]) +pct = float(sys.argv[3]) +avail = max(0, bal - reserve) +print(int(avail * pct / 100.0)) +PY +} + +ADDR_TMP="" +AMOUNTS_TMP="" +cleanup_tmp() { + [[ -n "$ADDR_TMP" && -f "$ADDR_TMP" ]] && rm -f "$ADDR_TMP" + [[ -n "$AMOUNTS_TMP" && -f "$AMOUNTS_TMP" ]] && rm -f "$AMOUNTS_TMP" +} +trap cleanup_tmp EXIT + +if $UNIFORM_ETH_LEGACY; then + : +else + ADDR_TMP=$(mktemp) + AMOUNTS_TMP=$(mktemp) + stream_addresses > "$ADDR_TMP" + WALLET_COUNT=$(wc -l < "$ADDR_TMP" | tr -d '[:space:]') + if [[ -z "$WALLET_COUNT" || "$WALLET_COUNT" -eq 0 ]]; then + echo "No wallets in range (offset=$OFFSET limit=${LIMIT:-all})." >&2 + exit 1 + fi + BAL_WEI=$(cast balance "$FROM_ADDR" --rpc-url "$BALANCE_RPC" 2>/dev/null | awk '{print $1}' || echo "0") + BUDGET_WEI=$(compute_budget_wei "$BAL_WEI" "$RESERVE_WEI" "$BALANCE_PCT") + eth_bal=$(python3 -c "print(f'{int(\"$BAL_WEI\") / 1e18:.8f}')" 2>/dev/null || echo "?") + eth_bud=$(python3 -c "print(f'{int(\"$BUDGET_WEI\") / 1e18:.8f}')" 2>/dev/null || echo "?") + echo "Balance: $BAL_WEI wei (~$eth_bal ETH)" + echo "Budget: $BUDGET_WEI wei (~$eth_bud ETH) (${BALANCE_PCT}% of max(0, balance − ${RESERVE_WEI} reserve))" + echo "Wallets: $WALLET_COUNT spread: ±${SPREAD_PCT}% then normalized to budget" + echo "" + if [[ "$BUDGET_WEI" == "0" ]]; then + echo "Budget is zero (balance below reserve or pct=0). Nothing to send." >&2 + exit 1 + fi + generate_spread_amounts_wei "$WALLET_COUNT" "$BUDGET_WEI" "$SPREAD_PCT" > "$AMOUNTS_TMP" +fi + sent=0 failed=0 idx=$OFFSET -while read -r addr; do - wei=$(random_wei) - eth_approx=$(python3 -c "print(f'{$wei / 1e18:.6f}')") - if $DRY_RUN; then - echo "[dry-run] idx=$idx $addr ${wei} wei (~${eth_approx} ETH)" - else - GP="$EI_MATRIX_GAS_PRICE" - PP="$EI_MATRIX_PRIORITY_GAS_PRICE" - attempt=1 - while [[ "$attempt" -le 2 ]]; do - if out=$(cast send "$addr" --value "$wei" --rpc-url "$RPC" --private-key "$PRIVATE_KEY" \ - --nonce "$NONCE" \ - --async \ - --gas-price "$GP" \ - --priority-gas-price "$PP" \ - 2>&1); then - tx=$(echo "$out" | tail -n1) - echo "[ok] idx=$idx nonce=$NONCE $addr ${eth_approx} ETH tx=$tx" - sent=$((sent + 1)) - NONCE=$((NONCE + 1)) - echo "$idx" > "${PROJECT_ROOT}/reports/status/ei-matrix-eth-send-last-idx.txt" - break - fi - if echo "$out" | grep -q "Replacement transaction underpriced" && [[ "$attempt" -eq 1 ]]; then - GP=$((GP * 2)) - PP=$((PP * 2)) - NONCE=$(pending_nonce) || true - attempt=$((attempt + 1)) - continue - fi - echo "[fail] idx=$idx nonce=$NONCE $addr $out" | tee -a "$ERR_LOG" >&2 - failed=$((failed + 1)) - NONCE=$(pending_nonce) || true - break - done - fi - idx=$((idx + 1)) -done < <(stream_addresses) + +if $UNIFORM_ETH_LEGACY; then + while read -r addr; do + wei=$(random_wei_uniform_legacy) + matrix_try_send "$addr" "$wei" "$idx" + idx=$((idx + 1)) + done < <(stream_addresses) +else + while IFS=$'\t' read -r addr wei; do + matrix_try_send "$addr" "$wei" "$idx" + idx=$((idx + 1)) + done < <(paste -d $'\t' "$ADDR_TMP" "$AMOUNTS_TMP") +fi echo "" if $DRY_RUN; then diff --git a/scripts/dev-vm/add-gitea-webhook-phoenix.sh b/scripts/dev-vm/add-gitea-webhook-phoenix.sh index 47a71b52..769d58dd 100755 --- a/scripts/dev-vm/add-gitea-webhook-phoenix.sh +++ b/scripts/dev-vm/add-gitea-webhook-phoenix.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Add Gitea webhook for Phoenix deploy to a repository. # Usage: GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=https://host:4001/webhook/gitea bash add-gitea-webhook-phoenix.sh [owner/repo] -# Example: GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea bash add-gitea-webhook-phoenix.sh d-bis/proxmox +# Example: GITEA_TOKEN=xxx PHOENIX_WEBHOOK_URL=http://192.168.11.59:4001/webhook/gitea PHOENIX_DEPLOY_SECRET=shared-secret bash add-gitea-webhook-phoenix.sh d-bis/proxmox set -euo pipefail @@ -12,6 +12,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" GITEA_URL="${GITEA_URL:-https://gitea.d-bis.org}" GITEA_TOKEN="${GITEA_TOKEN:-}" PHOENIX_WEBHOOK_URL="${PHOENIX_WEBHOOK_URL:-}" +PHOENIX_DEPLOY_SECRET="${PHOENIX_DEPLOY_SECRET:-}" REPO="${1:-d-bis/proxmox}" if [ -z "$GITEA_TOKEN" ]; then @@ -23,6 +24,10 @@ if [ -z "$PHOENIX_WEBHOOK_URL" ]; then exit 1 fi +echo "WARNING: Only add the webhook deploy path for repos that are not already deploying via Gitea Actions." +echo " If both Actions and webhook deploys are enabled for the same repo, pushes can trigger duplicate deploys." +echo "" + API="${GITEA_URL%/}/api/v1" OWNER="${REPO%%/*}" REPO_NAME="${REPO#*/}" @@ -37,11 +42,13 @@ fi # Create webhook BODY=$(jq -n \ --arg url "$PHOENIX_WEBHOOK_URL" \ + --arg secret "$PHOENIX_DEPLOY_SECRET" \ '{ type: "gitea", config: { url: $url, - content_type: "json" + content_type: "json", + secret: $secret }, events: ["push", "create"], active: true diff --git a/scripts/dev-vm/bootstrap-phoenix-cicd.sh b/scripts/dev-vm/bootstrap-phoenix-cicd.sh new file mode 100755 index 00000000..8ac4ec0b --- /dev/null +++ b/scripts/dev-vm/bootstrap-phoenix-cicd.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +# Bootstrap the Phoenix deploy CI/CD path for this repo. +# +# Steps: +# 1. Run repo validation +# 2. Deploy phoenix-deploy-api to dev VM +# 3. Smoke-check /health and /api/deploy-targets +# 4. Optionally add a Gitea webhook for a repo that does not already deploy via Actions +# +# Usage: +# bash scripts/dev-vm/bootstrap-phoenix-cicd.sh +# bash scripts/dev-vm/bootstrap-phoenix-cicd.sh --repo d-bis/proxmox +# bash scripts/dev-vm/bootstrap-phoenix-cicd.sh --repo some/repo --add-webhook + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" +[[ -f "${PROJECT_ROOT}/.env" ]] && set -a && source "${PROJECT_ROOT}/.env" && set +a + +REPO="${PHOENIX_CICD_REPO:-d-bis/proxmox}" +ADD_WEBHOOK=0 +DRY_RUN=0 + +while [[ $# -gt 0 ]]; do + case "$1" in + --repo) + REPO="${2:?--repo requires owner/repo}" + shift 2 + ;; + --add-webhook) + ADD_WEBHOOK=1 + shift + ;; + --dry-run) + DRY_RUN=1 + shift + ;; + *) + echo "Unknown argument: $1" >&2 + exit 1 + ;; + esac +done + +DEPLOY_HEALTH_URL="${PHOENIX_CICD_HEALTH_URL:-http://192.168.11.59:4001/health}" +DEPLOY_TARGETS_URL="${PHOENIX_CICD_TARGETS_URL:-http://192.168.11.59:4001/api/deploy-targets}" + +echo "=== Phoenix CI/CD bootstrap ===" +echo "Repo: ${REPO}" +echo "Health URL: ${DEPLOY_HEALTH_URL}" +echo "Targets URL: ${DEPLOY_TARGETS_URL}" +echo "Add webhook: ${ADD_WEBHOOK}" +echo "Dry-run: ${DRY_RUN}" +echo "" + +if [[ "${DRY_RUN}" -eq 1 ]]; then + echo "[DRY-RUN] bash scripts/verify/run-all-validation.sh --skip-genesis" + echo "[DRY-RUN] bash scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh --apply --start-ct" + echo "[DRY-RUN] curl -sS ${DEPLOY_HEALTH_URL}" + echo "[DRY-RUN] curl -sS ${DEPLOY_TARGETS_URL}" + if [[ "${ADD_WEBHOOK}" -eq 1 ]]; then + echo "[DRY-RUN] bash scripts/dev-vm/add-gitea-webhook-phoenix.sh ${REPO}" + fi + exit 0 +fi + +echo "[1/4] Validation gate..." +bash "${PROJECT_ROOT}/scripts/verify/run-all-validation.sh" --skip-genesis + +echo "" +echo "[2/4] Deploy phoenix-deploy-api..." +bash "${PROJECT_ROOT}/scripts/deployment/deploy-phoenix-deploy-api-to-dev-vm.sh" --apply --start-ct + +echo "" +echo "[3/4] Smoke checks..." +curl -sSf "${DEPLOY_HEALTH_URL}" | jq . +curl -sSf "${DEPLOY_TARGETS_URL}" | jq . + +if [[ "${ADD_WEBHOOK}" -eq 1 ]]; then + echo "" + echo "[4/4] Add Gitea webhook (only for repos not already deploying via Actions)..." + bash "${PROJECT_ROOT}/scripts/dev-vm/add-gitea-webhook-phoenix.sh" "${REPO}" +else + echo "" + echo "[4/4] Webhook step skipped. Re-run with --add-webhook only for repos that are not already deploying via Gitea Actions." +fi + +echo "" +echo "Done." diff --git a/scripts/dev-vm/trigger-phoenix-deploy.sh b/scripts/dev-vm/trigger-phoenix-deploy.sh new file mode 100644 index 00000000..8b493794 --- /dev/null +++ b/scripts/dev-vm/trigger-phoenix-deploy.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Trigger phoenix-deploy-api directly for smoke tests or manual promotion. +# +# Usage: +# bash scripts/dev-vm/trigger-phoenix-deploy.sh +# bash scripts/dev-vm/trigger-phoenix-deploy.sh d-bis/proxmox main default + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" +[[ -f "${PROJECT_ROOT}/.env" ]] && set -a && source "${PROJECT_ROOT}/.env" && set +a + +REPO="${1:-d-bis/proxmox}" +BRANCH="${2:-main}" +TARGET="${3:-default}" +SHA="${4:-manual-$(date +%Y%m%d%H%M%S)}" + +DEPLOY_URL="${PHOENIX_DEPLOY_URL:-http://192.168.11.59:4001/api/deploy}" +DEPLOY_TOKEN="${PHOENIX_DEPLOY_TOKEN:-${PHOENIX_DEPLOY_SECRET:-}}" + +if [[ -z "${DEPLOY_TOKEN}" ]]; then + echo "ERROR: set PHOENIX_DEPLOY_TOKEN or PHOENIX_DEPLOY_SECRET in root .env" >&2 + exit 1 +fi + +echo "Triggering deploy:" +echo " URL: ${DEPLOY_URL}" +echo " Repo: ${REPO}" +echo " Branch: ${BRANCH}" +echo " Target: ${TARGET}" +echo " SHA: ${SHA}" + +curl -sSf -X POST "${DEPLOY_URL}" \ + -H "Authorization: Bearer ${DEPLOY_TOKEN}" \ + -H "Content-Type: application/json" \ + -d "{\"repo\":\"${REPO}\",\"branch\":\"${BRANCH}\",\"target\":\"${TARGET}\",\"sha\":\"${SHA}\"}" | jq . diff --git a/scripts/fix-all-validators-and-txpool.sh b/scripts/fix-all-validators-and-txpool.sh index 753679fb..73d4d775 100644 --- a/scripts/fix-all-validators-and-txpool.sh +++ b/scripts/fix-all-validators-and-txpool.sh @@ -17,16 +17,16 @@ cd "$PROJECT_ROOT" PROXMOX_USER="${PROXMOX_USER:-root}" R630_01="${PROXMOX_HOST_R630_01:-${PROXMOX_R630_01:-192.168.11.11}}" -ML110="${PROXMOX_HOST_ML110:-${PROXMOX_ML110:-192.168.11.10}}" +R630_03="${PROXMOX_HOST_R630_03:-${PROXMOX_R630_03:-192.168.11.13}}" # VMID -> Proxmox host -# 1000,1001,1002 on r630-01; 1003,1004 on ml110 +# 1000,1001,1002 on r630-01; 1003,1004 on r630-03 VALIDATORS=( "1000:$R630_01" "1001:$R630_01" "1002:$R630_01" - "1003:$ML110" - "1004:$ML110" + "1003:$R630_03" + "1004:$R630_03" ) CONFIG_PATH="/etc/besu/config-validator.toml" diff --git a/scripts/fix-validator-permissioning-toml.sh b/scripts/fix-validator-permissioning-toml.sh index 8d19dd1d..c6ef2ab2 100755 --- a/scripts/fix-validator-permissioning-toml.sh +++ b/scripts/fix-validator-permissioning-toml.sh @@ -3,7 +3,7 @@ # Besu expects TOML for permissions-nodes-config-file (not permissioned-nodes.json). # Static-nodes = bootstrap peers; permissions-nodes = allowlist. Both are essential. # -# Run from repo root. Requires SSH to r630-01 (192.168.11.11) and ml110 (192.168.11.10). +# Run from repo root. Requires SSH to r630-01 (192.168.11.11) and r630-03 (192.168.11.13). set -euo pipefail @@ -24,8 +24,8 @@ if [ ! -f "$SOURCE_STATIC" ]; then exit 1 fi -R630_01="${PROXMOX_R630_01:-192.168.11.11}" -ML110="${PROXMOX_ML110:-192.168.11.10}" +R630_01="${PROXMOX_HOST_R630_01:-${PROXMOX_R630_01:-192.168.11.11}}" +R630_03="${PROXMOX_HOST_R630_03:-${PROXMOX_R630_03:-192.168.11.13}}" USER="${PROXMOX_USER:-root}" PERM_PATH="/var/lib/besu/permissions" CONFIG_GLOB="/etc/besu/config-validator.toml" @@ -34,8 +34,8 @@ VALIDATORS=( "1000:$R630_01" "1001:$R630_01" "1002:$R630_01" - "1003:$ML110" - "1004:$ML110" + "1003:$R630_03" + "1004:$R630_03" ) RED='\033[0;31m' @@ -53,7 +53,7 @@ echo " Both are essential: static-nodes = bootstrap peers, permissions-nodes = echo "" # Copy both files to each host once -for host in "$R630_01" "$ML110"; do +for host in "$R630_01" "$R630_03"; do log_info "Copying static-nodes.json and permissions-nodes.toml to $host" scp -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SOURCE_STATIC" "$SOURCE_TOML" "$USER@$host:/tmp/" 2>/dev/null || { log_err "scp to $host failed"; exit 1; } log_ok " Copied" @@ -108,7 +108,7 @@ for entry in "${VALIDATORS[@]}"; do done # Cleanup host /tmp -for host in "$R630_01" "$ML110"; do +for host in "$R630_01" "$R630_03"; do ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$USER@$host" "rm -f /tmp/permissions-nodes.toml /tmp/static-nodes.json" 2>/dev/null || true done diff --git a/scripts/lib/cw_mesh_deployment_matrix.py b/scripts/lib/cw_mesh_deployment_matrix.py new file mode 100644 index 00000000..2b925d09 --- /dev/null +++ b/scripts/lib/cw_mesh_deployment_matrix.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +"""Merge deployment-status.json + Uni V2 pair-discovery report into a mesh matrix. + +Read-only: does not call RPC. Use after running promod_uniswap_v2_live_pair_discovery.py +or pointing at an existing reports/extraction/promod-uniswap-v2-live-pair-discovery-*.json. +""" +from __future__ import annotations + +import argparse +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +DEFAULT_STATUS = ROOT / "cross-chain-pmm-lps" / "config" / "deployment-status.json" +DEFAULT_DISCOVERY = ROOT / "reports" / "extraction" / "promod-uniswap-v2-live-pair-discovery-latest.json" + + +def load_json(path: Path) -> dict: + return json.loads(path.read_text()) + + +def pmm_settlement_pools(pools: list) -> list[str]: + out: list[str] = [] + for x in pools or []: + b, q = x.get("base"), x.get("quote") + if b in ("cWUSDC", "cWUSDT") and q in ("USDC", "USDT"): + out.append(f"{b}/{q}") + return sorted(set(out)) + + +def pmm_has_cw_mesh(pools: list) -> bool: + for x in pools or []: + if x.get("base") == "cWUSDT" and x.get("quote") == "cWUSDC": + return True + return False + + +def discovery_mesh_entry(entries: list, chain_id: int) -> dict | None: + for e in entries: + if int(e.get("chain_id", -1)) == chain_id: + return e + return None + + +def pair_mesh_state(entry: dict | None) -> tuple[bool | None, bool | None, str | None]: + """Returns live, healthy (None if unknown), pool address (None if n/a).""" + if not entry: + return None, None, None + for p in entry.get("pairsChecked") or []: + if p.get("base") == "cWUSDT" and p.get("quote") == "cWUSDC": + live = p.get("live") + h = p.get("health") or {} + healthy = h.get("healthy") + addr = p.get("poolAddress") or "" + if addr in ("", "0x0000000000000000000000000000000000000000"): + return bool(live), None, None + return bool(live), bool(healthy) if healthy is not None else None, addr + return False, None, None + + +def build_rows(status_path: Path, discovery_path: Path) -> list[dict]: + dep = load_json(status_path) + disc_data = load_json(discovery_path) + entries = disc_data.get("entries") or [] + rows: list[dict] = [] + + for cid_s, info in sorted((dep.get("chains") or {}).items(), key=lambda kv: int(kv[0])): + cid = int(cid_s) + cw = info.get("cwTokens") or {} + pools = info.get("pmmPools") or [] + has_wusdt = "cWUSDT" in cw + has_wusdc = "cWUSDC" in cw + d_entry = discovery_mesh_entry(entries, cid) + live, healthy, pool_addr = pair_mesh_state(d_entry) + settle = pmm_settlement_pools(pools) + rows.append( + { + "chainId": cid, + "network": info.get("name", ""), + "activationState": info.get("activationState", ""), + "hasCWUSDT": has_wusdt, + "hasCWUSDC": has_wusdc, + "cwTokenCount": len(cw), + "pmmCWUSDTvsCWUSDC": pmm_has_cw_mesh(pools), + "pmmSettlementRails": settle, + "uniswapV2PairDiscoveryPresent": d_entry is not None, + "uniswapV2CWUSDTvsCWUSDCLive": live, + "uniswapV2CWUSDTvsCWUSDCHealthy": healthy, + "uniswapV2CWUSDTvsCWDCPool": pool_addr, + } + ) + return rows + + +def print_markdown(rows: list[dict], generated_from: dict[str, str]) -> None: + print("# cW* mesh deployment matrix\n") + for k, v in generated_from.items(): + print(f"- **{k}:** `{v}`") + print() + print( + "| Chain | Network | cWUSDT | cWUSDC | PMM cWUSDT↔cWUSDC | PMM settlement | " + "UniV2 cWUSDT/cWUSDC live | healthy | Pool |" + ) + print("|------:|:---|:---:|:---:|:---:|:---|:---:|:---:|:---|") + def _fmt_bool(v: bool | None) -> str: + if v is None: + return "—" + return str(v) + + for r in rows: + settle = ", ".join(r["pmmSettlementRails"]) if r["pmmSettlementRails"] else "—" + if len(settle) > 48: + settle = settle[:45] + "…" + print( + f"| {r['chainId']} | {r['network'][:26]} | " + f"{'✓' if r['hasCWUSDT'] else '—'} | {'✓' if r['hasCWUSDC'] else '—'} | " + f"{'✓' if r['pmmCWUSDTvsCWUSDC'] else '—'} | {settle} | " + f"{_fmt_bool(r['uniswapV2CWUSDTvsCWUSDCLive'])} | {_fmt_bool(r['uniswapV2CWUSDTvsCWUSDCHealthy'])} | " + f"`{r['uniswapV2CWUSDTvsCWDCPool'] or '—'}` |" + ) + print() + print("## Notes\n") + print( + "- **PMM settlement**: pools where base is `cWUSDC` or `cWUSDT` and quote is `USDC` or `USDT` " + "in `deployment-status.json`." + ) + print( + "- **Uni V2** columns come from the pair-discovery report (reserves/health are snapshot, not live RPC)." + ) + + +def main() -> None: + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument( + "--deployment-status", + type=Path, + default=DEFAULT_STATUS, + help=f"Default: {DEFAULT_STATUS}", + ) + ap.add_argument( + "--pair-discovery", + type=Path, + default=DEFAULT_DISCOVERY, + help=f"Default: {DEFAULT_DISCOVERY}", + ) + ap.add_argument( + "--json-out", + type=Path, + default=None, + help="Optional path to write machine-readable rows (e.g. reports/status/cw-mesh-deployment-matrix-latest.json)", + ) + ap.add_argument( + "--no-markdown", + action="store_true", + help="Do not print markdown (useful with --json-out only)", + ) + args = ap.parse_args() + + rows = build_rows(args.deployment_status, args.pair_discovery) + payload = { + "schemaVersion": "1.0.0", + "description": "Per-chain merge of deployment-status cwTokens/pmmPools and Uni V2 pair-discovery snapshot.", + "generatedFrom": { + "deploymentStatus": str(args.deployment_status.resolve()), + "pairDiscovery": str(args.pair_discovery.resolve()), + }, + "rows": rows, + } + + if args.json_out: + args.json_out.parent.mkdir(parents=True, exist_ok=True) + args.json_out.write_text(json.dumps(payload, indent=2) + "\n") + + if not args.no_markdown: + print_markdown(rows, payload["generatedFrom"]) + + +if __name__ == "__main__": + main() diff --git a/scripts/lib/promod_uniswap_v2_live_pair_discovery.py b/scripts/lib/promod_uniswap_v2_live_pair_discovery.py index 51ea2e0b..43d14461 100644 --- a/scripts/lib/promod_uniswap_v2_live_pair_discovery.py +++ b/scripts/lib/promod_uniswap_v2_live_pair_discovery.py @@ -4,10 +4,13 @@ from __future__ import annotations from pathlib import Path import argparse from decimal import Decimal, getcontext +from functools import lru_cache import json +import os import re import subprocess import time +from concurrent.futures import ThreadPoolExecutor, as_completed getcontext().prec = 42 @@ -20,6 +23,7 @@ ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" HEALTHY_DEVIATION_BPS = Decimal("25") MIN_HEALTHY_RESERVE_UNITS = Decimal("1000") UINT_RE = re.compile(r"\b\d+\b") +CAST_CALL_TIMEOUT_SECONDS = int(os.environ.get("PROMOD_CAST_TIMEOUT_SECONDS", "20")) CHAIN_CONFIG = { "1": {"rpc_keys": ["ETHEREUM_MAINNET_RPC"], "hub": "USDC"}, @@ -68,9 +72,9 @@ def resolve_env_value(key: str, env_values: dict[str, str], seen: set[str] | Non if seen is None: seen = set() if key in seen: - return env_values.get(key, "") + return os.environ.get(key, env_values.get(key, "")) seen.add(key) - value = env_values.get(key, "") + value = os.environ.get(key, env_values.get(key, "")) if value.startswith("${") and value.endswith("}"): inner = value[2:-1] target = inner.split(":-", 1)[0] @@ -80,18 +84,30 @@ def resolve_env_value(key: str, env_values: dict[str, str], seen: set[str] | Non def cast_call(rpc_url: str, target: str, signature: str, *args: str) -> str: cmd = ["cast", "call", target, signature, *args, "--rpc-url", rpc_url] - return subprocess.check_output(cmd, text=True).strip() + return subprocess.check_output(cmd, text=True, timeout=CAST_CALL_TIMEOUT_SECONDS).strip() + + +@lru_cache(maxsize=1024) +def cast_call_cached(rpc_url: str, target: str, signature: str, *args: str) -> str: + return cast_call(rpc_url, target, signature, *args) def parse_uint(value: str) -> int: - matches = UINT_RE.findall(value) - if not matches: + stripped = value.strip() + if not stripped: raise ValueError(f"could not parse integer from {value!r}") - return int(matches[0]) + return int(stripped.split()[0]) def parse_uints(value: str, count: int) -> list[int]: - matches = [int(match) for match in UINT_RE.findall(value)] + matches = [] + for raw_line in value.splitlines(): + line = raw_line.strip() + if not line: + continue + matches.append(int(line.split()[0])) + if len(matches) == count: + break if len(matches) < count: raise ValueError(f"expected {count} integers, got {value!r}") return matches[:count] @@ -109,11 +125,13 @@ def normalize_units(raw: int, decimals: int) -> Decimal: def compute_pair_health(rpc_url: str, pair_address: str, base_address: str, quote_address: str) -> dict: - token0 = parse_address(cast_call(rpc_url, pair_address, "token0()(address)")) - token1 = parse_address(cast_call(rpc_url, pair_address, "token1()(address)")) - reserve0_raw, reserve1_raw, _ = parse_uints(cast_call(rpc_url, pair_address, "getReserves()(uint112,uint112,uint32)"), 3) - decimals0 = parse_uint(cast_call(rpc_url, token0, "decimals()(uint8)")) - decimals1 = parse_uint(cast_call(rpc_url, token1, "decimals()(uint8)")) + token0 = parse_address(cast_call_cached(rpc_url, pair_address, "token0()(address)")) + token1 = parse_address(cast_call_cached(rpc_url, pair_address, "token1()(address)")) + reserve0_raw, reserve1_raw, _ = parse_uints( + cast_call_cached(rpc_url, pair_address, "getReserves()(uint112,uint112,uint32)"), 3 + ) + decimals0 = parse_uint(cast_call_cached(rpc_url, token0, "decimals()(uint8)")) + decimals1 = parse_uint(cast_call_cached(rpc_url, token1, "decimals()(uint8)")) if token0.lower() == base_address.lower() and token1.lower() == quote_address.lower(): base_raw, quote_raw = reserve0_raw, reserve1_raw @@ -171,6 +189,68 @@ def append_discovered_pair(status: dict, chain_id: str, pair: dict): return True +def build_chain_entry(chain_id: str, chain: dict, config: dict, env_values: dict[str, str]): + factory = resolve_env_value(f"CHAIN_{chain_id}_UNISWAP_V2_FACTORY", env_values) + router = resolve_env_value(f"CHAIN_{chain_id}_UNISWAP_V2_ROUTER", env_values) + start_block = resolve_env_value(f"CHAIN_{chain_id}_UNISWAP_V2_START_BLOCK", env_values) or "0" + rpc_url = "" + for key in config["rpc_keys"]: + value = resolve_env_value(key, env_values) + if value: + rpc_url = value + break + + env_ready = bool(factory and router and rpc_url) + pairs = [] + discovered_rows = [] + if env_ready: + for base, quote, token0, token1 in candidate_pairs(chain): + try: + pair_address = cast_call_cached(rpc_url, factory, "getPair(address,address)(address)", token0, token1) + except Exception as exc: + pair_address = f"ERROR:{exc}" + live = pair_address.lower() != ZERO_ADDRESS and not pair_address.startswith("ERROR:") + row = { + "base": base, + "quote": quote, + "poolAddress": pair_address, + "live": live, + } + if live: + try: + row["health"] = compute_pair_health(rpc_url, pair_address, token0, token1) + except Exception as exc: + row["health"] = {"healthy": False, "error": str(exc)} + discovered_rows.append( + { + "chain_id": chain_id, + "row": { + "base": base, + "quote": quote, + "poolAddress": pair_address, + "factoryAddress": factory, + "routerAddress": router, + "startBlock": int(start_block), + "venue": "uniswap_v2_pair", + "publicRoutingEnabled": False, + }, + } + ) + pairs.append(row) + + entry = { + "chain_id": int(chain_id), + "network": chain.get("name"), + "factoryAddress": factory or None, + "routerAddress": router or None, + "startBlock": int(start_block), + "rpcConfigured": bool(rpc_url), + "envReady": env_ready, + "pairsChecked": pairs, + } + return entry, discovered_rows + + def main(): parser = argparse.ArgumentParser() parser.add_argument("--write-discovered", action="store_true", help="Write discovered live pairs into deployment-status.json under uniswapV2Pools.") @@ -179,74 +259,22 @@ def main(): status = load_json(DEPLOYMENT_STATUS) env_values = load_env(ENV_PATH) - entries = [] + entries_by_chain: dict[str, dict] = {} discovered_for_write = [] + jobs = [] + with ThreadPoolExecutor(max_workers=min(8, len(CHAIN_CONFIG))) as executor: + for chain_id, config in CHAIN_CONFIG.items(): + chain = status["chains"].get(chain_id) + if not chain: + continue + jobs.append((chain_id, executor.submit(build_chain_entry, chain_id, chain, config, env_values))) - for chain_id, config in CHAIN_CONFIG.items(): - chain = status["chains"].get(chain_id) - if not chain: - continue + for chain_id, future in jobs: + entry, discovered_rows = future.result() + entries_by_chain[chain_id] = entry + discovered_for_write.extend(discovered_rows) - factory = resolve_env_value(f"CHAIN_{chain_id}_UNISWAP_V2_FACTORY", env_values) - router = resolve_env_value(f"CHAIN_{chain_id}_UNISWAP_V2_ROUTER", env_values) - start_block = resolve_env_value(f"CHAIN_{chain_id}_UNISWAP_V2_START_BLOCK", env_values) or "0" - rpc_url = "" - for key in config["rpc_keys"]: - value = resolve_env_value(key, env_values) - if value: - rpc_url = value - break - - env_ready = bool(factory and router and rpc_url) - pairs = [] - if env_ready: - for base, quote, token0, token1 in candidate_pairs(chain): - try: - pair_address = cast_call(rpc_url, factory, "getPair(address,address)(address)", token0, token1) - except Exception as exc: - pair_address = f"ERROR:{exc}" - live = pair_address.lower() != ZERO_ADDRESS and not pair_address.startswith("ERROR:") - row = { - "base": base, - "quote": quote, - "poolAddress": pair_address, - "live": live, - } - if live: - try: - row["health"] = compute_pair_health(rpc_url, pair_address, token0, token1) - except Exception as exc: - row["health"] = {"healthy": False, "error": str(exc)} - pairs.append(row) - if live: - discovered_for_write.append( - { - "chain_id": chain_id, - "row": { - "base": base, - "quote": quote, - "poolAddress": pair_address, - "factoryAddress": factory, - "routerAddress": router, - "startBlock": int(start_block), - "venue": "uniswap_v2_pair", - "publicRoutingEnabled": False, - }, - } - ) - - entries.append( - { - "chain_id": int(chain_id), - "network": chain.get("name"), - "factoryAddress": factory or None, - "routerAddress": router or None, - "startBlock": int(start_block), - "rpcConfigured": bool(rpc_url), - "envReady": env_ready, - "pairsChecked": pairs, - } - ) + entries = [entries_by_chain[chain_id] for chain_id in CHAIN_CONFIG if chain_id in entries_by_chain] writes = [] if args.write_discovered: diff --git a/scripts/list_vms.py b/scripts/list_vms.py index e1c31db5..3edba448 100755 --- a/scripts/list_vms.py +++ b/scripts/list_vms.py @@ -12,6 +12,21 @@ import json from typing import Dict, List, Optional, Any from proxmoxer import ProxmoxAPI + +def normalize_proxmox_token_name(user: str, token_name: str) -> str: + """Accept bare token names or full token ids in PROXMOX_TOKEN_NAME.""" + if '!' not in token_name: + return token_name + + token_user, bare_token_name = token_name.split('!', 1) + if token_user != user: + raise ValueError( + f"PROXMOX_TOKEN_NAME is for '{token_user}', but PROXMOX_USER is '{user}'" + ) + if not bare_token_name: + raise ValueError("PROXMOX_TOKEN_NAME is missing the token name after '!'" ) + return bare_token_name + def load_env_file(env_path: str = None) -> dict: """Load environment variables from .env file.""" if env_path is None: @@ -76,6 +91,13 @@ def get_proxmox_connection() -> ProxmoxAPI: print(" PROXMOX_TOKEN_NAME=your-token-name", file=sys.stderr) print(" PROXMOX_TOKEN_VALUE=your-token-value", file=sys.stderr) sys.exit(1) + + if token_value: + try: + token_name = normalize_proxmox_token_name(user, token_name) + except ValueError as exc: + print(f"Error: {exc}", file=sys.stderr) + sys.exit(1) try: if token_value: diff --git a/scripts/list_vms_with_tunnels.py b/scripts/list_vms_with_tunnels.py index 69b1944c..baca4801 100755 --- a/scripts/list_vms_with_tunnels.py +++ b/scripts/list_vms_with_tunnels.py @@ -22,6 +22,21 @@ TUNNEL_URLS = { '192.168.11.12': 'r630-02.d-bis.org', } + +def normalize_proxmox_token_name(user: str, token_name: str) -> str: + """Accept bare token names or full token ids in PROXMOX_TOKEN_NAME.""" + if '!' not in token_name: + return token_name + + token_user, bare_token_name = token_name.split('!', 1) + if token_user != user: + raise ValueError( + f"PROXMOX_TOKEN_NAME is for '{token_user}', but PROXMOX_USER is '{user}'" + ) + if not bare_token_name: + raise ValueError("PROXMOX_TOKEN_NAME is missing the token name after '!'") + return bare_token_name + def load_env_file(env_path: str = None) -> dict: """Load environment variables from .env file.""" if env_path is None: @@ -97,6 +112,13 @@ def get_proxmox_connection() -> Optional[ProxmoxAPI]: if not token_value and not password: print("Error: PROXMOX_TOKEN_VALUE or PROXMOX_PASSWORD required", file=sys.stderr) return None + + if token_value: + try: + token_name = normalize_proxmox_token_name(user, token_name) + except ValueError as exc: + print(f"❌ {exc}", file=sys.stderr) + return None try: if token_value: diff --git a/scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh b/scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh new file mode 100755 index 00000000..4dcf880e --- /dev/null +++ b/scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# Install prune-proxmox-vzdump-dump.sh on Proxmox hosts and schedule weekly cron (Sun 04:15). +# Loads config/ip-addresses.conf. Requires SSH root key access. +# +# Backup retention alignment: +# - pvesh get /cluster/backup — if you add Datacenter → Scheduled backups, set maxfiles +# to the same (or lower) as VZDUMP_PRUNE_KEEP so GUI backups and this prune do not fight. +# - Empty job list: retention for /var/lib/vz/dump is this weekly cron + ad-hoc vzdump. +# +# Usage: +# ./scripts/maintenance/deploy-vzdump-prune-cron-to-proxmox-nodes.sh [--dry-run] +# +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +# shellcheck source=/dev/null +source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true + +PROXMOX_SSH_USER="${PROXMOX_SSH_USER:-root}" +SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10 -o BatchMode=yes" +PRUNE_LOCAL="${SCRIPT_DIR}/prune-proxmox-vzdump-dump.sh" +REMOTE_BIN="/usr/local/sbin/prune-proxmox-vzdump-dump.sh" +KEEP="${VZDUMP_PRUNE_KEEP:-2}" + +HOSTS=( + "${PROXMOX_HOST_ML110:-192.168.11.10}" + "${PROXMOX_HOST_R630_01:-192.168.11.11}" + "${PROXMOX_HOST_R630_02:-192.168.11.12}" +) + +DRY_RUN=false +[[ "${1:-}" == "--dry-run" ]] && DRY_RUN=true + +if [[ ! -f "$PRUNE_LOCAL" ]]; then + echo "Missing $PRUNE_LOCAL" >&2 + exit 1 +fi + +CRON_FILE="/etc/cron.d/vzdump-prune-local" + +for ip in "${HOSTS[@]}"; do + echo "=== ${PROXMOX_SSH_USER}@${ip} ===" + if $DRY_RUN; then + echo "Would: scp $PRUNE_LOCAL -> ${ip}:${REMOTE_BIN}" + echo "Would: install ${CRON_FILE}" + continue + fi + scp $SSH_OPTS "$PRUNE_LOCAL" "${PROXMOX_SSH_USER}@${ip}:${REMOTE_BIN}" + { + echo 'SHELL=/bin/sh' + echo 'PATH=/usr/sbin:/usr/bin:/sbin:/bin' + echo "# vzdump retention — see repo scripts/maintenance/prune-proxmox-vzdump-dump.sh" + echo "15 4 * * 0 root ${REMOTE_BIN} ${KEEP} >>/var/log/vzdump-prune.log 2>&1" + } | ssh $SSH_OPTS "${PROXMOX_SSH_USER}@${ip}" "chmod 755 ${REMOTE_BIN} && cat > ${CRON_FILE} && chmod 644 ${CRON_FILE}" + echo "Installed ${REMOTE_BIN} and ${CRON_FILE} (keep=${KEEP})." +done + +echo "Done. Logs on nodes: /var/log/vzdump-prune.log (after first run)." diff --git a/scripts/maintenance/fix-block-production-staggered-restart.sh b/scripts/maintenance/fix-block-production-staggered-restart.sh index 4c47ce6d..eab75d78 100755 --- a/scripts/maintenance/fix-block-production-staggered-restart.sh +++ b/scripts/maintenance/fix-block-production-staggered-restart.sh @@ -5,7 +5,7 @@ # the rest stay at head so the restarted node syncs quickly and consensus can continue. # # Usage: ./scripts/maintenance/fix-block-production-staggered-restart.sh [--dry-run] -# Requires: SSH to Proxmox hosts (192.168.11.10 ML110, 192.168.11.11 R630-01, 192.168.11.12 R630-02) +# Requires: SSH to Proxmox hosts (192.168.11.11 R630-01, 192.168.11.13 R630-03) set -euo pipefail @@ -28,8 +28,8 @@ log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } # Order: restart one at a time; wait between so restarted node can sync from others # VMID : host VALIDATORS=( - "1004:${PROXMOX_HOST_ML110:-192.168.11.10}" - "1003:${PROXMOX_HOST_ML110:-192.168.11.10}" + "1004:${PROXMOX_HOST_R630_03:-192.168.11.13}" + "1003:${PROXMOX_HOST_R630_03:-192.168.11.13}" "1002:${PROXMOX_HOST_R630_01:-192.168.11.11}" "1001:${PROXMOX_HOST_R630_01:-192.168.11.11}" "1000:${PROXMOX_HOST_R630_01:-192.168.11.11}" diff --git a/scripts/maintenance/proxmox-backup-all-running-ct.sh b/scripts/maintenance/proxmox-backup-all-running-ct.sh new file mode 100755 index 00000000..e63965e8 --- /dev/null +++ b/scripts/maintenance/proxmox-backup-all-running-ct.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +# Fleet vzdump of all *running* LXC on a Proxmox node (intended: r630-01 via cron). +# - Uses zstd (faster / often better than gzip for this workload; extension .tar.zst). +# - Retention: do NOT use rough mtime deletes here — keep /etc/cron.d/vzdump-prune-local +# (prune-proxmox-vzdump-dump.sh keep=2) as the cap on /var/lib/vz/dump. +# Install (from repo, r630-01): +# scp scripts/maintenance/proxmox-backup-all-running-ct.sh root@192.168.11.11:/usr/local/bin/proxmox-backup.sh +# ssh root@192.168.11.11 'chmod 755 /usr/local/bin/proxmox-backup.sh' +# Cron (root on r630-01, single daily run with lock): +# 0 2 * * * /usr/bin/flock -n /var/lock/proxmox-backup.lock /usr/local/bin/proxmox-backup.sh +# To skip a few very large VMIDs (space-separated) on that run only, use: +# VZDUMP_SKIP_VMIDS="2101 2500" /usr/local/bin/proxmox-backup.sh +# Or: VZDUMP_COMPRESS=gzip if you must match legacy .tar.gz (not recommended). +# +set -euo pipefail + +BACKUP_STORAGE="${BACKUP_STORAGE:-local}" +LOG_DIR="${LOG_DIR:-/var/log/proxmox-backups}" +LOG_FILE="${LOG_DIR}/backup_$(date +%Y%m%d).log" +COMPRESS="${VZDUMP_COMPRESS:-zstd}" +# Space-separated VMIDs to skip (e.g. test CTs) +SKIP_VMIDS="${VZDUMP_SKIP_VMIDS:-}" + +mkdir -p "$LOG_DIR" + +log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"; } + +is_skipped() { + local v="$1" + for s in $SKIP_VMIDS; do [[ "$v" == "$s" ]] && return 0; done + return 1 +} + +log "Starting backup job (compress=$COMPRESS storage=$BACKUP_STORAGE)..." + +mapfile -t vmids < <(pct list 2>/dev/null | awk 'NR>1 && $2=="running" {print $1}') + +if ((${#vmids[@]} == 0)); then + log "No running containers." + exit 0 +fi + +log "VMIDs: ${vmids[*]}" + +ok=0 +fail=0 +for vmid in "${vmids[@]}"; do + is_skipped "$vmid" && { log "SKIP $vmid (VZDUMP_SKIP_VMIDS)"; continue; } + log "vzdump $vmid..." + if command -v ionice >/dev/null 2>&1; then + run=(nice ionice -c2 -n7 vzdump) + else + run=(nice vzdump) + fi + if "${run[@]}" "$vmid" --storage "$BACKUP_STORAGE" --compress "$COMPRESS" --mode snapshot --quiet; then + log "OK $vmid" + ok=$((ok + 1)) + else + log "FAIL $vmid (non-zero exit)" + fail=$((fail + 1)) + fi +done + +log "Done. success=$ok fail=$fail. Retention: /usr/local/sbin/prune-proxmox-vzdump-dump.sh (weekly cron)." +exit 0 diff --git a/scripts/maintenance/prune-orphan-vzdump-logs.sh b/scripts/maintenance/prune-orphan-vzdump-logs.sh new file mode 100755 index 00000000..b4f3b950 --- /dev/null +++ b/scripts/maintenance/prune-orphan-vzdump-logs.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Remove old vzdump *.log files in /var/lib/vz/dump (partial/failed run leftovers). +# Usage: +# ./scripts/maintenance/prune-orphan-vzdump-logs.sh 192.168.11.12 +# ./scripts/maintenance/prune-orphan-vzdump-logs.sh 192.168.11.12 --apply +# Env: MIN_AGE_DAYS=90 VZDUMP_DIR=/var/lib/vz/dump +# +set -euo pipefail +MIN_AGE_DAYS="${MIN_AGE_DAYS:-90}" +DUMP="${VZDUMP_DIR:-/var/lib/vz/dump}" +HOST="${1:-}" +APPLY=0 +[[ "${2:-}" == "--apply" ]] && APPLY=1 + +if [[ -z "$HOST" ]]; then + echo "Usage: $0 [--apply]" >&2 + exit 1 +fi + +ssh -o ConnectTimeout=10 -o BatchMode=yes -o StrictHostKeyChecking=no "root@$HOST" \ + MIN_AGE_DAYS="$MIN_AGE_DAYS" DUMP="$DUMP" APPLY="$APPLY" 'bash' <<'NODERUN' +set -euo pipefail +c=$(find "$DUMP" -maxdepth 1 -name "vzdump-*.log" -mtime "+${MIN_AGE_DAYS}" 2>/dev/null | wc -l) +echo "[$(hostname)] $DUMP: $c log file(s) mtime +${MIN_AGE_DAYS}d" +if (( c == 0 )); then exit 0; fi +if [[ "$APPLY" == "1" ]]; then + find "$DUMP" -maxdepth 1 -name "vzdump-*.log" -mtime "+${MIN_AGE_DAYS}" -print -delete + echo "Deleted." +else + find "$DUMP" -maxdepth 1 -name "vzdump-*.log" -mtime "+${MIN_AGE_DAYS}" -ls 2>/dev/null | head -20 + echo "Dry-run. Re-run with same host and --apply" +fi +NODERUN diff --git a/scripts/maintenance/prune-proxmox-vzdump-dump.sh b/scripts/maintenance/prune-proxmox-vzdump-dump.sh new file mode 100755 index 00000000..39d9f67b --- /dev/null +++ b/scripts/maintenance/prune-proxmox-vzdump-dump.sh @@ -0,0 +1,127 @@ +#!/usr/bin/env bash +# Prune old Proxmox vzdump archives under /var/lib/vz/dump (the "local" dir storage). +# Keeps the N newest archive per VMID for each family: +# - vzdump-lxc--*.(tar.gz|tar.zst|vma.zst|vma.gz) +# - vzdump-qemu--*.(tar.gz|tar.zst|vma.zst|vma.gz) +# - vzdump--.(tar.gz|tar.zst) (legacy naming without lxc/qemu) +# Removes matching .log / .notes sidecars when removing an archive. +# +# Run ON the Proxmox node as root, or via SSH: +# ssh root@192.168.11.11 'bash -s' < scripts/maintenance/prune-proxmox-vzdump-dump.sh -- 2 +# +# Args: [KEEP] (default 2). Env: VZDUMP_DIR=/var/lib/vz/dump +# +set -euo pipefail + +KEEP="${1:-2}" +DUMP="${VZDUMP_DIR:-/var/lib/vz/dump}" + +if ! [[ "$KEEP" =~ ^[0-9]+$ ]] || ((KEEP < 1)); then + echo "Usage: $0 [KEEP>=1]" >&2 + exit 1 +fi + +cd "$DUMP" || { + echo "Cannot cd to $DUMP" >&2 + exit 1 +} + +shopt -s nullglob +removed=0 + +# Sidecars for archive basename $1 (path without extension chain handled per type) +remove_sidecars() { + local base="$1" + rm -f -- "${base}.log" "${base}.notes" "${base}.notes.zst" 2>/dev/null || true +} + +# $1 = prefix e.g. vzdump-lxc, $2 = vmid +prune_family_globs() { + local prefix="$1" + local vmid="$2" + local -a archives=() + local f n i base + for f in \ + "${prefix}-${vmid}-"*.tar.gz \ + "${prefix}-${vmid}-"*.tar.zst \ + "${prefix}-${vmid}-"*.vma.zst \ + "${prefix}-${vmid}-"*.vma.gz; do + [[ -f "$f" ]] || continue + archives+=("$f") + done + ((${#archives[@]} == 0)) && return 0 + mapfile -t sorted < <(ls -t "${archives[@]}" 2>/dev/null) + n=${#sorted[@]} + ((n > KEEP)) || return 0 + for ((i = KEEP; i < n; i++)); do + f="${sorted[i]}" + base="${f%.tar.gz}" + base="${base%.tar.zst}" + base="${base%.vma.zst}" + base="${base%.vma.gz}" + rm -f -- "$f" + remove_sidecars "$base" + ((removed += 1)) || true + done +} + +# Legacy: vzdump--.tar.* +prune_legacy_vmid() { + local vmid="$1" + local -a archives=() + local f n i base + for f in vzdump-"${vmid}"-*.tar.gz vzdump-"${vmid}"-*.tar.zst vzdump-"${vmid}"-*.vma.zst vzdump-"${vmid}"-*.vma.gz; do + [[ -f "$f" ]] || continue + [[ "$f" == vzdump-lxc-* || "$f" == vzdump-qemu-* ]] && continue + archives+=("$f") + done + ((${#archives[@]} == 0)) && return 0 + mapfile -t sorted < <(ls -t "${archives[@]}" 2>/dev/null) + n=${#sorted[@]} + ((n > KEEP)) || return 0 + for ((i = KEEP; i < n; i++)); do + f="${sorted[i]}" + base="${f%.tar.gz}" + base="${base%.tar.zst}" + base="${base%.vma.zst}" + base="${base%.vma.gz}" + rm -f -- "$f" + remove_sidecars "$base" + ((removed += 1)) || true + done +} + +declare -A vmid_lxc=() +declare -A vmid_qemu=() +declare -A vmid_legacy=() + +for f in vzdump-lxc-*; do + [[ -f "$f" ]] || continue + [[ "$f" =~ ^vzdump-lxc-([0-9]+)- ]] || continue + vmid_lxc["${BASH_REMATCH[1]}"]=1 +done +for f in vzdump-qemu-*; do + [[ -f "$f" ]] || continue + [[ "$f" =~ ^vzdump-qemu-([0-9]+)- ]] || continue + vmid_qemu["${BASH_REMATCH[1]}"]=1 +done +for f in vzdump-[0-9]*-*; do + [[ -f "$f" ]] || continue + [[ "$f" == vzdump-lxc-* || "$f" == vzdump-qemu-* ]] && continue + [[ "$f" =~ \.(tar\.gz|tar\.zst|vma\.zst|vma\.gz)$ ]] || continue + [[ "$f" =~ ^vzdump-([0-9]+)-[0-9_]+ ]] || continue + vmid_legacy["${BASH_REMATCH[1]}"]=1 +done + +for vmid in "${!vmid_lxc[@]}"; do + prune_family_globs vzdump-lxc "$vmid" +done +for vmid in "${!vmid_qemu[@]}"; do + prune_family_globs vzdump-qemu "$vmid" +done +for vmid in "${!vmid_legacy[@]}"; do + prune_legacy_vmid "$vmid" +done + +echo "prune-proxmox-vzdump-dump: removed ${removed} archive(s); keep=${KEEP} newest per VMID in ${DUMP}" +df -h "$DUMP" 2>/dev/null || df -h /var/lib/vz diff --git a/scripts/maintenance/verify-pve-cluster-health.sh b/scripts/maintenance/verify-pve-cluster-health.sh new file mode 100755 index 00000000..b25b3c3d --- /dev/null +++ b/scripts/maintenance/verify-pve-cluster-health.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Quick post-maintenance check: corosync quorum and node list from one Proxmox host. +# Usage: ./scripts/maintenance/verify-pve-cluster-health.sh [r630-01-ip] +# Requires SSH root@host (BatchMode + key). +# +set -euo pipefail +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=/dev/null +source "${SCRIPT_DIR}/../../config/ip-addresses.conf" 2>/dev/null || true + +IP="${1:-${PROXMOX_HOST_R630_01:-192.168.11.11}}" +SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=12 -o BatchMode=yes" + +echo "=== pvecm status ($IP) ===" +ssh $SSH_OPTS "root@$IP" "pvecm status; echo '---'; pvesh get /nodes --output-format json-pretty 2>/dev/null | head -80" || { + echo "SSH or pvecm failed." + exit 1 +} +echo "OK. Expect: Quorate: Yes, and expected nodes online." diff --git a/scripts/monitoring/collect-storage-growth-data.sh b/scripts/monitoring/collect-storage-growth-data.sh old mode 100644 new mode 100755 diff --git a/scripts/run-all-operator-tasks-from-lan.sh b/scripts/run-all-operator-tasks-from-lan.sh index bcd2a673..d26d19ed 100755 --- a/scripts/run-all-operator-tasks-from-lan.sh +++ b/scripts/run-all-operator-tasks-from-lan.sh @@ -61,7 +61,7 @@ echo "" if [[ "$DRY_RUN" == true ]]; then echo "[DRY-RUN] Would run: run-wave0-from-lan.sh (NPMplus RPC fix + backup)" else - bash "$SCRIPT_DIR/run-wave0-from-lan.sh" $([[ "$SKIP_BACKUP" == true ]] && echo --skip-backup) 2>/dev/null || true + bash "$SCRIPT_DIR/run-wave0-from-lan.sh" $([[ "$SKIP_BACKUP" == true ]] && echo --skip-backup) fi echo "" diff --git a/scripts/run-completable-tasks-from-anywhere.sh b/scripts/run-completable-tasks-from-anywhere.sh index 0a069df5..fc0c809f 100755 --- a/scripts/run-completable-tasks-from-anywhere.sh +++ b/scripts/run-completable-tasks-from-anywhere.sh @@ -21,7 +21,7 @@ if $DRY_RUN; then echo "" echo "1. Config validation: bash scripts/validation/validate-config-files.sh [--dry-run]" echo "2. On-chain check (138): SKIP_EXIT=1 bash scripts/verify/check-contracts-on-chain-138.sh || true" - echo "3. All validation: bash scripts/verify/run-all-validation.sh --skip-genesis" + echo "3. All validation: bash scripts/verify/run-all-validation.sh --skip-genesis (includes cW* mesh matrix when pair-discovery JSON exists)" echo "4. Reconcile .env: bash scripts/verify/reconcile-env-canonical.sh --print" echo "" echo "Run without --dry-run to execute. Exit 0 = success." @@ -41,7 +41,7 @@ echo "[Step 2/4] On-chain contract check (Chain 138)..." SKIP_EXIT=1 bash scripts/verify/check-contracts-on-chain-138.sh || true echo "" -# 3. Full validation (skip genesis to avoid RPC) +# 3. Full validation (skip genesis to avoid RPC; includes cW* mesh matrix when pair-discovery JSON exists) echo "[Step 3/4] Run all validation (--skip-genesis)..." bash scripts/verify/run-all-validation.sh --skip-genesis echo "" diff --git a/scripts/validation/validate-config-files.sh b/scripts/validation/validate-config-files.sh index a37f5d2a..29852d6b 100755 --- a/scripts/validation/validate-config-files.sh +++ b/scripts/validation/validate-config-files.sh @@ -132,6 +132,23 @@ else log_err "Missing config/public-sector-program-manifest.json" ERRORS=$((ERRORS + 1)) fi + # Phoenix deploy targets (used by phoenix-deploy-api POST /api/deploy) + if [[ -f "$PROJECT_ROOT/phoenix-deploy-api/deploy-targets.json" ]]; then + log_ok "Found: phoenix-deploy-api/deploy-targets.json" + if [[ -x "$PROJECT_ROOT/scripts/validation/validate-phoenix-deploy-targets.sh" ]]; then + if "$PROJECT_ROOT/scripts/validation/validate-phoenix-deploy-targets.sh" "$PROJECT_ROOT/phoenix-deploy-api/deploy-targets.json" >/dev/null; then + log_ok "phoenix-deploy-api/deploy-targets.json: repo/branch/target map valid" + else + log_err "phoenix-deploy-api/deploy-targets.json: invalid structure" + ERRORS=$((ERRORS + 1)) + fi + else + log_warn "validate-phoenix-deploy-targets.sh not executable; skipping deploy target validation" + fi + else + log_err "Missing phoenix-deploy-api/deploy-targets.json" + ERRORS=$((ERRORS + 1)) + fi # Proxmox operational template (VMID/IP/FQDN mirror; see docs/03-deployment/PROXMOX_VE_OPERATIONAL_DEPLOYMENT_TEMPLATE.md) if [[ -f "$PROJECT_ROOT/config/proxmox-operational-template.json" ]]; then log_ok "Found: config/proxmox-operational-template.json" diff --git a/scripts/validation/validate-phoenix-deploy-targets.sh b/scripts/validation/validate-phoenix-deploy-targets.sh new file mode 100755 index 00000000..6de993d4 --- /dev/null +++ b/scripts/validation/validate-phoenix-deploy-targets.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Validate phoenix-deploy-api/deploy-targets.json structure. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +TARGETS_FILE="${1:-$PROJECT_ROOT/phoenix-deploy-api/deploy-targets.json}" + +if [[ ! -f "$TARGETS_FILE" ]]; then + echo "[ERROR] Missing deploy targets file: $TARGETS_FILE" >&2 + exit 1 +fi + +if ! command -v jq >/dev/null 2>&1; then + echo "[ERROR] jq is required to validate $TARGETS_FILE" >&2 + exit 1 +fi + +jq -e ' + (.targets | type == "array") + and (.targets | length > 0) + and all(.targets[]; ( + (.repo | type == "string" and length > 0) + and ((.branch // "main") | type == "string" and length > 0) + and ((.target // "default") | type == "string" and length > 0) + and (.cwd | type == "string" and length > 0) + and (.command | type == "array" and length > 0) + and (all(.command[]; type == "string" and length > 0)) + and ((.required_env // []) | type == "array") + and (all((.required_env // [])[]?; type == "string" and length > 0)) + and ( + (.healthcheck // null) == null or ( + (.healthcheck.url | type == "string" and length > 0) + and ((.healthcheck.expect_status // 200) | type == "number") + and ((.healthcheck.attempts // 1) | type == "number") + and ((.healthcheck.delay_ms // 0) | type == "number") + and ((.healthcheck.timeout_ms // 10000) | type == "number") + ) + ) + )) + and ( + [.targets[] | [(.repo), (.branch // "main"), (.target // "default")] | join("|")] + | length == (unique | length) + ) +' "$TARGETS_FILE" >/dev/null + +echo "[OK] phoenix deploy targets valid: $TARGETS_FILE" diff --git a/scripts/verify-contracts-blockscout.sh b/scripts/verify-contracts-blockscout.sh index 64fb780e..de1e4466 100755 --- a/scripts/verify-contracts-blockscout.sh +++ b/scripts/verify-contracts-blockscout.sh @@ -4,7 +4,7 @@ # Before each verify, uses `cast code` on RPC to skip EOAs / empty code (avoids Blockscout # "not a smart contract" noise for addresses like WETH10 when nothing is deployed there). # Set VERIFY_SKIP_BYTECODE_CHECK=1 to attempt forge verify even when code lookup fails or is empty. -# Version: 2026-03-26 +# Version: 2026-04-22 (DODO PMM + TransactionMirror: explicit constructor args + deploy profile) set -euo pipefail @@ -89,6 +89,8 @@ ADDR_CCIP_SENDER="${CCIP_SENDER:-${ADDR_CCIP_SENDER:-0x105F8A15b819948a891535057 ADDR_CCIPWETH10="${CCIPWETH10_BRIDGE_CHAIN138:-${ADDR_CCIPWETH10_BRIDGE:-0xe0E93247376aa097dB308B92e6Ba36bA015535D0}}" ADDR_CCIPWETH9="${CCIPWETH9_BRIDGE_CHAIN138:-${ADDR_CCIPWETH9_BRIDGE:-0x971cD9D156f193df8051E48043C476e53ECd4693}}" ADDR_WETH10="${WETH10_CHAIN138:-0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f}" +# Used early for AccessControl admin resolution (mirror admin often matches DODO admin on Chain 138). +ADDR_TX_MIRROR="${TRANSACTION_MIRROR_ADDRESS:-}" should_verify WETH10 && verify_one "$ADDR_WETH10" "WETH10" "contracts/tokens/WETH10.sol:WETH10" should_verify Multicall && verify_one "$ADDR_MULTICALL" "Multicall" "contracts/utils/Multicall.sol:Multicall" @@ -108,5 +110,119 @@ if [[ -d "$ALLTRA" ]]; then should_verify WithdrawalEscrow && { echo "Verifying WithdrawalEscrow at $ADDR_ESCROW..."; (cd "$ALLTRA" && forge verify-contract "$ADDR_ESCROW" "contracts/settlement/WithdrawalEscrow.sol:WithdrawalEscrow" --chain-id 138 --verifier blockscout --verifier-url "$VERIFIER_URL" --rpc-url "$RPC" --flatten 2>&1) && echo " OK" || echo " (skip)"; } fi +# Optional DODO PMM + TransactionMirror (addresses from smom-dbis-138/.env). +# Uses explicit constructor args read from chain (immutables + AccessControl admin via hasRole). +# Bytecode match: FOUNDRY_PROFILE=deploy (optimizer 100, via_ir, cancun) — override with VERIFY_CHAIN138_FOUNDRY_PROFILE=default if your deployment used the default profile instead. +DEFAULT_ADMIN_ROLE_ZERO="0x0000000000000000000000000000000000000000000000000000000000000000" + +# Resolve DEFAULT_ADMIN_ROLE holder for AccessControl (tries env candidates, then TransactionMirror admin()). +resolve_access_control_admin() { + local contract="$1" + local rpc="$2" + local role="$DEFAULT_ADMIN_ROLE_ZERO" + local cand adm hr + local -a cands=() + [[ -n "${DODO_INTEGRATION_ADMIN:-}" ]] && cands+=("${DODO_INTEGRATION_ADMIN}") + [[ -n "${DODO_PMM_PROVIDER_ADMIN:-}" ]] && cands+=("${DODO_PMM_PROVIDER_ADMIN}") + if [[ -n "${ADDR_TX_MIRROR:-}" ]]; then + adm=$(cast call "${ADDR_TX_MIRROR}" "admin()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || true + [[ -n "$adm" && "$adm" != "0x0000000000000000000000000000000000000000" ]] && cands+=("$adm") + fi + [[ -n "${GOVERNANCE_CONTROLLER:-}" ]] && cands+=("${GOVERNANCE_CONTROLLER}") + [[ -n "${ADDR_MULTISIG:-}" ]] && cands+=("${ADDR_MULTISIG}") + + for cand in "${cands[@]}"; do + [[ -z "$cand" ]] && continue + hr=$(cast call "$contract" "hasRole(bytes32,address)(bool)" "$role" "$cand" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || continue + if [[ "$hr" == "true" ]]; then + echo "$cand" + return 0 + fi + done + return 1 +} + +dodo_integration_constructor_hex() { + local int="$1" rpc="$2" admin="$3" + local dvm appr usdt usdc cusdt cusdc + dvm=$(cast call "$int" "dodoVendingMachine()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + appr=$(cast call "$int" "dodoApprove()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + usdt=$(cast call "$int" "officialUSDT()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + usdc=$(cast call "$int" "officialUSDC()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + cusdt=$(cast call "$int" "compliantUSDT()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + cusdc=$(cast call "$int" "compliantUSDC()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + cast abi-encode 'constructor(address,address,address,address,address,address,address)' \ + "$admin" "$dvm" "$appr" "$usdt" "$usdc" "$cusdt" "$cusdc" 2>/dev/null | tr -d '\n\r \t' +} + +dodo_provider_constructor_hex() { + local prov="$1" rpc="$2" admin="$3" + local di + di=$(cast call "$prov" "dodoIntegration()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + cast abi-encode 'constructor(address,address)' "$di" "$admin" 2>/dev/null | tr -d '\n\r \t' +} + +transaction_mirror_constructor_hex() { + local mir="$1" rpc="$2" + local adm + adm=$(cast call "$mir" "admin()(address)" --rpc-url "$rpc" 2>/dev/null | tr -d '\n\r \t') || return 1 + cast abi-encode 'constructor(address)' "$adm" 2>/dev/null | tr -d '\n\r \t' +} + +verify_one_explicit() { + local addr="$1" path="$2" name="$3" ctor_hex="$4" + local profile="${VERIFY_CHAIN138_FOUNDRY_PROFILE:-deploy}" + echo "Verifying $name at $addr (explicit ctor, FOUNDRY_PROFILE=$profile)..." + if ! has_contract_bytecode "$addr"; then + echo " skip: no contract bytecode at $addr" + return 0 + fi + if [[ -z "$ctor_hex" ]]; then + echo " skip: could not build constructor args (cast/RPC failed)" + return 0 + fi + if FOUNDRY_PROFILE="$profile" forge verify-contract "$addr" "$path" \ + --chain-id 138 \ + --constructor-args "$ctor_hex" \ + --verifier blockscout \ + --verifier-url "$VERIFIER_URL" \ + --rpc-url "$RPC" \ + --skip-is-verified-check 2>&1; then + echo " OK" + else + echo " (skip: mismatch or already verified — try VERIFY_CHAIN138_FOUNDRY_PROFILE=default or confirm deploy profile in foundry.toml)" + fi +} + +ADDR_DODO_INTEGRATION="${DODO_PMM_INTEGRATION_ADDRESS:-${DODO_PMM_INTEGRATION:-${CHAIN_138_DODO_PMM_INTEGRATION:-}}}" +ADDR_DODO_PROVIDER="${DODO_PMM_PROVIDER_ADDRESS:-${DODO_PMM_PROVIDER:-}}" + +if [[ -n "$ADDR_DODO_INTEGRATION" ]] && should_verify DODOPMMIntegration; then + admin_i=$(resolve_access_control_admin "$ADDR_DODO_INTEGRATION" "$RPC" || true) + if [[ -z "$admin_i" ]]; then + echo "Verifying DODOPMMIntegration at $ADDR_DODO_INTEGRATION — skip: could not resolve AccessControl admin (set DODO_INTEGRATION_ADMIN or TRANSACTION_MIRROR_ADDRESS for hasRole probe)" + else + enc=$(dodo_integration_constructor_hex "$ADDR_DODO_INTEGRATION" "$RPC" "$admin_i" || true) + verify_one_explicit "$ADDR_DODO_INTEGRATION" "contracts/dex/DODOPMMIntegration.sol:DODOPMMIntegration" "DODOPMMIntegration" "${enc:-}" + fi +fi + +if [[ -n "$ADDR_DODO_PROVIDER" ]] && should_verify DODOPMMProvider; then + admin_p=$(resolve_access_control_admin "$ADDR_DODO_PROVIDER" "$RPC" || true) + if [[ -z "$admin_p" ]]; then + echo "Verifying DODOPMMProvider at $ADDR_DODO_PROVIDER — skip: could not resolve AccessControl admin (set DODO_PMM_PROVIDER_ADMIN or TRANSACTION_MIRROR_ADDRESS)" + else + enc=$(dodo_provider_constructor_hex "$ADDR_DODO_PROVIDER" "$RPC" "$admin_p" || true) + verify_one_explicit "$ADDR_DODO_PROVIDER" "contracts/liquidity/providers/DODOPMMProvider.sol:DODOPMMProvider" "DODOPMMProvider" "${enc:-}" + fi +fi + +if [[ -n "$ADDR_TX_MIRROR" ]] && should_verify TransactionMirror; then + enc=$(transaction_mirror_constructor_hex "$ADDR_TX_MIRROR" "$RPC" || true) + verify_one_explicit "$ADDR_TX_MIRROR" "contracts/mirror/TransactionMirror.sol:TransactionMirror" "TransactionMirror" "${enc:-}" +fi + +# CompliantFiatToken: one deployment per currency with distinct constructor args — verify per token in the Blockscout UI or add scripted entries when addresses are enumerated in env. + echo "" echo "Done. Check http://${IP_BLOCKSCOUT} or https://explorer.d-bis.org for verification status." diff --git a/scripts/verify/build-cw-mesh-deployment-matrix.sh b/scripts/verify/build-cw-mesh-deployment-matrix.sh new file mode 100755 index 00000000..23c87a63 --- /dev/null +++ b/scripts/verify/build-cw-mesh-deployment-matrix.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +# Read-only matrix: deployment-status.json + Uni V2 pair-discovery JSON -> stdout (+ optional JSON). +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +cd "$ROOT" + +python3 scripts/lib/cw_mesh_deployment_matrix.py "$@" diff --git a/scripts/verify/build-cw-public-price-table.py b/scripts/verify/build-cw-public-price-table.py new file mode 100644 index 00000000..0e554e90 --- /dev/null +++ b/scripts/verify/build-cw-public-price-table.py @@ -0,0 +1,452 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import json +import math +import re +import subprocess +import time +from collections import deque +from dataclasses import dataclass +from decimal import Decimal, InvalidOperation, getcontext +from pathlib import Path + +getcontext().prec = 50 + +ROOT = Path(__file__).resolve().parents[2] +DEPLOYMENT_STATUS = ROOT / "cross-chain-pmm-lps" / "config" / "deployment-status.json" +UNISWAP_DISCOVERY = ROOT / "reports" / "extraction" / "promod-uniswap-v2-live-pair-discovery-latest.json" +JSON_OUT = ROOT / "reports" / "status" / "cw-public-prices-latest.json" +DOC_OUT = ROOT / "docs" / "03-deployment" / "CW_PUBLIC_NETWORK_PRICES.md" +ROOT_ENV_PATH = ROOT / ".env" +SMOM_ENV_PATH = ROOT / "smom-dbis-138" / ".env" +ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" +UINT_RE = re.compile(r"\b\d+\b") + +CHAIN_CONFIG = { + "1": {"rpc_keys": ["ETHEREUM_MAINNET_RPC"]}, + "10": {"rpc_keys": ["OPTIMISM_RPC_URL", "OPTIMISM_MAINNET_RPC"]}, + "25": {"rpc_keys": ["CRONOS_RPC_URL", "CRONOS_MAINNET_RPC"]}, + "56": {"rpc_keys": ["BSC_RPC_URL", "BSC_MAINNET_RPC"]}, + "100": {"rpc_keys": ["GNOSIS_RPC_URL", "GNOSIS_MAINNET_RPC", "GNOSIS_RPC"]}, + "137": {"rpc_keys": ["POLYGON_MAINNET_RPC", "POLYGON_RPC_URL"]}, + "1111": {"rpc_keys": ["WEMIX_RPC_URL", "WEMIX_MAINNET_RPC"]}, + "8453": {"rpc_keys": ["BASE_RPC_URL", "BASE_MAINNET_RPC"]}, + "42161": {"rpc_keys": ["ARBITRUM_RPC_URL", "ARBITRUM_MAINNET_RPC"]}, + "42220": {"rpc_keys": ["CELO_RPC_URL", "CELO_MAINNET_RPC", "CELO_RPC"]}, + "43114": {"rpc_keys": ["AVALANCHE_RPC_URL", "AVALANCHE_MAINNET_RPC"]}, +} + +STABLES = {"USDC": Decimal("1"), "USDT": Decimal("1")} + + +@dataclass(frozen=True) +class Edge: + src: str + dst: str + ratio: Decimal + venue: str + path_label: str + price_detail: str + liquidity_note: str + + +def now() -> str: + return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) + + +def load_json(path: Path) -> dict: + return json.loads(path.read_text()) + + +def write_json(path: Path, payload: dict) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, indent=2) + "\n") + + +def write_text(path: Path, text: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text.rstrip() + "\n") + + +def load_env_file(path: Path) -> dict[str, str]: + values: dict[str, str] = {} + if not path.exists(): + return values + for raw_line in path.read_text().splitlines(): + line = raw_line.strip() + if not line or line.startswith("#") or "=" not in line: + continue + key, value = line.split("=", 1) + values[key.strip()] = value.strip().strip('"').strip("'") + return values + + +def merged_env_values() -> dict[str, str]: + values: dict[str, str] = {} + values.update(load_env_file(ROOT_ENV_PATH)) + values.update(load_env_file(SMOM_ENV_PATH)) + values.update(load_env_from_shell()) + return values + + +def load_env_from_shell() -> dict[str, str]: + loader = ROOT / "smom-dbis-138" / "scripts" / "load-env.sh" + if not loader.exists(): + return {} + proc = subprocess.run( + ["bash", "-lc", f"source {loader} >/dev/null 2>&1 && env"], + text=True, + capture_output=True, + timeout=15, + check=False, + cwd=ROOT, + ) + if proc.returncode != 0: + return {} + values: dict[str, str] = {} + for raw_line in proc.stdout.splitlines(): + if "=" not in raw_line: + continue + key, value = raw_line.split("=", 1) + values[key.strip()] = value.strip() + return values + + +def resolve_env_value(key: str, env_values: dict[str, str], seen: set[str] | None = None) -> str: + if seen is None: + seen = set() + if key in seen: + return env_values.get(key, "") + seen.add(key) + value = env_values.get(key, "") + if value.startswith("${") and value.endswith("}"): + inner = value[2:-1] + target = inner.split(":-", 1)[0] + fallback = inner.split(":-", 1)[1] if ":-" in inner else "" + resolved = resolve_env_value(target, env_values, seen) + return resolved or fallback + return value.rstrip("\r\n") + + +def parse_uint(value: str) -> int: + cleaned = re.sub(r"\[[^\]]*\]", "", value) + matches = UINT_RE.findall(cleaned) + if matches: + return int(matches[0]) + for line in value.splitlines(): + token = line.strip().split(" ", 1)[0] + if token.isdigit(): + return int(token) + raise ValueError(f"could not parse integer from {value!r}") + + +def parse_uints(value: str, count: int) -> list[int]: + cleaned = re.sub(r"\[[^\]]*\]", "", value) + matches = [int(match) for match in UINT_RE.findall(cleaned)] + if len(matches) >= count: + return matches[:count] + matches = [] + for line in value.splitlines(): + token = line.strip().split(" ", 1)[0] + if token.isdigit(): + matches.append(int(token)) + if len(matches) < count: + raise ValueError(f"expected {count} integers, got {value!r}") + return matches[:count] + + +def cast_call(rpc_url: str, target: str, signature: str, *args: str) -> str: + cmd = ["cast", "call", target, signature, *args, "--rpc-url", rpc_url] + proc = subprocess.run(cmd, text=True, capture_output=True, timeout=3, check=False) + if proc.returncode != 0: + stderr = proc.stderr.strip() or proc.stdout.strip() or "cast call failed" + raise RuntimeError(stderr) + return proc.stdout.strip() + + +def safe_decimal(value: str | int | float | Decimal | None) -> Decimal | None: + if value is None: + return None + try: + return Decimal(str(value)) + except (InvalidOperation, ValueError): + return None + + +def format_decimal(value: Decimal | None, places: int = 8) -> str: + if value is None: + return "not found" + quant = Decimal(10) ** -places + try: + rounded = value.quantize(quant) + except InvalidOperation: + return str(value) + return format(rounded, "f") + + +def normalize_18(raw: int) -> Decimal: + return Decimal(raw) / (Decimal(10) ** 18) + + +def rpc_for_chain(chain_id: str, env_values: dict[str, str]) -> str: + if chain_id == "1": + infura_project_id = resolve_env_value("INFURA_PROJECT_ID", env_values) + if infura_project_id: + return f"https://mainnet.infura.io/v3/{infura_project_id}" + config = CHAIN_CONFIG.get(chain_id, {}) + for key in config.get("rpc_keys", []): + value = resolve_env_value(key, env_values) + if value: + return value + return "" + + +def build_uniswap_edges(entry: dict) -> list[Edge]: + edges: list[Edge] = [] + for row in entry.get("pairsChecked") or []: + if not row.get("live"): + continue + health = row.get("health") or {} + price = safe_decimal(health.get("priceQuotePerBase")) + if price is None or price <= 0: + continue + base = row["base"] + quote = row["quote"] + pair = f"{base}/{quote}" + addr = row.get("poolAddress") or "" + reserves = f"base={health.get('baseReserveUnits', '?')}, quote={health.get('quoteReserveUnits', '?')}" + liquidity_note = ( + f"Uniswap V2 pair {addr}; healthy={health.get('healthy')}; " + f"depthOk={health.get('depthOk')}; parityOk={health.get('parityOk')}; {reserves}" + ) + edges.append( + Edge( + src=base, + dst=quote, + ratio=price, + venue="uniswap_v2", + path_label=pair, + price_detail=f"reserve ratio from {pair}", + liquidity_note=liquidity_note, + ) + ) + edges.append( + Edge( + src=quote, + dst=base, + ratio=Decimal(1) / price, + venue="uniswap_v2", + path_label=pair, + price_detail=f"inverse reserve ratio from {pair}", + liquidity_note=liquidity_note, + ) + ) + return edges + + +def build_pmm_edges(chain: dict, rpc_url: str) -> tuple[list[Edge], list[dict]]: + edges: list[Edge] = [] + snapshots: list[dict] = [] + if not rpc_url: + return edges, snapshots + + for row in chain.get("pmmPools") or []: + pool = row.get("poolAddress") or "" + base = row.get("base") + quote = row.get("quote") + if not pool or pool.lower() == ZERO_ADDRESS or not base or not quote: + continue + try: + mid_price = normalize_18(parse_uint(cast_call(rpc_url, pool, "getMidPrice()(uint256)"))) + except Exception as exc: + snapshots.append( + { + "base": base, + "quote": quote, + "poolAddress": pool, + "venue": row.get("venue", "dodo_pmm"), + "error": str(exc), + } + ) + continue + + if mid_price <= 0: + continue + + pair = f"{base}/{quote}" + liquidity_note = f"DODO PMM {pool}; midPrice={mid_price}" + edges.append( + Edge( + src=base, + dst=quote, + ratio=mid_price, + venue="dodo_pmm", + path_label=pair, + price_detail=f"PMM mid price from {pair}", + liquidity_note=liquidity_note, + ) + ) + edges.append( + Edge( + src=quote, + dst=base, + ratio=Decimal(1) / mid_price, + venue="dodo_pmm", + path_label=pair, + price_detail=f"inverse PMM mid price from {pair}", + liquidity_note=liquidity_note, + ) + ) + snapshots.append( + { + "base": base, + "quote": quote, + "poolAddress": pool, + "venue": row.get("venue", "dodo_pmm"), + "midPrice": str(mid_price), + } + ) + return edges, snapshots + + +def best_prices_for_chain(chain: dict, edges: list[Edge]) -> dict[str, dict]: + adjacency: dict[str, list[Edge]] = {} + for edge in edges: + adjacency.setdefault(edge.src, []).append(edge) + + best: dict[str, dict] = {} + queue: deque[tuple[str, Decimal, list[str], list[str], list[str], int]] = deque() + + for stable, price in STABLES.items(): + best[stable] = { + "price": price, + "steps": [], + "venues": [], + "notes": [f"{stable} anchored at 1 USD"], + "hops": 0, + } + queue.append((stable, price, [], [], [f"{stable} anchored at 1 USD"], 0)) + + while queue: + token, usd_price, steps, venues, notes, hops = queue.popleft() + for edge in adjacency.get(token, []): + next_price = usd_price / edge.ratio + next_steps = steps + [edge.path_label] + next_venues = venues + [edge.venue] + next_notes = notes + [edge.liquidity_note] + next_hops = hops + 1 + current = best.get(edge.dst) + should_replace = current is None or next_hops < current["hops"] + if not should_replace and current is not None and next_hops == current["hops"]: + current_venue_score = 0 if "dodo_pmm" in current["venues"] else 1 + next_venue_score = 0 if "dodo_pmm" in next_venues else 1 + should_replace = next_venue_score < current_venue_score + if should_replace: + best[edge.dst] = { + "price": next_price, + "steps": next_steps, + "venues": next_venues, + "notes": next_notes, + "hops": next_hops, + } + queue.append((edge.dst, next_price, next_steps, next_venues, next_notes, next_hops)) + + out: dict[str, dict] = {} + for symbol in sorted((chain.get("cwTokens") or {}).keys()): + resolution = best.get(symbol) + if resolution is None: + out[symbol] = { + "priceUsd": None, + "derivedFrom": "not found", + "sourceType": "not_found", + "notes": ["No live direct or bridged price path was found from USDC/USDT anchors."], + } + continue + out[symbol] = { + "priceUsd": str(resolution["price"]), + "derivedFrom": " -> ".join(resolution["steps"]) if resolution["steps"] else "stable anchor", + "sourceType": resolution["venues"][0] if resolution["venues"] else "stable_anchor", + "notes": resolution["notes"], + } + return out + + +def build_report() -> dict: + env_values = merged_env_values() + deployment = load_json(DEPLOYMENT_STATUS) + discovery = load_json(UNISWAP_DISCOVERY) + discovery_by_chain = {str(entry["chain_id"]): entry for entry in discovery.get("entries") or []} + + chains_out: list[dict] = [] + for chain_id, chain in sorted((deployment.get("chains") or {}).items(), key=lambda item: int(item[0])): + if int(chain_id) == 138: + continue + rpc_url = rpc_for_chain(chain_id, env_values) + uniswap_edges = build_uniswap_edges(discovery_by_chain.get(chain_id, {})) + pmm_edges, pmm_snapshots = build_pmm_edges(chain, rpc_url) + price_rows = best_prices_for_chain(chain, uniswap_edges + pmm_edges) + chains_out.append( + { + "chainId": int(chain_id), + "network": chain.get("name", ""), + "activationState": chain.get("activationState", ""), + "rpcConfigured": bool(rpc_url), + "prices": price_rows, + "pmmSnapshots": pmm_snapshots, + } + ) + + return { + "generatedAt": now(), + "inputs": { + "deploymentStatus": str(DEPLOYMENT_STATUS), + "uniswapDiscovery": str(UNISWAP_DISCOVERY), + }, + "chains": chains_out, + } + + +def render_markdown(payload: dict) -> str: + lines = [ + "# cW Public Network Prices", + "", + f"- Generated: `{payload['generatedAt']}`", + f"- Deployment inventory: `{payload['inputs']['deploymentStatus']}`", + f"- Uniswap discovery snapshot: `{payload['inputs']['uniswapDiscovery']}`", + "- Price convention: USD per 1 token.", + "- `not found` means the generator could not reach the token from a live USDC/USDT anchor using the current public-pair snapshot plus live PMM mid-price reads.", + "", + "| Chain | Token | Price (USD) | Derived From | Source | Notes |", + "|---|---|---:|---|---|---|", + ] + + for chain in payload["chains"]: + first_row = True + prices = chain["prices"] + for symbol in sorted(prices.keys()): + row = prices[symbol] + chain_cell = f"`{chain['chainId']}` {chain['network']}" if first_row else "" + first_row = False + notes = "; ".join(row["notes"][:2]) + lines.append( + f"| {chain_cell} | `{symbol}` | `{format_decimal(safe_decimal(row['priceUsd']))}` | " + f"`{row['derivedFrom']}` | `{row['sourceType']}` | {notes} |" + ) + if prices: + lines.append( + f"| | | | | | Activation state: `{chain['activationState'] or 'active'}`; RPC configured: `{chain['rpcConfigured']}` |" + ) + return "\n".join(lines) + + +def main() -> None: + payload = build_report() + write_json(JSON_OUT, payload) + write_text(DOC_OUT, render_markdown(payload)) + print(JSON_OUT) + print(DOC_OUT) + + +if __name__ == "__main__": + main() diff --git a/scripts/verify/build-cw-public-repeg-plan.py b/scripts/verify/build-cw-public-repeg-plan.py new file mode 100644 index 00000000..86cc4ec2 --- /dev/null +++ b/scripts/verify/build-cw-public-repeg-plan.py @@ -0,0 +1,763 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import json +import re +import subprocess +import time +from decimal import Decimal, InvalidOperation, getcontext +from pathlib import Path + +getcontext().prec = 50 + +ROOT = Path(__file__).resolve().parents[2] +PRICE_REPORT = ROOT / "reports" / "status" / "cw-public-prices-latest.json" +DEPLOYMENT_STATUS = ROOT / "cross-chain-pmm-lps" / "config" / "deployment-status.json" +UNISWAP_DISCOVERY = ROOT / "reports" / "extraction" / "promod-uniswap-v2-live-pair-discovery-latest.json" +ROOT_ENV_PATH = ROOT / ".env" +SMOM_ENV_PATH = ROOT / "smom-dbis-138" / ".env" +JSON_OUT = ROOT / "reports" / "status" / "cw-public-repeg-plan-latest.json" +DOC_OUT = ROOT / "docs" / "03-deployment" / "CW_PUBLIC_NETWORK_REPEG_PLAN.md" +ADDRESS_RE = re.compile(r"0x[a-fA-F0-9]{40}") +UINT_RE = re.compile(r"\b\d+\b") + +TARGETS = { + "cWUSDC": Decimal("1"), + "cWUSDT": Decimal("1"), + "cWAUSDT": Decimal("1"), + "cWUSDW": Decimal("1"), + "cWEURC": Decimal("1.08"), + "cWEURT": Decimal("1.08"), + "cWGBPC": Decimal("1.27"), + "cWGBPT": Decimal("1.27"), + "cWAUDC": Decimal("0.66"), + "cWJPYC": Decimal("0.0067"), + "cWCHFC": Decimal("1.11"), + "cWCADC": Decimal("0.74"), + "cWXAUC": Decimal("3200"), + "cWXAUT": Decimal("3200"), +} + +DODO_THRESHOLD_PCT = Decimal("1") +UNISWAP_THRESHOLD_PCT = Decimal("1") + +DODO_ENV_KEYS = { + 1: ["DODO_PMM_INTEGRATION_MAINNET"], + 10: ["DODO_PMM_INTEGRATION_OPTIMISM"], + 25: ["DODO_PMM_INTEGRATION_CRONOS"], + 56: ["DODO_PMM_INTEGRATION_BSC"], + 100: ["DODO_PMM_INTEGRATION_GNOSIS"], + 137: ["DODO_PMM_INTEGRATION_POLYGON"], + 42220: ["DODO_PMM_INTEGRATION_CELO"], + 43114: ["DODO_PMM_INTEGRATION_AVALANCHE"], + 8453: ["DODO_PMM_INTEGRATION_BASE"], + 42161: ["DODO_PMM_INTEGRATION_ARBITRUM"], +} + +RPC_ENV_KEYS = { + 1: ["ETHEREUM_MAINNET_RPC"], + 10: ["OPTIMISM_RPC_URL", "OPTIMISM_MAINNET_RPC"], + 25: ["CRONOS_RPC_URL", "CRONOS_MAINNET_RPC"], + 56: ["BSC_RPC_URL", "BSC_MAINNET_RPC"], + 100: ["GNOSIS_RPC_URL", "GNOSIS_MAINNET_RPC", "GNOSIS_RPC"], + 137: ["POLYGON_MAINNET_RPC", "POLYGON_RPC_URL"], + 42220: ["CELO_RPC_URL", "CELO_MAINNET_RPC", "CELO_RPC"], + 43114: ["AVALANCHE_RPC_URL", "AVALANCHE_MAINNET_RPC"], + 8453: ["BASE_RPC_URL", "BASE_MAINNET_RPC"], + 42161: ["ARBITRUM_RPC_URL", "ARBITRUM_MAINNET_RPC"], +} + + +def now() -> str: + return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()) + + +def load_json(path: Path) -> dict: + return json.loads(path.read_text()) + + +def load_env_file(path: Path) -> dict[str, str]: + values: dict[str, str] = {} + if not path.exists(): + return values + for raw_line in path.read_text().splitlines(): + line = raw_line.strip() + if not line or line.startswith("#") or "=" not in line: + continue + key, value = line.split("=", 1) + values[key.strip()] = value.strip().strip('"').strip("'") + return values + + +def merged_env_values() -> dict[str, str]: + values: dict[str, str] = {} + values.update(load_env_file(ROOT_ENV_PATH)) + values.update(load_env_file(SMOM_ENV_PATH)) + values.update(load_env_from_shell()) + return values + + +def load_env_from_shell() -> dict[str, str]: + loader = ROOT / "smom-dbis-138" / "scripts" / "load-env.sh" + if not loader.exists(): + return {} + proc = subprocess.run( + [ + "bash", + "-lc", + f"source {loader} >/dev/null 2>&1 && env", + ], + text=True, + capture_output=True, + timeout=15, + check=False, + cwd=ROOT, + ) + if proc.returncode != 0: + return {} + values: dict[str, str] = {} + for raw_line in proc.stdout.splitlines(): + if "=" not in raw_line: + continue + key, value = raw_line.split("=", 1) + values[key.strip()] = value.strip() + return values + + +def resolve_env_value(key: str, env_values: dict[str, str], seen: set[str] | None = None) -> str: + if seen is None: + seen = set() + if key in seen: + return env_values.get(key, "") + seen.add(key) + value = env_values.get(key, "") + if value.startswith("${") and value.endswith("}"): + inner = value[2:-1] + target = inner.split(":-", 1)[0] + fallback = inner.split(":-", 1)[1] if ":-" in inner else "" + resolved = resolve_env_value(target, env_values, seen) + return resolved or fallback + return value.rstrip("\r\n") + + +def cast_call(rpc_url: str, target: str, signature: str, *args: str) -> str: + cmd = ["cast", "call", target, signature, *args, "--rpc-url", rpc_url] + proc = subprocess.run(cmd, text=True, capture_output=True, timeout=8, check=False) + if proc.returncode != 0: + stderr = proc.stderr.strip() or proc.stdout.strip() or "cast call failed" + raise RuntimeError(stderr) + return proc.stdout.strip() + + +def parse_uint(value: str) -> int: + cleaned = re.sub(r"\[[^\]]*\]", "", value) + matches = UINT_RE.findall(cleaned) + if matches: + return int(matches[0]) + for line in value.splitlines(): + token = line.strip().split(" ", 1)[0] + if token.isdigit(): + return int(token) + raise ValueError(f"could not parse integer from {value!r}") + + +def parse_uints(value: str, count: int) -> list[int]: + cleaned = re.sub(r"\[[^\]]*\]", "", value) + matches = [int(match) for match in UINT_RE.findall(cleaned)] + if len(matches) >= count: + return matches[:count] + matches = [] + for line in value.splitlines(): + token = line.strip().split(" ", 1)[0] + if token.isdigit(): + matches.append(int(token)) + if len(matches) < count: + raise ValueError(f"expected {count} integers from {value!r}") + return matches[:count] + + +def normalize_units(raw: int, decimals: int) -> Decimal: + return Decimal(raw) / (Decimal(10) ** decimals) + + +def write_json(path: Path, payload: dict) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(payload, indent=2) + "\n") + + +def write_text(path: Path, text: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text.rstrip() + "\n") + + +def safe_decimal(value: str | None) -> Decimal | None: + if value is None: + return None + try: + return Decimal(value) + except (InvalidOperation, ValueError): + return None + + +def pct_deviation(current: Decimal, target: Decimal) -> Decimal: + return ((current - target) / target) * Decimal("100") + + +def format_decimal(value: Decimal | None, places: int = 8) -> str: + if value is None: + return "not found" + quant = Decimal(10) ** -places + try: + value = value.quantize(quant) + except InvalidOperation: + pass + return format(value, "f") + + +def format_pct(value: Decimal) -> str: + sign = "+" if value >= 0 else "" + return f"{sign}{format_decimal(value, 2)}%" + + +def first_address(texts: list[str]) -> str | None: + for text in texts: + match = ADDRESS_RE.search(text) + if match: + return match.group(0) + return None + + +def command_block(lines: list[str]) -> str: + return "\n".join(lines) + + +def derive_deployer(env_values: dict[str, str]) -> str: + pk = resolve_env_value("PRIVATE_KEY", env_values) or resolve_env_value("KEEPER_PRIVATE_KEY", env_values) + if not pk or "${" in pk: + return "" + proc = subprocess.run( + ["cast", "wallet", "address", "--private-key", pk], + text=True, + capture_output=True, + timeout=8, + check=False, + ) + if proc.returncode != 0: + return "" + match = ADDRESS_RE.search(proc.stdout.strip()) + return match.group(0) if match else "" + + +def build_pair_to_pool(chain: dict) -> dict[str, list[dict]]: + pairs: dict[str, list[dict]] = {} + for row in chain.get("pmmPools") or []: + pairs.setdefault(f"{row['base']}/{row['quote']}", []).append(row) + for row in chain.get("uniswapV2Pools") or []: + pairs.setdefault(f"{row['base']}/{row['quote']}", []).append(row) + return pairs + + +def select_pool(pair_rows: list[dict], source_type: str) -> dict: + if not pair_rows: + return {} + if source_type == "dodo_pmm": + for row in pair_rows: + if row.get("venue") == "dodo_pmm" or row.get("poolType") == "stable_quote" or "k" in row: + return row + if source_type == "uniswap_v2": + for row in pair_rows: + if row.get("venue") == "uniswap_v2_pair": + return row + return pair_rows[0] + + +def dodo_action(pair: str, current: Decimal, target: Decimal) -> str: + if current < target: + return f"Fund quote side and buy base through `{pair}` until `getMidPrice()` returns target." + return f"Fund base side and sell base into `{pair}` until `getMidPrice()` returns target." + + +def uniswap_action(pair: str, target: Decimal) -> str: + return ( + f"Withdraw or ignore bad LP, then reseed `{pair}` through the chain router at target ratio `{target}` " + "with balanced reserves." + ) + + +def integration_for_chain(chain_id: int, env_values: dict[str, str]) -> str: + for key in DODO_ENV_KEYS.get(chain_id, []): + value = resolve_env_value(key, env_values) + if value: + return value + return "" + + +def rpc_for_chain(chain_id: int, env_values: dict[str, str]) -> str: + if chain_id == 1: + infura_project_id = resolve_env_value("INFURA_PROJECT_ID", env_values) + if infura_project_id: + return f"https://mainnet.infura.io/v3/{infura_project_id}" + for key in RPC_ENV_KEYS.get(chain_id, []): + value = resolve_env_value(key, env_values) + if value: + return value + return "" + + +def rpc_var_for_chain(chain_id: int) -> str: + return RPC_ENV_KEYS.get(chain_id, ["RPC_URL"])[0] + + +def dodo_commands(chain_id: int, pair: str, pool_address: str, current: Decimal, target: Decimal, chain_info: dict, env_values: dict[str, str]) -> dict: + base_symbol, quote_symbol = pair.split("/") + integration = integration_for_chain(chain_id, env_values) + rpc_var = rpc_var_for_chain(chain_id) + base_address = (chain_info.get("cwTokens") or {}).get(base_symbol) or (chain_info.get("anchorAddresses") or {}).get(base_symbol) or "REPLACE_BASE_TOKEN" + quote_address = (chain_info.get("cwTokens") or {}).get(quote_symbol) or (chain_info.get("anchorAddresses") or {}).get(quote_symbol) or "REPLACE_QUOTE_TOKEN" + if current < target: + return { + "direction": "quote_in_buy_base", + "commands": command_block( + [ + "source smom-dbis-138/scripts/load-env.sh >/dev/null", + f"export RPC_URL=\"${{{rpc_var}}}\"", + f"export INTEGRATION=\"{integration or 'REPLACE_DODO_INTEGRATION'}\"", + f"export POOL=\"{pool_address or 'REPLACE_POOL'}\"", + f"export BASE_TOKEN=\"{base_address}\"", + f"export QUOTE_TOKEN=\"{quote_address}\"", + "export QUOTE_IN_RAW=REPLACE_QUOTE_IN_RAW", + "export MIN_BASE_OUT_RAW=REPLACE_MIN_BASE_OUT_RAW", + 'cast send "$QUOTE_TOKEN" \'approve(address,uint256)(bool)\' "$INTEGRATION" "$QUOTE_IN_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + 'cast send "$INTEGRATION" \'swapExactIn(address,address,uint256,uint256)\' "$POOL" "$QUOTE_TOKEN" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + ] + ), + } + return { + "direction": "base_in_sell_base", + "commands": command_block( + [ + "source smom-dbis-138/scripts/load-env.sh >/dev/null", + f"export RPC_URL=\"${{{rpc_var}}}\"", + f"export INTEGRATION=\"{integration or 'REPLACE_DODO_INTEGRATION'}\"", + f"export POOL=\"{pool_address or 'REPLACE_POOL'}\"", + f"export BASE_TOKEN=\"{base_address}\"", + f"export QUOTE_TOKEN=\"{quote_address}\"", + "export BASE_IN_RAW=REPLACE_BASE_IN_RAW", + "export MIN_QUOTE_OUT_RAW=REPLACE_MIN_QUOTE_OUT_RAW", + 'cast send "$BASE_TOKEN" \'approve(address,uint256)(bool)\' "$INTEGRATION" "$BASE_IN_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + 'cast send "$INTEGRATION" \'swapExactIn(address,address,uint256,uint256)\' "$POOL" "$BASE_TOKEN" "$BASE_IN_RAW" "$MIN_QUOTE_OUT_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + ] + ), + } + + +def uniswap_commands(chain_id: int, pair: str, pool_address: str, chain_info: dict) -> dict: + token_a, token_b = pair.split("/") + rpc_var = rpc_var_for_chain(chain_id) + router = "" + for row in chain_info.get("uniswapV2Pools") or []: + if f"{row['base']}/{row['quote']}" == pair and row.get("routerAddress"): + router = row["routerAddress"] + break + token_a_address = (chain_info.get("cwTokens") or {}).get(token_a) or (chain_info.get("anchorAddresses") or {}).get(token_a) or "REPLACE_TOKEN_A" + token_b_address = (chain_info.get("cwTokens") or {}).get(token_b) or (chain_info.get("anchorAddresses") or {}).get(token_b) or "REPLACE_TOKEN_B" + return { + "commands": command_block( + [ + "source smom-dbis-138/scripts/load-env.sh >/dev/null", + f"export RPC_URL=\"${{{rpc_var}}}\"", + f"export ROUTER=\"{router or f'${{CHAIN_{chain_id}_UNISWAP_V2_ROUTER}}'}\"", + f"export PAIR=\"{pool_address}\"", + f"export TOKEN_A=\"{token_a_address}\"", + f"export TOKEN_B=\"{token_b_address}\"", + "export AMOUNT_A_RAW=REPLACE_AMOUNT_A_RAW", + "export AMOUNT_B_RAW=REPLACE_AMOUNT_B_RAW", + 'export DEADLINE="$(( $(date +%s) + 3600 ))"', + 'export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"', + '# Optional: remove bad LP first if you control LP tokens for this pair.', + 'cast send "$TOKEN_A" \'approve(address,uint256)(bool)\' "$ROUTER" "$AMOUNT_A_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + 'cast send "$TOKEN_B" \'approve(address,uint256)(bool)\' "$ROUTER" "$AMOUNT_B_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + 'cast send "$ROUTER" \'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)\' \\', + ' "$TOKEN_A" "$TOKEN_B" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$AMOUNT_A_RAW" "$AMOUNT_B_RAW" "$SIGNER" "$DEADLINE" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"', + ] + ), + } + + +def dodo_sizing_and_balance( + chain_id: int, + pair: str, + pool_address: str, + current: Decimal, + target: Decimal, + chain_info: dict, + env_values: dict[str, str], + deployer: str, +) -> dict: + rpc_url = rpc_for_chain(chain_id, env_values) + base_symbol, quote_symbol = pair.split("/") + base_address = (chain_info.get("cwTokens") or {}).get(base_symbol) or (chain_info.get("anchorAddresses") or {}).get(base_symbol) or "" + quote_address = (chain_info.get("cwTokens") or {}).get(quote_symbol) or (chain_info.get("anchorAddresses") or {}).get(quote_symbol) or "" + result = { + "heuristic": "suggested_raw = simple reserve-parity top-up on the funding side using target quote-per-base", + "deployer": deployer or None, + "rpcConfigured": bool(rpc_url), + } + if not rpc_url or not base_address or not quote_address or not pool_address: + result["error"] = "missing rpc or token/pool address" + return result + try: + base_decimals = parse_uint(cast_call(rpc_url, base_address, "decimals()(uint8)")) + quote_decimals = parse_uint(cast_call(rpc_url, quote_address, "decimals()(uint8)")) + base_reserve_raw, quote_reserve_raw = parse_uints( + cast_call(rpc_url, pool_address, "getVaultReserve()(uint256,uint256)"), 2 + ) + except Exception as exc: + result["error"] = str(exc) + return result + + gap_fraction = abs(target - current) / target + base_units = normalize_units(base_reserve_raw, base_decimals) + quote_units = normalize_units(quote_reserve_raw, quote_decimals) + if current < target: + funding_symbol = quote_symbol + funding_address = quote_address + funding_decimals = quote_decimals + target_quote_units = base_units * target + top_up_units = max(target_quote_units - quote_units, Decimal(0)) + suggested_raw = int((top_up_units * (Decimal(10) ** quote_decimals)).to_integral_value()) + else: + funding_symbol = base_symbol + funding_address = base_address + funding_decimals = base_decimals + target_base_units = quote_units / target + top_up_units = max(target_base_units - base_units, Decimal(0)) + suggested_raw = int((top_up_units * (Decimal(10) ** base_decimals)).to_integral_value()) + + deployer_balance_raw = None + if deployer: + try: + deployer_balance_raw = parse_uint(cast_call(rpc_url, funding_address, "balanceOf(address)(uint256)", deployer)) + except Exception as exc: + result["deployerBalanceError"] = str(exc) + + result.update( + { + "baseToken": {"symbol": base_symbol, "address": base_address, "decimals": base_decimals}, + "quoteToken": {"symbol": quote_symbol, "address": quote_address, "decimals": quote_decimals}, + "poolReserves": { + "baseRaw": str(base_reserve_raw), + "baseUnits": str(normalize_units(base_reserve_raw, base_decimals)), + "quoteRaw": str(quote_reserve_raw), + "quoteUnits": str(normalize_units(quote_reserve_raw, quote_decimals)), + }, + "gapFraction": str(gap_fraction), + "fundingSide": funding_symbol, + "suggestedTradeRaw": str(suggested_raw), + "suggestedTradeUnits": str(normalize_units(suggested_raw, funding_decimals)), + } + ) + if deployer_balance_raw is not None: + shortfall = max(suggested_raw - deployer_balance_raw, 0) + result["deployerFundingCheck"] = { + "token": funding_symbol, + "balanceRaw": str(deployer_balance_raw), + "balanceUnits": str(normalize_units(deployer_balance_raw, funding_decimals)), + "shortfallRaw": str(shortfall), + "shortfallUnits": str(normalize_units(shortfall, funding_decimals)), + "covered": shortfall == 0, + } + return result + + +def live_uniswap_ratio( + chain_id: int, + pair_address: str, + base_symbol: str, + quote_symbol: str, + chain_info: dict, + env_values: dict[str, str], +) -> Decimal | None: + rpc_url = rpc_for_chain(chain_id, env_values) + if not rpc_url or not pair_address: + return None + base_address = ((chain_info.get("cwTokens") or {}).get(base_symbol) or (chain_info.get("anchorAddresses") or {}).get(base_symbol) or "").lower() + quote_address = ((chain_info.get("cwTokens") or {}).get(quote_symbol) or (chain_info.get("anchorAddresses") or {}).get(quote_symbol) or "").lower() + if not base_address or not quote_address: + return None + try: + token0 = cast_call(rpc_url, pair_address, "token0()(address)").strip().lower() + token1 = cast_call(rpc_url, pair_address, "token1()(address)").strip().lower() + reserve0_raw, reserve1_raw, _ = parse_uints(cast_call(rpc_url, pair_address, "getReserves()((uint112,uint112,uint32))"), 3) + decimals0 = parse_uint(cast_call(rpc_url, token0, "decimals()(uint8)")) + decimals1 = parse_uint(cast_call(rpc_url, token1, "decimals()(uint8)")) + except Exception: + return None + + reserve_by_token = { + token0: normalize_units(reserve0_raw, decimals0), + token1: normalize_units(reserve1_raw, decimals1), + } + base_units = reserve_by_token.get(base_address) + quote_units = reserve_by_token.get(quote_address) + if base_units in (None, Decimal(0)) or quote_units is None: + return None + return quote_units / base_units + + +def build_payload() -> dict: + env_values = merged_env_values() + deployer = derive_deployer(env_values) + prices = load_json(PRICE_REPORT) + deployment = load_json(DEPLOYMENT_STATUS) + discovery = load_json(UNISWAP_DISCOVERY) + + dodo_findings: list[dict] = [] + uniswap_findings: list[dict] = [] + unpriced: list[dict] = [] + + for chain in prices.get("chains") or []: + chain_id = str(chain["chainId"]) + chain_info = deployment["chains"].get(chain_id, {}) + pair_map = build_pair_to_pool(chain_info) + for symbol, row in sorted(chain.get("prices", {}).items()): + target = TARGETS.get(symbol) + current = safe_decimal(row.get("priceUsd")) + if current is None: + if target is not None: + unpriced.append( + { + "chainId": chain["chainId"], + "network": chain["network"], + "token": symbol, + "targetUsd": str(target), + "reason": "no live price path found from current public snapshot", + } + ) + continue + if target is None: + continue + deviation = pct_deviation(current, target) + if abs(deviation) <= DODO_THRESHOLD_PCT: + continue + derived_from = row["derivedFrom"] + if " -> " in derived_from: + # Derived route; fix the direct broken pool(s) below in the Uniswap section. + continue + pool = select_pool(pair_map.get(derived_from, []), row["sourceType"]) + pool_address = pool.get("poolAddress") or first_address(row.get("notes", [])) + dodo_findings.append( + { + "chainId": chain["chainId"], + "network": chain["network"], + "token": symbol, + "pair": derived_from, + "poolAddress": pool_address, + "venue": row["sourceType"], + "currentUsd": str(current), + "targetUsd": str(target), + "deviationPct": str(deviation), + "action": dodo_action(derived_from, current, target), + "operator": dodo_commands(chain["chainId"], derived_from, pool_address or "", current, target, chain_info, env_values), + "sizing": dodo_sizing_and_balance(chain["chainId"], derived_from, pool_address or "", current, target, chain_info, env_values, deployer), + } + ) + + for entry in discovery.get("entries") or []: + chain_info = deployment["chains"].get(str(entry["chain_id"]), {}) + for row in entry.get("pairsChecked") or []: + if not row.get("live"): + continue + pair = f"{row['base']}/{row['quote']}" + target = Decimal("1") + current = live_uniswap_ratio(entry["chain_id"], row["poolAddress"], row["base"], row["quote"], chain_info, env_values) + if current is None: + current = safe_decimal((row.get("health") or {}).get("priceQuotePerBase")) + if current is None: + continue + deviation = pct_deviation(current, target) + if abs(deviation) <= UNISWAP_THRESHOLD_PCT: + continue + if pair not in ("cWUSDT/cWUSDC", "cWAUSDT/cWUSDT", "cWAUSDT/cWUSDC"): + continue + uniswap_findings.append( + { + "chainId": entry["chain_id"], + "network": entry["network"], + "pair": pair, + "poolAddress": row["poolAddress"], + "currentRatio": str(current), + "targetRatio": str(target), + "deviationPct": str(deviation), + "healthy": (row.get("health") or {}).get("healthy"), + "action": uniswap_action(pair, target), + "operator": uniswap_commands(entry["chain_id"], pair, row["poolAddress"], chain_info), + } + ) + + dodo_findings.sort(key=lambda row: (row["chainId"], row["pair"])) + uniswap_findings.sort(key=lambda row: (row["chainId"], row["pair"])) + unpriced.sort(key=lambda row: (row["chainId"], row["token"])) + + return { + "generatedAt": now(), + "inputs": { + "priceReport": str(PRICE_REPORT), + "deploymentStatus": str(DEPLOYMENT_STATUS), + "uniswapDiscovery": str(UNISWAP_DISCOVERY), + }, + "targetsUsd": {k: str(v) for k, v in TARGETS.items()}, + "thresholds": { + "dodoDeviationPct": str(DODO_THRESHOLD_PCT), + "uniswapDeviationPct": str(UNISWAP_THRESHOLD_PCT), + }, + "deployer": deployer or None, + "offPegDodoPools": dodo_findings, + "offPegUniswapPairs": uniswap_findings, + "unpricedTargets": unpriced, + } + + +def render_markdown(payload: dict) -> str: + lines = [ + "# cW Public Network Repeg Plan", + "", + f"- Generated: `{payload['generatedAt']}`", + f"- Price report: `{payload['inputs']['priceReport']}`", + f"- Deployment inventory: `{payload['inputs']['deploymentStatus']}`", + f"- Uniswap discovery: `{payload['inputs']['uniswapDiscovery']}`", + "- Scope: current off-peg or unreadable public-network `cW*` pools only.", + "- PMM rule: if current price is below target, fund quote and buy base; if current price is above target, fund base and sell base.", + "- Uniswap rule: remove bad LP or ignore stale LP, then reseed at the target reserve ratio.", + "", + "## Off-Peg DODO PMM Pools", + "", + "| Chain | Pair | Pool | Current | Target | Deviation | Repair Path |", + "|---|---|---|---:|---:|---:|---|", + ] + + if payload["offPegDodoPools"]: + for row in payload["offPegDodoPools"]: + lines.append( + f"| `{row['chainId']}` {row['network']} | `{row['pair']}` | `{row['poolAddress'] or 'unknown'}` | " + f"`{format_decimal(safe_decimal(row['currentUsd']))}` | `{format_decimal(safe_decimal(row['targetUsd']))}` | " + f"`{format_pct(Decimal(row['deviationPct']))}` | {row['action']} |" + ) + else: + lines.append("| — | — | — | — | — | — | No off-peg DODO PMM pools found at the configured threshold. |") + + lines.extend( + [ + "", + "## Broken Uniswap Pairs", + "", + "| Chain | Pair | Pool | Current Ratio | Target | Deviation | Repair Path |", + "|---|---|---|---:|---:|---:|---|", + ] + ) + + if payload["offPegUniswapPairs"]: + for row in payload["offPegUniswapPairs"]: + lines.append( + f"| `{row['chainId']}` {row['network']} | `{row['pair']}` | `{row['poolAddress']}` | " + f"`{format_decimal(safe_decimal(row['currentRatio']))}` | `{format_decimal(safe_decimal(row['targetRatio']))}` | " + f"`{format_pct(Decimal(row['deviationPct']))}` | {row['action']} |" + ) + else: + lines.append("| — | — | — | — | — | — | No broken Uniswap pairs found at the configured threshold. |") + + lines.extend( + [ + "", + "## Unpriced Targets", + "", + "| Chain | Token | Target | Status |", + "|---|---|---:|---|", + ] + ) + + if payload["unpricedTargets"]: + for row in payload["unpricedTargets"]: + lines.append( + f"| `{row['chainId']}` {row['network']} | `{row['token']}` | " + f"`{format_decimal(safe_decimal(row['targetUsd']))}` | {row['reason']} |" + ) + else: + lines.append("| — | — | — | No unpriced targets. |") + + lines.extend( + [ + "", + "## Execution Order", + "", + "1. Repeg direct PMM anchor pools first: `cWUSDC/USDC`, `cWUSDT/USDT`, then the fiat/metal quoted rails.", + "2. Repeg `cWUSDT/cWUSDC` next on any chain where the wrapped support pair is broken.", + "3. Repeg wrapped edge pairs such as `cWAUSDT/cWUSDT` and `cWAUSDT/cWUSDC` after the core wrapped support rail is healthy.", + "4. Re-run the price table and this repeg plan after each venue is repaired.", + "", + f"- Deployer inspected: `{payload.get('deployer') or 'not found in env'}`", + "", + "## Operator Commands", + "", + ] + ) + for row in payload["offPegDodoPools"]: + sizing = row.get("sizing") or {} + funding = sizing.get("deployerFundingCheck") or {} + reserve_note = "" + pool_reserves = sizing.get("poolReserves") or {} + if sizing.get("error"): + reserve_note = f"- Sizing note: `{sizing['error']}`" + elif pool_reserves.get("baseRaw") == "0" and pool_reserves.get("quoteRaw") == "0": + reserve_note = "- Sizing note: `Pool reports zero vault reserves; heuristic trade size is informational only.`" + lines.extend( + [ + f"### `{row['chainId']}` {row['network']} `{row['pair']}`", + "", + f"- Suggested funding side: `{sizing.get('fundingSide', 'unknown')}`", + f"- Suggested trade raw: `{sizing.get('suggestedTradeRaw', 'unknown')}`", + f"- Suggested trade units: `{sizing.get('suggestedTradeUnits', 'unknown')}`", + f"- Gap fraction: `{format_decimal(safe_decimal(sizing.get('gapFraction')), 6) if sizing.get('gapFraction') else 'unknown'}`", + f"- Deployer balance on funding side: `{funding.get('balanceUnits', 'unknown')}` `{funding.get('token', '')}`", + f"- Deployer shortfall: `{funding.get('shortfallUnits', 'unknown')}` `{funding.get('token', '')}`", + f"- Covered: `{funding.get('covered', 'unknown')}`", + *(["- Reserve snapshot: `baseRaw=0 quoteRaw=0`"] if reserve_note and "zero vault reserves" in reserve_note else []), + *([reserve_note] if reserve_note else []), + "", + "```bash", + row["operator"]["commands"], + "```", + "", + ] + ) + for row in payload["offPegUniswapPairs"]: + lines.extend( + [ + f"### `{row['chainId']}` {row['network']} `{row['pair']}`", + "", + "```bash", + row["operator"]["commands"], + "```", + "", + ] + ) + return "\n".join(lines) + + +def main() -> None: + payload = build_payload() + write_json(JSON_OUT, payload) + write_text(DOC_OUT, render_markdown(payload)) + print(JSON_OUT) + print(DOC_OUT) + + +if __name__ == "__main__": + main() diff --git a/scripts/verify/build-liquidity-pools-completion-report.py b/scripts/verify/build-liquidity-pools-completion-report.py new file mode 100644 index 00000000..6d5c7d13 --- /dev/null +++ b/scripts/verify/build-liquidity-pools-completion-report.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python3 +"""Build a strict completion report for non-live liquidity venue inventory.""" + +from __future__ import annotations + +import csv +import json +from collections import Counter, defaultdict +from datetime import datetime, timezone +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +MASTER_JSON = ROOT / "reports/status/liquidity-pools-master-map-latest.json" +OUT_JSON = ROOT / "reports/status/liquidity-pools-completion-latest.json" +OUT_MD = ROOT / "reports/status/liquidity-pools-completion-latest.md" +OUT_CSV = ROOT / "reports/status/liquidity-pools-completion-remaining-latest.csv" + + +CSV_FIELDS = [ + "chainId", + "network", + "venue", + "pair", + "poolAddress", + "baseTokenAddress", + "quoteTokenAddress", + "status", + "completionClass", +] + + +def md_table(headers: list[str], rows: list[list[str]]) -> str: + out = ["| " + " | ".join(headers) + " |", "| " + " | ".join(["---"] * len(headers)) + " |"] + out.extend("| " + " | ".join(row) + " |" for row in rows) + return "\n".join(out) + + +def completion_class(status: str) -> str: + if status.startswith("live"): + return "complete" + if status == "planned_gas_placeholder": + return "planned_gas_surface" + if status in {"configured_no_live_balance", "configured_no_code", "configured_code_present_no_balance_read"}: + return "deploy_or_verify_live_balance" + if status == "planned_reference_placeholder": + return "planned_reference_surface" + if status == "supported_not_live": + return "supported_but_not_live" + return status + + +def build() -> dict: + data = json.loads(MASTER_JSON.read_text()) + generated_at = datetime.now(timezone.utc).replace(microsecond=0).isoformat() + + chain_rows = [] + remaining_csv_rows = [] + totals = Counter() + + for chain in data["chains"]: + remaining_pools = [p for p in chain["pools"] if not str(p["status"]).startswith("live")] + remaining_refs = [r for r in chain.get("referenceVenues", []) if not str(r["status"]).startswith("live")] + + pool_status_counts = Counter(p["status"] for p in remaining_pools) + ref_status_counts = Counter(r["status"] for r in remaining_refs) + venue_counts = Counter(p["venue"] for p in remaining_pools) + + totals.update(pool_status_counts) + + chain_rows.append( + { + "chainId": chain["chainId"], + "network": chain["network"], + "remainingPoolCount": len(remaining_pools), + "remainingReferenceVenueCount": len(remaining_refs), + "poolStatusCounts": dict(pool_status_counts), + "referenceStatusCounts": dict(ref_status_counts), + "remainingVenueCounts": dict(venue_counts), + "remainingPools": [ + { + "venue": p["venue"], + "pair": f"{p['baseSymbol']}/{p['quoteSymbol']}", + "poolAddress": p["poolAddress"], + "baseTokenAddress": p["baseAddress"], + "quoteTokenAddress": p["quoteAddress"], + "status": p["status"], + "completionClass": completion_class(p["status"]), + } + for p in remaining_pools + ], + "remainingReferenceVenues": [ + { + "protocol": r["protocol"], + "pair": f"{r['baseSymbol']}/{r['quoteSymbol']}", + "venueAddress": r["venueAddress"], + "status": r["status"], + "completionClass": completion_class(r["status"]), + } + for r in remaining_refs + ], + } + ) + + for p in remaining_pools: + remaining_csv_rows.append( + { + "chainId": chain["chainId"], + "network": chain["network"], + "venue": p["venue"], + "pair": f"{p['baseSymbol']}/{p['quoteSymbol']}", + "poolAddress": p["poolAddress"], + "baseTokenAddress": p["baseAddress"], + "quoteTokenAddress": p["quoteAddress"], + "status": p["status"], + "completionClass": completion_class(p["status"]), + } + ) + + return { + "generatedAt": generated_at, + "source": str(MASTER_JSON.relative_to(ROOT)), + "summary": { + "remainingPools": sum(r["remainingPoolCount"] for r in chain_rows), + "remainingReferenceVenues": sum(r["remainingReferenceVenueCount"] for r in chain_rows), + "poolStatusCounts": dict(totals), + }, + "chains": chain_rows, + "remainingCsvRows": remaining_csv_rows, + } + + +def write_csv(rows: list[dict]) -> None: + with OUT_CSV.open("w", newline="") as fh: + writer = csv.DictWriter(fh, fieldnames=CSV_FIELDS) + writer.writeheader() + writer.writerows(rows) + + +def write_markdown(report: dict) -> None: + lines = [ + "# Liquidity Pools Completion Report", + "", + f"- Generated: `{report['generatedAt']}`", + f"- Source: `{report['source']}`", + "", + "## Summary", + "", + f"- Remaining non-live pool rows: `{report['summary']['remainingPools']}`", + f"- Remaining non-live reference venue rows: `{report['summary']['remainingReferenceVenues']}`", + f"- Pool status counts: `{json.dumps(report['summary']['poolStatusCounts'], sort_keys=True)}`", + "", + ] + + summary_rows = [] + for chain in report["chains"]: + summary_rows.append( + [ + str(chain["chainId"]), + chain["network"], + str(chain["remainingPoolCount"]), + str(chain["remainingReferenceVenueCount"]), + json.dumps(chain["poolStatusCounts"], sort_keys=True), + ] + ) + lines += [ + "## By Chain", + "", + md_table(["ChainID", "Network", "Remaining Pools", "Remaining Reference Venues", "Pool Status Counts"], summary_rows), + "", + ] + + for chain in report["chains"]: + if chain["remainingPoolCount"] == 0 and chain["remainingReferenceVenueCount"] == 0: + continue + lines += [f"## {chain['network']} ({chain['chainId']})", ""] + + if chain["remainingPoolCount"]: + pool_rows = [ + [ + p["venue"], + p["pair"], + f"`{p['poolAddress']}`", + p["status"], + p["completionClass"], + ] + for p in chain["remainingPools"] + ] + lines += [ + "### Remaining Pools", + "", + md_table(["Venue", "Pair", "Pool", "Status", "Completion Class"], pool_rows), + "", + ] + + if chain["remainingReferenceVenueCount"]: + ref_rows = [ + [ + r["protocol"], + r["pair"], + f"`{r['venueAddress']}`" if r["venueAddress"] else "—", + r["status"], + r["completionClass"], + ] + for r in chain["remainingReferenceVenues"] + ] + lines += [ + "### Remaining Reference Venues", + "", + md_table(["Protocol", "Pair", "Venue Address", "Status", "Completion Class"], ref_rows), + "", + ] + + OUT_MD.write_text("\n".join(lines) + "\n") + + +def main() -> int: + report = build() + OUT_JSON.write_text(json.dumps(report, indent=2) + "\n") + write_markdown(report) + write_csv(report["remainingCsvRows"]) + print(f"Wrote {OUT_JSON.relative_to(ROOT)}") + print(f"Wrote {OUT_MD.relative_to(ROOT)}") + print(f"Wrote {OUT_CSV.relative_to(ROOT)}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/verify/build-liquidity-pools-master-map.py b/scripts/verify/build-liquidity-pools-master-map.py new file mode 100644 index 00000000..306c61a5 --- /dev/null +++ b/scripts/verify/build-liquidity-pools-master-map.py @@ -0,0 +1,594 @@ +#!/usr/bin/env python3 +"""Build a live liquidity-pool inventory from deployment-status + on-chain reserves. + +Outputs: +- reports/status/liquidity-pools-master-map-latest.json +- docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md +""" + +from __future__ import annotations + +import json +import os +import subprocess +import sys +import time +from dataclasses import dataclass +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parents[2] +DEPLOYMENT_STATUS = ROOT / "cross-chain-pmm-lps/config/deployment-status.json" +CHAIN138_EXECUTION = ROOT / "smom-dbis-138/config/chain138-eth-pmm-pools-execution.json" +CHAIN138_PMM = ROOT / "smom-dbis-138/config/chain138-pmm-pools.json" +OUT_JSON = ROOT / "reports/status/liquidity-pools-master-map-latest.json" +OUT_MD = ROOT / "docs/11-references/LIQUIDITY_POOLS_MASTER_MAP.md" +UNIV2_DISCOVERY = ROOT / "reports/extraction/promod-uniswap-v2-live-pair-discovery-latest.json" +GRU_GAP_REPORT = ROOT / "reports/extraction/promod-gru-v2-full-mesh-gap-report-latest.json" + +POOL_LIST_KEYS = ("pmmPools", "pmmPoolsVolatile", "gasPmmPools", "uniswapV2Pools") +CHAIN_ORDER = ["138", "651940", "1", "10", "25", "56", "100", "137", "8453", "42161", "42220", "43114", "1111"] + +RPC_DEFAULTS = { + "138": os.environ.get("CHAIN138_RPC_URL") + or os.environ.get("RPC_URL_138") + or os.environ.get("RPC_URL") + or "https://rpc-core.d-bis.org", + "651940": os.environ.get("CHAIN_651940_RPC") + or os.environ.get("CHAIN_651940_RPC_URL") + or os.environ.get("ALLTRA_MAINNET_RPC") + or "https://mainnet-rpc.alltra.global", + "1": os.environ.get("ETHEREUM_MAINNET_RPC") or "https://eth.llamarpc.com", + "10": os.environ.get("OPTIMISM_MAINNET_RPC") or os.environ.get("OPTIMISM_RPC_URL") or "https://mainnet.optimism.io", + "25": os.environ.get("CRONOS_RPC") or os.environ.get("CRONOS_MAINNET_RPC") or "https://evm.cronos.org", + "56": os.environ.get("BSC_RPC_URL") or os.environ.get("BSC_MAINNET_RPC") or "https://bsc-dataseed.binance.org", + "100": os.environ.get("GNOSIS_RPC") or os.environ.get("GNOSIS_MAINNET_RPC") or "https://rpc.gnosischain.com", + "137": os.environ.get("POLYGON_MAINNET_RPC") or os.environ.get("POLYGON_RPC_URL") or "https://polygon-bor-rpc.publicnode.com", + "8453": os.environ.get("BASE_MAINNET_RPC") or os.environ.get("BASE_RPC_URL") or "https://mainnet.base.org", + "42161": os.environ.get("ARBITRUM_MAINNET_RPC") or os.environ.get("ARBITRUM_RPC_URL") or "https://arb1.arbitrum.io/rpc", + "42220": os.environ.get("CELO_RPC") or os.environ.get("CELO_MAINNET_RPC") or "https://forno.celo.org", + "43114": os.environ.get("AVALANCHE_RPC_URL") or os.environ.get("AVALANCHE_MAINNET_RPC") or "https://api.avax.network/ext/bc/C/rpc", + "1111": os.environ.get("WEMIX_RPC") or os.environ.get("WEMIX_MAINNET_RPC") or "https://api.wemix.com", +} + +PLACEHOLDER_NOTES = {"placeholder_scaffold_not_live"} +ZERO_ADDR = "0x0000000000000000000000000000000000000000" + + +def load_json(path: Path) -> Any: + return json.loads(path.read_text()) + + +def cast_call(rpc: str, to: str, sig: str, *args: str) -> list[str]: + cmd = ["cast", "call", to, sig, *args, "--rpc-url", rpc] + last_exc: Exception | None = None + for attempt in range(3): + try: + out = subprocess.check_output(cmd, text=True, stderr=subprocess.DEVNULL, timeout=5).strip() + return [line.strip() for line in out.splitlines() if line.strip()] + except Exception as exc: + last_exc = exc + if attempt < 2: + time.sleep(0.25 * (attempt + 1)) + raise last_exc or RuntimeError(f"cast call failed for {to} {sig}") + + +def cast_code(rpc: str, address: str) -> str: + cmd = ["cast", "code", address, "--rpc-url", rpc] + last_exc: Exception | None = None + for attempt in range(3): + try: + return subprocess.check_output(cmd, text=True, stderr=subprocess.DEVNULL, timeout=5).strip() + except Exception as exc: + last_exc = exc + if attempt < 2: + time.sleep(0.25 * (attempt + 1)) + raise last_exc or RuntimeError(f"cast code failed for {address}") + + +def clean_int(value: str) -> int: + token = value.split()[0] + if token.startswith("0x"): + return int(token, 16) + return int(token) + + +def is_placeholder_address(addr: str | None) -> bool: + if not addr or not isinstance(addr, str) or not addr.startswith("0x"): + return True + body = addr[2:].lower() + if body == "0" * 40: + return True + return "0" * 20 in body + + +def human_amount(raw: int | None, decimals: int | None) -> str | None: + if raw is None or decimals is None: + return None + negative = raw < 0 + raw = abs(raw) + scale = 10 ** decimals + whole = raw // scale + frac = raw % scale + frac_s = f"{frac:0{decimals}d}".rstrip("0") + text = str(whole) if not frac_s else f"{whole}.{frac_s}" + return f"-{text}" if negative else text + + +def markdown_table(headers: list[str], rows: list[list[str]]) -> str: + out = ["| " + " | ".join(headers) + " |", "| " + " | ".join(["---"] * len(headers)) + " |"] + for row in rows: + out.append("| " + " | ".join(row) + " |") + return "\n".join(out) + + +@dataclass +class TokenInfo: + symbol: str + address: str | None + decimals: int | None + + +class PoolBuilder: + def __init__(self) -> None: + self.deployment_status = load_json(DEPLOYMENT_STATUS) + self.chain138_execution = load_json(CHAIN138_EXECUTION) + self.chain138_pmm = load_json(CHAIN138_PMM) + self.univ2_discovery = load_json(UNIV2_DISCOVERY) if UNIV2_DISCOVERY.exists() else None + self.gru_gap_report = load_json(GRU_GAP_REPORT) if GRU_GAP_REPORT.exists() else None + self.decimals_cache: dict[tuple[str, str], int | None] = {} + self.univ2_health_index = self.build_univ2_health_index() + self.documented_live_dodo_pairs = self.build_documented_live_dodo_pairs() + self.fallback_symbol_decimals = { + "WETH": 18, + "WETH9": 18, + "WETH10": 18, + "WETHL2": 18, + "WWEMIX": 18, + "WCRO": 18, + "WALL": 18, + "cWETH": 18, + "cWETHL2": 18, + } + + def build_univ2_health_index(self) -> dict[tuple[int, str], dict[str, Any]]: + index: dict[tuple[int, str], dict[str, Any]] = {} + if not self.univ2_discovery: + return index + for entry in self.univ2_discovery.get("entries", []): + chain_id = int(entry["chain_id"]) + for pair in entry.get("pairsChecked", []): + addr = pair.get("poolAddress") + if addr and addr != ZERO_ADDR: + index[(chain_id, addr.lower())] = pair + return index + + def build_documented_live_dodo_pairs(self) -> dict[int, set[str]]: + out: dict[int, set[str]] = {} + if not self.gru_gap_report: + return out + for chain in self.gru_gap_report.get("chains", []): + dodo = ((chain.get("venue_status") or {}).get("dodo_pmm") or {}) + out[int(chain["chain_id"])] = set(dodo.get("live_pairs", [])) + return out + + def resolve_token_address(self, chain_id: str, chain_data: dict[str, Any], symbol: str) -> str | None: + if chain_id == "138": + if symbol in self.chain138_execution.get("tokens", {}): + return self.chain138_execution["tokens"][symbol] + if symbol in chain_data.get("anchorAddresses", {}): + return chain_data["anchorAddresses"][symbol] + if symbol in self.chain138_pmm.get("tokens", {}): + return self.chain138_pmm["tokens"][symbol] + for key in ("cwTokens", "anchorAddresses", "gasMirrors", "gasQuoteAddresses"): + mapping = chain_data.get(key, {}) + if symbol in mapping: + return mapping[symbol] + return None + + def token_decimals(self, rpc: str, address: str | None, chain_id: str, symbol: str | None = None) -> int | None: + if not address: + return None + cache_key = (chain_id, address.lower()) + if cache_key in self.decimals_cache: + return self.decimals_cache[cache_key] + try: + lines = cast_call(rpc, address, "decimals()(uint8)") + dec = clean_int(lines[0]) + if dec == 0 and (symbol or "") in self.fallback_symbol_decimals: + dec = self.fallback_symbol_decimals[symbol or ""] + except Exception: + dec = self.fallback_symbol_decimals.get(symbol or "") + self.decimals_cache[cache_key] = dec + return dec + + def build_pool_rows(self) -> dict[str, Any]: + chains = self.deployment_status["chains"] + generated_at = datetime.now(timezone.utc).replace(microsecond=0).isoformat() + report_chains: list[dict[str, Any]] = [] + + for chain_id in CHAIN_ORDER: + chain_data = chains.get(chain_id) + if not chain_data: + continue + rpc = RPC_DEFAULTS.get(chain_id) + chain_rows: list[dict[str, Any]] = [] + for list_key in POOL_LIST_KEYS: + for pool in chain_data.get(list_key, []): + row = self.build_pool_row(chain_id, chain_data, list_key, pool, rpc) + chain_rows.append(row) + reference_venues = [self.build_reference_venue_row(chain_id, chain_data, venue) for venue in chain_data.get("gasReferenceVenues", [])] + report_chains.append( + { + "chainId": int(chain_id), + "network": chain_data["name"], + "rpc": rpc, + "poolCount": len(chain_rows), + "pools": chain_rows, + "referenceVenueCount": len(reference_venues), + "referenceVenues": reference_venues, + } + ) + return { + "generatedAt": generated_at, + "sourceFiles": [ + str(DEPLOYMENT_STATUS.relative_to(ROOT)), + str(CHAIN138_EXECUTION.relative_to(ROOT)), + str(CHAIN138_PMM.relative_to(ROOT)), + ], + "chains": report_chains, + } + + def build_pool_row( + self, + chain_id: str, + chain_data: dict[str, Any], + list_key: str, + pool: dict[str, Any], + rpc: str | None, + ) -> dict[str, Any]: + base_symbol = pool.get("base") or pool.get("tokenIn") + quote_symbol = pool.get("quote") or pool.get("tokenOut") + base_address = self.resolve_token_address(chain_id, chain_data, base_symbol) if base_symbol else None + quote_address = self.resolve_token_address(chain_id, chain_data, quote_symbol) if quote_symbol else None + venue = pool.get("venue") or ("uniswap_v2_pair" if list_key == "uniswapV2Pools" else "dodo_pmm") + notes = list(pool.get("notes", [])) + live_enabled = pool.get("publicRoutingEnabled") + row: dict[str, Any] = { + "chainId": int(chain_id), + "network": chain_data["name"], + "inventoryGroup": list_key, + "venue": venue, + "baseSymbol": base_symbol, + "baseAddress": base_address, + "quoteSymbol": quote_symbol, + "quoteAddress": quote_address, + "poolAddress": pool.get("poolAddress"), + "feeBps": pool.get("feeBps"), + "k": pool.get("k"), + "role": pool.get("role"), + "poolType": pool.get("poolType"), + "publicRoutingEnabled": live_enabled, + "notes": notes, + "status": "configured", + "balances": None, + "queryError": None, + "balanceSource": None, + } + + if list_key == "uniswapV2Pools": + row["factoryAddress"] = pool.get("factoryAddress") + row["routerAddress"] = pool.get("routerAddress") + + pool_address = pool.get("poolAddress") + if not rpc: + row["status"] = "rpc_missing" + return row + if is_placeholder_address(pool_address) or any(note in PLACEHOLDER_NOTES for note in notes): + row["status"] = "planned_gas_placeholder" if list_key == "gasPmmPools" else "placeholder_not_live" + return row + if not pool_address or not base_address or not quote_address: + row["status"] = "address_resolution_missing" + return row + + try: + if list_key == "uniswapV2Pools": + balances = self.fetch_uniswap_v2_discovery_balances(int(chain_id), pool_address, base_symbol, quote_symbol, base_address, quote_address, rpc) + if balances is not None: + row["balances"] = balances + row["status"] = "live" + row["balanceSource"] = "uniswap_v2_live_pair_discovery" + else: + row["status"] = "configured_no_live_balance" + elif chain_id == "138": + row["balances"] = self.fetch_dodo_balances(rpc, chain_id, pool_address, base_symbol, quote_symbol, base_address, quote_address) + row["status"] = "live" + row["balanceSource"] = "rpc_getVaultReserve" + else: + code = cast_code(rpc, pool_address) + if code in ("", "0x"): + row["status"] = "configured_no_code" + elif list_key == "pmmPools" and f"{base_symbol}/{quote_symbol}" in self.documented_live_dodo_pairs.get(int(chain_id), set()): + row["status"] = "live_documented_no_balance" + row["balanceSource"] = "promod_gru_v2_full_mesh_gap_report" + else: + try: + row["balances"] = self.fetch_dodo_balances(rpc, chain_id, pool_address, base_symbol, quote_symbol, base_address, quote_address) + row["status"] = "live" + row["balanceSource"] = "rpc_getVaultReserve" + except Exception: + row["status"] = "configured_code_present_no_balance_read" + except Exception as exc: + if list_key == "pmmPools" and f"{base_symbol}/{quote_symbol}" in self.documented_live_dodo_pairs.get(int(chain_id), set()): + row["status"] = "live_documented_no_balance" + row["balanceSource"] = "promod_gru_v2_full_mesh_gap_report" + row["queryError"] = str(exc) + else: + row["status"] = "query_failed" + row["queryError"] = str(exc) + return row + + def build_reference_venue_row(self, chain_id: str, chain_data: dict[str, Any], venue: dict[str, Any]) -> dict[str, Any]: + base_symbol = venue.get("base") + quote_symbol = venue.get("quote") + notes = list(venue.get("notes", [])) + if any(note in PLACEHOLDER_NOTES for note in notes): + status = "planned_reference_placeholder" + elif venue.get("live"): + status = "live" + elif venue.get("supported"): + status = "supported_not_live" + else: + status = "unsupported" + return { + "chainId": int(chain_id), + "network": chain_data["name"], + "protocol": venue.get("protocol"), + "familyKey": venue.get("familyKey"), + "baseSymbol": base_symbol, + "baseAddress": self.resolve_token_address(chain_id, chain_data, base_symbol) if base_symbol else None, + "quoteSymbol": quote_symbol, + "quoteAddress": self.resolve_token_address(chain_id, chain_data, quote_symbol) if quote_symbol else None, + "venueAddress": venue.get("venueAddress"), + "supported": venue.get("supported"), + "live": venue.get("live"), + "routingVisible": venue.get("routingVisible"), + "reference": venue.get("reference"), + "aggregatorOnly": venue.get("aggregatorOnly"), + "indexRequired": venue.get("indexRequired"), + "dependsOn": venue.get("dependsOn", []), + "notes": notes, + "status": status, + } + + def fetch_uniswap_v2_discovery_balances( + self, + chain_id: int, + pool_address: str, + base_symbol: str, + quote_symbol: str, + base_address: str, + quote_address: str, + rpc: str, + ) -> dict[str, Any] | None: + pair = self.univ2_health_index.get((chain_id, pool_address.lower())) + if not pair or not pair.get("live"): + return None + health = pair.get("health") or {} + base_raw = int(health["baseReserveRaw"]) + quote_raw = int(health["quoteReserveRaw"]) + base_dec = self.token_decimals(rpc, base_address, str(chain_id), base_symbol) + quote_dec = self.token_decimals(rpc, quote_address, str(chain_id), quote_symbol) + return { + "base": { + "symbol": base_symbol, + "address": base_address, + "raw": str(base_raw), + "decimals": base_dec, + "formatted": health.get("baseReserveUnits") or human_amount(base_raw, base_dec), + }, + "quote": { + "symbol": quote_symbol, + "address": quote_address, + "raw": str(quote_raw), + "decimals": quote_dec, + "formatted": health.get("quoteReserveUnits") or human_amount(quote_raw, quote_dec), + }, + "health": health, + } + + def fetch_dodo_balances( + self, + rpc: str, + chain_id: str, + pool_address: str, + base_symbol: str, + quote_symbol: str, + base_address: str, + quote_address: str, + ) -> dict[str, Any]: + lines = cast_call(rpc, pool_address, "getVaultReserve()(uint256,uint256)") + base_raw = clean_int(lines[0]) + quote_raw = clean_int(lines[1]) + base_dec = self.token_decimals(rpc, base_address, chain_id, base_symbol) + quote_dec = self.token_decimals(rpc, quote_address, chain_id, quote_symbol) + return { + "base": { + "symbol": base_symbol, + "address": base_address, + "raw": str(base_raw), + "decimals": base_dec, + "formatted": human_amount(base_raw, base_dec), + }, + "quote": { + "symbol": quote_symbol, + "address": quote_address, + "raw": str(quote_raw), + "decimals": quote_dec, + "formatted": human_amount(quote_raw, quote_dec), + }, + } + + def fetch_uniswap_v2_balances( + self, + rpc: str, + chain_id: str, + pool_address: str, + base_symbol: str, + quote_symbol: str, + base_address: str, + quote_address: str, + ) -> dict[str, Any]: + reserves = cast_call(rpc, pool_address, "getReserves()(uint112,uint112,uint32)") + reserve0 = clean_int(reserves[0]) + reserve1 = clean_int(reserves[1]) + token0 = cast_call(rpc, pool_address, "token0()(address)")[0].split()[0] + token1 = cast_call(rpc, pool_address, "token1()(address)")[0].split()[0] + + if token0.lower() == base_address.lower() and token1.lower() == quote_address.lower(): + base_raw, quote_raw = reserve0, reserve1 + elif token0.lower() == quote_address.lower() and token1.lower() == base_address.lower(): + base_raw, quote_raw = reserve1, reserve0 + else: + raise RuntimeError(f"pair token mismatch: token0={token0} token1={token1}") + + base_dec = self.token_decimals(rpc, base_address, chain_id, base_symbol) + quote_dec = self.token_decimals(rpc, quote_address, chain_id, quote_symbol) + return { + "base": { + "symbol": base_symbol, + "address": base_address, + "raw": str(base_raw), + "decimals": base_dec, + "formatted": human_amount(base_raw, base_dec), + }, + "quote": { + "symbol": quote_symbol, + "address": quote_address, + "raw": str(quote_raw), + "decimals": quote_dec, + "formatted": human_amount(quote_raw, quote_dec), + }, + } + + +def render_markdown(report: dict[str, Any]) -> str: + generated_at = report["generatedAt"] + lines = [ + "# Liquidity Pools Master Map — Chain 138, ALL Mainnet, and Public Networks", + "", + f"**Last Updated:** {generated_at}", + "**Document Version:** 2.0", + "**Status:** Generated from deployment-status plus live reserve reads where supported", + "", + "## Overview", + "", + "This document is generated from the machine-readable deployment graph in `cross-chain-pmm-lps/config/deployment-status.json`, plus live reserve reads from chain RPCs.", + "", + "Pool categories:", + "- `pmmPools`: standard DODO PMM routing pools", + "- `pmmPoolsVolatile`: volatile-route PMM pools", + "- `gasPmmPools`: gas-family PMM pools", + "- `uniswapV2Pools`: Uniswap V2-compatible pairs", + "", + ] + + summary_rows: list[list[str]] = [] + for chain in report["chains"]: + live = sum(1 for pool in chain["pools"] if str(pool["status"]).startswith("live")) + planned_placeholder = sum(1 for pool in chain["pools"] if pool["status"] == "planned_gas_placeholder") + failed = sum(1 for pool in chain["pools"] if pool["status"] == "query_failed") + summary_rows.append( + [ + str(chain["chainId"]), + chain["network"], + str(chain["poolCount"]), + str(live), + str(planned_placeholder), + str(failed), + str(chain.get("referenceVenueCount", 0)), + chain["rpc"] or "n/a", + ] + ) + lines += ["## Network Summary", "", markdown_table(["ChainID", "Network", "Pools", "Live Read", "Planned Gas Placeholder", "Query Failed", "Reference Venues", "RPC"], summary_rows), ""] + + for chain in report["chains"]: + lines += [f"## {chain['network']} ({chain['chainId']})", ""] + if not chain["pools"]: + lines += ["No pools are listed in the canonical deployment graph for this network.", ""] + continue + rows: list[list[str]] = [] + for pool in chain["pools"]: + balances = pool.get("balances") or {} + base_bal = balances.get("base", {}).get("formatted") if balances else None + quote_bal = balances.get("quote", {}).get("formatted") if balances else None + rows.append( + [ + pool["inventoryGroup"], + pool["venue"], + f"{pool['baseSymbol']} / {pool['quoteSymbol']}", + f"`{pool['poolAddress']}`", + f"`{pool['baseAddress']}`" if pool.get("baseAddress") else "—", + f"`{pool['quoteAddress']}`" if pool.get("quoteAddress") else "—", + base_bal or "—", + quote_bal or "—", + pool["status"], + ] + ) + lines += [ + markdown_table( + ["Group", "Venue", "Pair", "Pool", "Base Token", "Quote Token", "Base Balance", "Quote Balance", "Status"], + rows, + ), + "", + ] + ref_rows = chain.get("referenceVenues", []) + if ref_rows: + ref_table_rows = [] + for venue in ref_rows: + ref_table_rows.append( + [ + venue["protocol"], + f"{venue.get('baseSymbol')} / {venue.get('quoteSymbol')}", + f"`{venue['venueAddress']}`" if venue.get("venueAddress") else "—", + "yes" if venue.get("supported") else "no", + "yes" if venue.get("live") else "no", + "yes" if venue.get("routingVisible") else "no", + venue["status"], + ] + ) + lines += [ + f"### {chain['network']} Reference Venues", + "", + markdown_table(["Protocol", "Pair", "Venue Address", "Supported", "Live", "Routing Visible", "Status"], ref_table_rows), + "", + ] + + lines += [ + "## Source Files", + "", + "- `cross-chain-pmm-lps/config/deployment-status.json`", + "- `smom-dbis-138/config/chain138-eth-pmm-pools-execution.json`", + "- `smom-dbis-138/config/chain138-pmm-pools.json`", + f"- `reports/status/{OUT_JSON.name}`", + "", + ] + return "\n".join(lines) + + +def main() -> int: + builder = PoolBuilder() + report = builder.build_pool_rows() + OUT_JSON.parent.mkdir(parents=True, exist_ok=True) + OUT_MD.parent.mkdir(parents=True, exist_ok=True) + OUT_JSON.write_text(json.dumps(report, indent=2) + "\n") + OUT_MD.write_text(render_markdown(report) + "\n") + print(f"Wrote {OUT_JSON.relative_to(ROOT)}") + print(f"Wrote {OUT_MD.relative_to(ROOT)}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/verify/build-network-deployment-inventory.mjs b/scripts/verify/build-network-deployment-inventory.mjs new file mode 100644 index 00000000..39eb4642 --- /dev/null +++ b/scripts/verify/build-network-deployment-inventory.mjs @@ -0,0 +1,317 @@ +#!/usr/bin/env node + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const repoRoot = path.resolve(__dirname, "..", ".."); + +const deploymentStatusPath = path.join(repoRoot, "cross-chain-pmm-lps/config/deployment-status.json"); +const manifestPath = path.join(repoRoot, "atomic-swap-dapp/config/ecosystem-manifest.json"); +const liveRouteRegistryPath = path.join(repoRoot, "atomic-swap-dapp/config/live-route-registry.json"); +const routingRegistryPath = path.join(repoRoot, "config/routing-registry.json"); +const allMainnetProtocolSurfacePath = path.join(repoRoot, "config/allmainnet-non-dodo-protocol-surface.json"); +const allMainnetTokenDocPath = path.join(repoRoot, "docs/11-references/ALL_MAINNET_TOKEN_ADDRESSES.md"); +const markdownOutputPath = path.join(repoRoot, "reports/status/network-deployment-inventory-latest.md"); +const jsonOutputPath = path.join(repoRoot, "reports/status/network-deployment-inventory-latest.json"); + +function readJson(filePath) { + return JSON.parse(fs.readFileSync(filePath, "utf8")); +} + +function writeText(filePath, content) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + fs.writeFileSync(filePath, content); +} + +function normalizeBool(value) { + if (value === true) return "✓"; + if (value === false) return "—"; + return "?"; +} + +function parseMarkdownTable(markdown, sectionTitle) { + const lines = markdown.split("\n"); + const heading = `### ${sectionTitle}`; + const startIndex = lines.findIndex((line) => line.trim() === heading); + if (startIndex === -1) { + return []; + } + const tableLines = []; + for (const rawLine of lines.slice(startIndex + 1)) { + const line = rawLine.trim(); + if (line.startsWith("### ") || line.startsWith("## ")) { + break; + } + tableLines.push(line); + } + + const relevant = tableLines.filter((line) => line.startsWith("|")); + + if (relevant.length < 3) { + return []; + } + + const headers = relevant[0] + .split("|") + .slice(1, -1) + .map((cell) => cell.trim()); + + return relevant.slice(2).map((line) => { + const values = line + .split("|") + .slice(1, -1) + .map((cell) => cell.trim()); + return Object.fromEntries(headers.map((header, index) => [header, values[index] ?? ""])); + }).filter( + (row) => + row.Symbol && + row.Symbol !== "Symbol" && + row.Symbol !== "--------" && + row.Address && + row.Address !== "Address" && + row.Address !== "---------" + ); +} + +function parseAllMainnetTokens(markdown) { + const sections = ["Stablecoins", "Wrapped Tokens", "DeFi Tokens"]; + return sections.flatMap((section) => + parseMarkdownTable(markdown, section).map((row) => ({ + category: section, + token: row.Token, + symbol: row.Symbol, + address: row.Address?.replace(/`/g, "") ?? "", + decimals: Number(row.Decimals || 0), + status: row.Status, + notes: row.Notes + })) + ); +} + +function buildSpecialCaseBridgeList(liveRouteRegistry, routingRegistry, chainId) { + const liveRoutes = (liveRouteRegistry.liveBridgeRoutes ?? []) + .filter((route) => Number(route.fromChainId) === Number(chainId) || Number(route.toChainId) === Number(chainId)) + .map((route) => ({ + routeId: route.routeId, + fromChainId: route.fromChainId, + toChainId: route.toChainId, + bridgeType: route.bridgeType, + asset: route.assetSymbol, + bridgeAddress: route.bridgeAddress, + status: "live" + })); + + if (liveRoutes.length > 0) { + return liveRoutes; + } + + return (routingRegistry.routes ?? []) + .filter((route) => Number(route.fromChain) === Number(chainId) || Number(route.toChain) === Number(chainId)) + .map((route) => ({ + routeId: `${route.fromChain}-${route.toChain}-${route.asset}-${route.pathType}`.toLowerCase(), + fromChainId: route.fromChain, + toChainId: route.toChain, + bridgeType: route.pathType, + asset: route.asset, + bridgeAddress: route.bridgeAddress, + status: "configured" + })); +} + +function countTokens(chainStatus) { + return Object.keys(chainStatus.cwTokens ?? {}).length; +} + +function countAnchors(chainStatus) { + return Object.keys(chainStatus.anchorAddresses ?? {}).length; +} + +function countPools(chainStatus, key) { + return Array.isArray(chainStatus[key]) ? chainStatus[key].length : 0; +} + +function buildNextTasks(chainId) { + switch (Number(chainId)) { + case 138: + return [ + "Keep Chain 138 PMM inventory, live swap routes, and public manifest synchronized after every token or pool deployment.", + "Replace remaining placeholder bridge metadata with canonical deployed addresses and keep bridge notes current.", + "Re-run route, inventory, and explorer verification audits after any bridge or pool change.", + "Maintain source-chain bridge support for CCIP, GRU, and Alltra routes as the canonical launch surface." + ]; + case 1111: + return [ + "Keep Wemix marked `planned_gas_scaffold` and `bridgeAvailable: false` until a successful bridge proof transfer is recorded.", + "Replace placeholder gas PMM pools and gas reference venues with real deployed venues or remove them from the launch inventory.", + "Complete canonical Wemix bridge readiness: funding, proof transfer verification, and any required inbound/outbound confirmation.", + "Add real same-chain settlement inventory only after WEMIX-side execution is actually deployed and routable." + ]; + case 651940: + return [ + "Add real same-chain Alltra swap inventory if users should settle into assets other than direct bridge receive.", + "Publish deployed PMM or public DEX pool addresses into canonical inventory instead of anchor-only metadata.", + "Expand the canonical Alltra token/routing surface only when those assets are actually part of supported settlement flows.", + "Keep AlltraAdapter bridge metadata, supported assets, and fee assumptions synchronized with deployed bridge behavior." + ]; + default: + return []; + } +} + +function main() { + const deploymentStatus = readJson(deploymentStatusPath); + const manifest = readJson(manifestPath); + const liveRouteRegistry = readJson(liveRouteRegistryPath); + const routingRegistry = readJson(routingRegistryPath); + const allMainnetProtocolSurface = readJson(allMainnetProtocolSurfacePath); + const allMainnetTokenDoc = fs.readFileSync(allMainnetTokenDocPath, "utf8"); + + const supportedNetworks = manifest.supportedNetworks ?? []; + const manifestByChain = new Map(supportedNetworks.map((network) => [String(network.chainId), network])); + const allMainnetTokens = parseAllMainnetTokens(allMainnetTokenDoc); + + const chains = Object.entries(deploymentStatus.chains ?? {}) + .map(([chainId, status]) => { + const manifestRow = manifestByChain.get(chainId) ?? {}; + return { + chainId: Number(chainId), + chainKey: chainId, + network: status.name ?? manifestRow.name ?? `Chain ${chainId}`, + activationState: status.activationState ?? manifestRow.activationState ?? "live", + bridgeAvailable: + typeof status.bridgeAvailable === "boolean" + ? status.bridgeAvailable + : Boolean(manifestRow.bridgeAvailable), + tokenCount: countTokens(status), + anchorCount: countAnchors(status), + pmmPoolCount: countPools(status, "pmmPools"), + volatilePoolCount: countPools(status, "pmmPoolsVolatile"), + gasPmmPoolCount: countPools(status, "gasPmmPools"), + referenceVenueCount: countPools(status, "gasReferenceVenues"), + uniswapV2PoolCount: countPools(status, "uniswapV2Pools"), + bridgeRouteCount: (manifestRow.routeCoverage?.inboundBridgeRoutes ?? 0) + (manifestRow.routeCoverage?.outboundBridgeRoutes ?? 0), + cwTokens: status.cwTokens ?? {}, + anchorAddresses: status.anchorAddresses ?? {}, + gasMirrors: status.gasMirrors ?? {}, + gasQuoteAddresses: status.gasQuoteAddresses ?? {}, + specialCaseBridges: buildSpecialCaseBridgeList(liveRouteRegistry, routingRegistry, chainId) + }; + }) + .sort((left, right) => left.chainId - right.chainId); + + const specialCases = chains + .filter((chain) => [138, 1111, 651940].includes(chain.chainId)) + .map((chain) => ({ + ...chain, + documentedTokens: + chain.chainId === 651940 + ? (allMainnetProtocolSurface.documentedTokens ?? allMainnetTokens) + : [], + nextTasks: buildNextTasks(chain.chainId) + })); + + const markdown = [ + "# Network Deployment Inventory", + "", + "| Chain | Network | Activation | Bridge Available | Tokens | Anchors | PMM | Volatile | Gas PMM | Ref Venues | UniV2 | Bridge Routes |", + "|---:|---|---|:---:|---:|---:|---:|---:|---:|---:|---:|---:|", + ...chains.map( + (chain) => + `| \`${chain.chainId}\` | ${chain.network} | \`${chain.activationState}\` | ${normalizeBool(chain.bridgeAvailable)} | ${chain.tokenCount} | ${chain.anchorCount} | ${chain.pmmPoolCount} | ${chain.volatilePoolCount} | ${chain.gasPmmPoolCount} | ${chain.referenceVenueCount} | ${chain.uniswapV2PoolCount} | ${chain.bridgeRouteCount} |` + ), + "", + "## Special-Case Networks", + "", + ...specialCases.flatMap((chain) => { + const bridgeLines = + chain.specialCaseBridges.length > 0 + ? chain.specialCaseBridges.map( + (bridge) => + ` - \`${bridge.fromChainId} -> ${bridge.toChainId}\` \`${bridge.bridgeType}\` \`${bridge.asset}\` at \`${bridge.bridgeAddress}\`` + ) + : [" - none recorded"]; + + const documentedTokenLines = + chain.documentedTokens.length > 0 + ? [ + "", + "- Documented ecosystem tokens:", + ...chain.documentedTokens.map( + (token) => + ` - \`${token.symbol}\` ${token.address} (${token.decimals} decimals; ${token.category}; ${token.status})` + ) + ] + : []; + + return [ + `### \`${chain.chainId}\` ${chain.network}`, + "", + `- Activation state: \`${chain.activationState}\``, + `- Bridge available: \`${chain.bridgeAvailable}\``, + `- cW tokens: ${Object.keys(chain.cwTokens).length ? Object.keys(chain.cwTokens).join(", ") : "none"}`, + `- Anchors: ${Object.keys(chain.anchorAddresses).length ? Object.entries(chain.anchorAddresses).map(([symbol, address]) => `${symbol}=${address}`).join(", ") : "none"}`, + `- PMM pools: \`${chain.pmmPoolCount}\``, + `- Gas PMM pools: \`${chain.gasPmmPoolCount}\``, + `- Gas/reference venues: \`${chain.referenceVenueCount}\``, + `- UniV2 pools: \`${chain.uniswapV2PoolCount}\``, + "- Bridge routes:", + ...bridgeLines, + ...documentedTokenLines, + "", + "- Next tasks:", + ...chain.nextTasks.map((task) => ` - ${task}`), + "" + ]; + }) + ].join("\n"); + + const json = { + name: "Network Deployment Inventory", + generatedAt: new Date().toISOString(), + sourceFiles: [ + path.relative(repoRoot, deploymentStatusPath), + path.relative(repoRoot, manifestPath), + path.relative(repoRoot, liveRouteRegistryPath), + path.relative(repoRoot, routingRegistryPath), + path.relative(repoRoot, allMainnetProtocolSurfacePath), + path.relative(repoRoot, allMainnetTokenDocPath) + ], + networks: chains.map((chain) => ({ + chainId: chain.chainId, + network: chain.network, + activationState: chain.activationState, + bridgeAvailable: chain.bridgeAvailable, + tokenCount: chain.tokenCount, + anchorCount: chain.anchorCount, + pmmPoolCount: chain.pmmPoolCount, + volatilePoolCount: chain.volatilePoolCount, + gasPmmPoolCount: chain.gasPmmPoolCount, + referenceVenueCount: chain.referenceVenueCount, + uniswapV2PoolCount: chain.uniswapV2PoolCount, + bridgeRouteCount: chain.bridgeRouteCount + })), + specialCases: specialCases.map((chain) => ({ + chainId: chain.chainId, + network: chain.network, + activationState: chain.activationState, + bridgeAvailable: chain.bridgeAvailable, + cwTokens: chain.cwTokens, + anchors: chain.anchorAddresses, + gasMirrors: chain.gasMirrors, + gasQuoteAddresses: chain.gasQuoteAddresses, + bridgeRoutes: chain.specialCaseBridges, + documentedTokens: chain.documentedTokens, + nextTasks: chain.nextTasks + })) + }; + + writeText(markdownOutputPath, `${markdown}\n`); + writeText(jsonOutputPath, `${JSON.stringify(json, null, 2)}\n`); + console.log(`Wrote ${path.relative(repoRoot, markdownOutputPath)}`); + console.log(`Wrote ${path.relative(repoRoot, jsonOutputPath)}`); +} + +main(); diff --git a/scripts/verify/check-dependencies.sh b/scripts/verify/check-dependencies.sh index ee225cbd..fe7416d1 100755 --- a/scripts/verify/check-dependencies.sh +++ b/scripts/verify/check-dependencies.sh @@ -29,9 +29,9 @@ done echo "All required dependencies present: ${REQUIRED[*]}" if [ ${#OPTIONAL_MISSING[@]} -gt 0 ]; then - echo "Optional (recommended for automation): ${OPTIONAL[*]}" - echo "Missing optional: ${OPTIONAL_MISSING[*]}" - echo "Install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3" - echo " (dig from dnsutils; ss from iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)" + # Not a failure — optional tools (exit code stays 0) + echo "Note — optional tools not in PATH: ${OPTIONAL_MISSING[*]}" + echo " To install (Debian/Ubuntu): sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel sqlite3" + echo " (dig: dnsutils; ss: iproute2; wscat/websocat: npm install -g wscat or cargo install websocat)" fi exit 0 diff --git a/scripts/verify/export-liquidity-pools-compact-csv.py b/scripts/verify/export-liquidity-pools-compact-csv.py new file mode 100644 index 00000000..eeefb4a9 --- /dev/null +++ b/scripts/verify/export-liquidity-pools-compact-csv.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +"""Export the compact liquidity-pools CSV from the generated master-map JSON.""" + +from __future__ import annotations + +import csv +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +INPUT_JSON = ROOT / "reports/status/liquidity-pools-master-map-latest.json" +OUTPUT_CSV = ROOT / "reports/status/liquidity-pools-master-map-compact-latest.csv" + +FIELDNAMES = [ + "chainId", + "network", + "pair", + "poolAddress", + "baseTokenAddress", + "quoteTokenAddress", + "baseBalance", + "quoteBalance", + "status", +] + + +def main() -> int: + data = json.loads(INPUT_JSON.read_text()) + OUTPUT_CSV.parent.mkdir(parents=True, exist_ok=True) + + with OUTPUT_CSV.open("w", newline="") as fh: + writer = csv.DictWriter(fh, fieldnames=FIELDNAMES) + writer.writeheader() + for chain in data.get("chains", []): + for pool in chain.get("pools", []): + writer.writerow( + { + "chainId": pool.get("chainId", chain.get("chainId")), + "network": pool.get("network", chain.get("network")), + "pair": f"{pool.get('baseSymbol')}/{pool.get('quoteSymbol')}", + "poolAddress": pool.get("poolAddress", ""), + "baseTokenAddress": pool.get("baseAddress", ""), + "quoteTokenAddress": pool.get("quoteAddress", ""), + "baseBalance": ((pool.get("balances") or {}).get("base") or {}).get("formatted", ""), + "quoteBalance": ((pool.get("balances") or {}).get("quote") or {}).get("formatted", ""), + "status": pool.get("status", ""), + } + ) + + print(f"Wrote {OUTPUT_CSV.relative_to(ROOT)}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.py b/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.py new file mode 100644 index 00000000..9b099e51 --- /dev/null +++ b/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.py @@ -0,0 +1,409 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import json +import os +import re +import subprocess +import sys +from datetime import datetime, timezone +from decimal import Decimal, ROUND_CEILING, getcontext +from pathlib import Path + +getcontext().prec = 42 + +ROOT = Path(__file__).resolve().parents[2] +LATEST_SNAPSHOT = ROOT / "reports" / "status" / "mainnet-cwusdc-usdc-preflight-latest.json" +POLICY_PATH = ROOT / "config" / "extraction" / "mainnet-cwusdc-usdc-support-policy.json" +ROOT_ENV_PATH = ROOT / ".env" +SMOM_ENV_PATH = ROOT / "smom-dbis-138" / ".env" +ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" +DEFAULT_CWUSDC = "0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a" +DEFAULT_USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" +SIX_DECIMALS = Decimal(10) ** 6 +ADDRESS_RE = re.compile(r"0x[a-fA-F0-9]{40}") +UINT_RE = re.compile(r"\b\d+\b") + + +def load_json(path: Path) -> dict: + return json.loads(path.read_text()) + + +def load_env_file(path: Path) -> dict[str, str]: + values: dict[str, str] = {} + if not path.exists(): + return values + for raw_line in path.read_text().splitlines(): + line = raw_line.strip() + if not line or line.startswith("#") or "=" not in line: + continue + key, value = line.split("=", 1) + values[key.strip()] = value.strip().strip('"').strip("'") + return values + + +def merged_env_values() -> dict[str, str]: + values: dict[str, str] = {} + values.update(load_env_file(ROOT_ENV_PATH)) + values.update(load_env_file(SMOM_ENV_PATH)) + return values + + +def resolve_env_value(key: str, env_values: dict[str, str], seen: set[str] | None = None) -> str: + if seen is None: + seen = set() + if key in seen: + return env_values.get(key, "") + seen.add(key) + value = os.environ.get(key) or env_values.get(key, "") + if value.startswith("${") and value.endswith("}"): + inner = value[2:-1] + target = inner.split(":-", 1)[0] + fallback = inner.split(":-", 1)[1] if ":-" in inner else "" + resolved = resolve_env_value(target, env_values, seen) + return resolved or fallback + return value.rstrip("\r\n") + + +def normalize_units(raw: int, decimals: int = 6) -> Decimal: + return Decimal(raw) / (Decimal(10) ** decimals) + + +def units_to_raw(units: Decimal, decimals: int = 6) -> int: + scale = Decimal(10) ** decimals + return int((units * scale).to_integral_value(rounding=ROUND_CEILING)) + + +def decimal_max(a: Decimal, b: Decimal) -> Decimal: + return a if a >= b else b + + +def parse_uint(value: str) -> int: + matches = UINT_RE.findall(value) + if not matches: + raise ValueError(f"could not parse integer from {value!r}") + return int(matches[0]) + + +def parse_address(value: str) -> str: + match = ADDRESS_RE.search(value) + if not match: + raise ValueError(f"could not parse address from {value!r}") + return match.group(0) + + +def cast_call(rpc_url: str, target: str, signature: str, *args: str) -> str: + cmd = ["cast", "call", target, signature, *args, "--rpc-url", rpc_url] + return subprocess.check_output(cmd, text=True).strip() + + +def query_balance(rpc_url: str, token: str, holder: str) -> int: + return parse_uint(cast_call(rpc_url, token, "balanceOf(address)(uint256)", holder)) + + +def derive_holder_from_private_key(env_values: dict[str, str]) -> str: + private_key = resolve_env_value("PRIVATE_KEY", env_values) or resolve_env_value("KEEPER_PRIVATE_KEY", env_values) + if not private_key or "${" in private_key: + return "" + output = subprocess.check_output(["cast", "wallet", "address", "--private-key", private_key], text=True).strip() + return parse_address(output) + + +def shell_quote(value: str) -> str: + return "'" + value.replace("'", "'\"'\"'") + "'" + + +def command_block(lines: list[str]) -> str: + return "\n".join(lines) + + +def funding_status(required_raw: int, available_raw: int, decimals: int = 6) -> dict: + shortfall_raw = max(required_raw - available_raw, 0) + return { + "requiredRaw": str(required_raw), + "requiredUnits": str(normalize_units(required_raw, decimals)), + "availableRaw": str(available_raw), + "availableUnits": str(normalize_units(available_raw, decimals)), + "shortfallRaw": str(shortfall_raw), + "shortfallUnits": str(normalize_units(shortfall_raw, decimals)), + "covered": shortfall_raw == 0, + } + + +def build_plan(snapshot: dict, policy: dict, env_values: dict[str, str], holder_override: str) -> dict: + rpc_url = resolve_env_value("ETHEREUM_MAINNET_RPC", env_values) + if not rpc_url: + raise RuntimeError("missing ETHEREUM_MAINNET_RPC") + + summary = snapshot["summary"] + public_health = snapshot["health"]["publicPairHealth"] + defended_health = snapshot["health"]["defendedVenueHealth"] + treasury = snapshot.get("treasuryManager") or {} + + base_reserve_raw = int(summary["defendedBaseReserveRaw"]) + quote_reserve_raw = int(summary["defendedQuoteReserveRaw"]) + target_reserve_raw = max(base_reserve_raw, quote_reserve_raw) + add_quote_raw = max(base_reserve_raw - quote_reserve_raw, 0) + add_base_raw = max(quote_reserve_raw - base_reserve_raw, 0) + + min_base_units = Decimal(str(policy["thresholds"]["minBaseReserveUnits"])) + min_quote_units = Decimal(str(policy["thresholds"]["minQuoteReserveUnits"])) + public_base_units = Decimal(str(summary["publicPairBaseReserveUnits"])) + public_quote_units = Decimal(str(summary["publicPairQuoteReserveUnits"])) + public_base_shortfall_units = decimal_max(min_base_units - public_base_units, Decimal(0)) + public_quote_shortfall_units = decimal_max(min_quote_units - public_quote_units, Decimal(0)) + public_base_shortfall_raw = units_to_raw(public_base_shortfall_units) + public_quote_shortfall_raw = units_to_raw(public_quote_shortfall_units) + + max_automated_raw = int(policy["managedCycle"]["maxAutomatedFlashQuoteAmountRaw"]) + manager_available_raw = int(treasury.get("availableQuoteRaw") or 0) + + holder = holder_override or derive_holder_from_private_key(env_values) + cwusdc = resolve_env_value("CWUSDC_MAINNET", env_values) or DEFAULT_CWUSDC + usdc = resolve_env_value("USDC_MAINNET", env_values) or DEFAULT_USDC + manager = snapshot["resolvedAddresses"].get("treasuryManager") or "" + receiver = snapshot["resolvedAddresses"].get("receiver") or "" + defended_pool = snapshot["health"]["defendedVenue"]["poolAddress"] + public_pair = snapshot["health"]["publicPair"]["poolAddress"] + integration = resolve_env_value("DODO_PMM_INTEGRATION_MAINNET", env_values) + router = resolve_env_value("CHAIN_1_UNISWAP_V2_ROUTER", env_values) + + holder_state = None + holder_usdc_raw = 0 + holder_cwusdc_raw = 0 + holder_blockers: list[str] = [] + if holder and holder.lower() != ZERO_ADDRESS: + try: + holder_cwusdc_raw = query_balance(rpc_url, cwusdc, holder) + holder_usdc_raw = query_balance(rpc_url, usdc, holder) + holder_state = { + "address": holder, + "cwusdcBalanceRaw": str(holder_cwusdc_raw), + "cwusdcBalanceUnits": str(normalize_units(holder_cwusdc_raw)), + "usdcBalanceRaw": str(holder_usdc_raw), + "usdcBalanceUnits": str(normalize_units(holder_usdc_raw)), + } + except Exception as exc: + holder_blockers.append(f"holder balance query failed: {exc}") + + manager_funding = funding_status(max_automated_raw, manager_available_raw) + defended_quote_funding = funding_status(add_quote_raw, holder_usdc_raw) + public_base_funding = funding_status(public_base_shortfall_raw, holder_cwusdc_raw) + public_quote_funding = funding_status(public_quote_shortfall_raw, holder_usdc_raw) + + blockers: list[str] = [] + warnings = snapshot.get("warnings") or [] + if add_base_raw > 0: + blockers.append("defended pool needs base-side top-up logic; current plan only supports quote-side top-up for this rail") + if add_quote_raw > 0 and holder_state and not defended_quote_funding["covered"]: + blockers.append( + "operator wallet does not hold enough USDC to restore defended pool reserve parity; external funding is required" + ) + if public_base_shortfall_raw > 0 and holder_state and not public_base_funding["covered"]: + blockers.append( + "operator wallet does not hold enough cWUSDC to reseed the public pair to policy floor; external mint/bridge is required" + ) + if public_quote_shortfall_raw > 0 and holder_state and not public_quote_funding["covered"]: + blockers.append( + "operator wallet does not hold enough USDC to reseed the public pair to policy floor" + ) + if manager_funding["covered"] is False and holder_state and holder_usdc_raw < max_automated_raw: + blockers.append("operator wallet cannot fully fund even one max-sized automated defense cycle from current USDC balance") + if not integration: + blockers.append("missing DODO_PMM_INTEGRATION_MAINNET") + if not router: + blockers.append("missing CHAIN_1_UNISWAP_V2_ROUTER") + if any("defended quote query failed" in warning for warning in warnings): + blockers.append("defended pool quote preview reverted; set MIN_BASE_OUT_RAW manually before any quote-in trade") + + operator_commands = { + "rerunPreflight": "bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh", + "rerunPlan": "bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh", + } + + if manager and manager.lower() != ZERO_ADDRESS: + operator_commands["fundManagerUsdc"] = command_block( + [ + "source smom-dbis-138/scripts/load-env.sh >/dev/null", + f"export USDC={usdc}", + f"export MANAGER={manager}", + f"export AMOUNT_RAW={max_automated_raw}", + 'cast send "$USDC" \'transfer(address,uint256)(bool)\' "$MANAGER" "$AMOUNT_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$ETHEREUM_MAINNET_RPC"', + ] + ) + + if integration and add_quote_raw > 0: + operator_commands["tradeDefendedPoolQuoteIn"] = command_block( + [ + "source smom-dbis-138/scripts/load-env.sh >/dev/null", + f"export CWUSDC={cwusdc}", + f"export USDC={usdc}", + f"export INTEGRATION={integration}", + f"export POOL={defended_pool}", + f"export QUOTE_IN_RAW={add_quote_raw}", + "export MIN_BASE_OUT_RAW=REPLACE_AFTER_DRY_RUN", + 'cast send "$USDC" \'approve(address,uint256)(bool)\' "$INTEGRATION" "$QUOTE_IN_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$ETHEREUM_MAINNET_RPC"', + 'cast send "$INTEGRATION" \'swapExactIn(address,address,uint256,uint256)\' "$POOL" "$USDC" "$QUOTE_IN_RAW" "$MIN_BASE_OUT_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$ETHEREUM_MAINNET_RPC"', + ] + ) + + if router and public_base_shortfall_raw > 0 and public_quote_shortfall_raw > 0: + operator_commands["reseedPublicPair"] = command_block( + [ + "source smom-dbis-138/scripts/load-env.sh >/dev/null", + f"export ROUTER={router}", + f"export CWUSDC={cwusdc}", + f"export USDC={usdc}", + f"export BASE_AMOUNT_RAW={public_base_shortfall_raw}", + f"export QUOTE_AMOUNT_RAW={public_quote_shortfall_raw}", + 'export DEADLINE="$(( $(date +%s) + 3600 ))"', + 'export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"', + 'cast send "$CWUSDC" \'approve(address,uint256)(bool)\' "$ROUTER" "$BASE_AMOUNT_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$ETHEREUM_MAINNET_RPC"', + 'cast send "$USDC" \'approve(address,uint256)(bool)\' "$ROUTER" "$QUOTE_AMOUNT_RAW" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$ETHEREUM_MAINNET_RPC"', + 'cast send "$ROUTER" \'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)\' \\', + ' "$CWUSDC" "$USDC" "$BASE_AMOUNT_RAW" "$QUOTE_AMOUNT_RAW" "$BASE_AMOUNT_RAW" "$QUOTE_AMOUNT_RAW" "$SIGNER" "$DEADLINE" \\', + ' --private-key "$PRIVATE_KEY" --rpc-url "$ETHEREUM_MAINNET_RPC"', + ] + ) + + recommended_actions = [ + { + "step": "fund_manager_for_one_max_cycle", + "quoteAmountRaw": str(max_automated_raw), + "quoteAmountUnits": str(normalize_units(max_automated_raw)), + "status": "ready" if manager_funding["covered"] else "needs_usdc", + }, + { + "step": "sell_usdc_into_defended_pool_toward_simple_1_to_1_reserve_parity", + "baseAmountRaw": str(add_base_raw), + "quoteAmountRaw": str(add_quote_raw), + "quoteAmountUnits": str(normalize_units(add_quote_raw)), + "status": "ready" if add_quote_raw == 0 or defended_quote_funding["covered"] else "needs_usdc", + }, + { + "step": "reseed_public_pair_to_policy_floor", + "baseAmountRaw": str(public_base_shortfall_raw), + "baseAmountUnits": str(normalize_units(public_base_shortfall_raw)), + "quoteAmountRaw": str(public_quote_shortfall_raw), + "quoteAmountUnits": str(normalize_units(public_quote_shortfall_raw)), + "status": ( + "ready" + if public_base_shortfall_raw == 0 + or (public_base_funding["covered"] and public_quote_funding["covered"]) + else "needs_inventory" + ), + }, + ] + + return { + "generatedAt": datetime.now(timezone.utc).isoformat(), + "mode": "read_only_repeg_plan", + "snapshotPath": str(LATEST_SNAPSHOT), + "policyPath": str(POLICY_PATH), + "inferenceNotes": [ + "Defended-pool 1:1 sizing is inferred from equal 6-decimal matched-rail tokens and reserve-balance parity.", + "DODO PMM mid-price can still differ from reserve ratio; rerun preflight after each funding action.", + "Public-pair reseed target uses the current policy reserve floors, not a smaller cosmetic liquidity target.", + ], + "resolvedAddresses": { + "holder": holder or None, + "cwusdc": cwusdc, + "usdc": usdc, + "publicPair": public_pair, + "defendedPool": defended_pool, + "treasuryManager": manager or None, + "receiver": receiver or None, + "dodoIntegration": integration or None, + "uniswapV2Router": router or None, + }, + "defendedVenue": { + "midPrice": summary["defendedMidPrice"], + "deviationBps": summary["defendedDeviationBps"], + "baseReserveRaw": str(base_reserve_raw), + "baseReserveUnits": str(normalize_units(base_reserve_raw)), + "quoteReserveRaw": str(quote_reserve_raw), + "quoteReserveUnits": str(normalize_units(quote_reserve_raw)), + "simpleReserveParity": { + "targetReservePerSideRaw": str(target_reserve_raw), + "targetReservePerSideUnits": str(normalize_units(target_reserve_raw)), + "addBaseRaw": str(add_base_raw), + "addBaseUnits": str(normalize_units(add_base_raw)), + "addQuoteRaw": str(add_quote_raw), + "addQuoteUnits": str(normalize_units(add_quote_raw)), + }, + }, + "publicLane": { + "pairAddress": public_pair, + "priceQuotePerBase": public_health["priceQuotePerBase"], + "deviationBps": summary["publicPairDeviationBps"], + "baseReserveUnits": str(public_base_units), + "quoteReserveUnits": str(public_quote_units), + "policyFloorBaseUnits": str(min_base_units), + "policyFloorQuoteUnits": str(min_quote_units), + "policyFloorBaseShortfallRaw": str(public_base_shortfall_raw), + "policyFloorBaseShortfallUnits": str(normalize_units(public_base_shortfall_raw)), + "policyFloorQuoteShortfallRaw": str(public_quote_shortfall_raw), + "policyFloorQuoteShortfallUnits": str(normalize_units(public_quote_shortfall_raw)), + }, + "automation": { + "managerAvailableQuoteRaw": str(manager_available_raw), + "managerAvailableQuoteUnits": str(normalize_units(manager_available_raw)), + "maxAutomatedFlashQuoteAmountRaw": str(max_automated_raw), + "maxAutomatedFlashQuoteAmountUnits": str(normalize_units(max_automated_raw)), + "managerFundingForOneMaxCycle": manager_funding, + }, + "holderState": holder_state, + "holderFundingChecks": { + "defendedQuoteTopUp": defended_quote_funding, + "publicPairBaseTopUp": public_base_funding, + "publicPairQuoteTopUp": public_quote_funding, + }, + "recommendedActions": recommended_actions, + "operatorCommands": operator_commands, + "warnings": warnings, + "blockers": holder_blockers + blockers, + "status": { + "canFullyReachSimple1To1WithCurrentHolder": len(holder_blockers + blockers) == 0, + "needsExternalFunding": ( + not defended_quote_funding["covered"] + or not public_base_funding["covered"] + or not public_quote_funding["covered"] + ), + "canFundManagerFromCurrentHolder": holder_usdc_raw >= max_automated_raw if holder_state else None, + }, + } + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--snapshot", default=str(LATEST_SNAPSHOT), help="Path to a preflight snapshot JSON.") + parser.add_argument("--holder", default="", help="Optional holder address to inventory-check instead of deriving from PRIVATE_KEY.") + parser.add_argument("--out", help="Write the plan JSON to this file.") + args = parser.parse_args() + + snapshot_path = Path(args.snapshot) + if not snapshot_path.exists(): + raise RuntimeError(f"missing snapshot file: {snapshot_path}") + + snapshot = load_json(snapshot_path) + policy = load_json(POLICY_PATH) + env_values = merged_env_values() + plan = build_plan(snapshot, policy, env_values, args.holder.strip()) + + output = json.dumps(plan, indent=2) + if args.out: + out_path = Path(args.out) + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(output + "\n") + print(output) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh b/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh new file mode 100644 index 00000000..3aafd0f9 --- /dev/null +++ b/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" + +# shellcheck source=/home/intlc/projects/proxmox/scripts/lib/load-project-env.sh +source "${PROJECT_ROOT}/scripts/lib/load-project-env.sh" + +PLAN_PY="${PROJECT_ROOT}/scripts/verify/plan-mainnet-cwusdc-usdc-repeg.py" +STAMP="$(date -u +%Y%m%dT%H%M%SZ)" +OUT_DIR="${PROJECT_ROOT}/reports/status" +OUT_FILE="${OUT_DIR}/mainnet-cwusdc-usdc-repeg-plan-${STAMP}.json" +LATEST_FILE="${OUT_DIR}/mainnet-cwusdc-usdc-repeg-plan-latest.json" + +mkdir -p "${OUT_DIR}" + +python3 "${PLAN_PY}" --out "${OUT_FILE}" > "${LATEST_FILE}" + +echo "Wrote repeg plan:" +echo " ${OUT_FILE}" +echo "Updated latest pointer:" +echo " ${LATEST_FILE}" +echo +python3 - <<'PY' "${LATEST_FILE}" +import json, sys +from pathlib import Path + +data = json.loads(Path(sys.argv[1]).read_text()) +defended = data["defendedVenue"]["simpleReserveParity"] +public_lane = data["publicLane"] +automation = data["automation"]["managerFundingForOneMaxCycle"] +holder = data.get("holderState") or {} + +print("Summary:") +print(f" defendedMidPrice={data['defendedVenue']['midPrice']}") +print(f" defendedAddQuoteUnits={defended['addQuoteUnits']}") +print(f" publicPolicyFloorBaseShortfallUnits={public_lane['policyFloorBaseShortfallUnits']}") +print(f" publicPolicyFloorQuoteShortfallUnits={public_lane['policyFloorQuoteShortfallUnits']}") +print(f" managerFundingShortfallUnits={automation['shortfallUnits']}") +if holder: + print(f" holder={holder['address']}") + print(f" holderCwusdcUnits={holder['cwusdcBalanceUnits']}") + print(f" holderUsdcUnits={holder['usdcBalanceUnits']}") +blockers = data.get("blockers") or [] +if blockers: + print("Blockers:") + for blocker in blockers: + print(f" - {blocker}") +PY diff --git a/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.py b/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.py new file mode 100755 index 00000000..7ba839cd --- /dev/null +++ b/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.py @@ -0,0 +1,277 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import json +import os +from datetime import datetime, timezone +from decimal import Decimal, getcontext +from pathlib import Path +import re +import subprocess +import sys + +getcontext().prec = 42 + +ROOT = Path(__file__).resolve().parents[2] +CHECKER_PATH = ROOT / "scripts" / "verify" / "check-mainnet-cwusdc-usdc-support-health.py" +POLICY_PATH = ROOT / "config" / "extraction" / "mainnet-cwusdc-usdc-support-policy.json" +ROOT_ENV_PATH = ROOT / ".env" +SMOM_ENV_PATH = ROOT / "smom-dbis-138" / ".env" +ZERO_ADDRESS = "0x0000000000000000000000000000000000000000" +UINT_RE = re.compile(r"\b\d+\b") +ADDRESS_RE = re.compile(r"0x[a-fA-F0-9]{40}") +BROADCAST_RECEIVER = ROOT / "smom-dbis-138" / "broadcast" / "DeployAaveQuotePushFlashReceiver.s.sol" / "1" / "run-latest.json" +BROADCAST_MANAGER = ROOT / "smom-dbis-138" / "broadcast" / "DeployQuotePushTreasuryManager.s.sol" / "1" / "run-latest.json" + + +def load_json(path: Path) -> dict: + return json.loads(path.read_text()) + + +def load_env_file(path: Path) -> dict[str, str]: + values: dict[str, str] = {} + if not path.exists(): + return values + for raw_line in path.read_text().splitlines(): + line = raw_line.strip() + if not line or line.startswith("#") or "=" not in line: + continue + key, value = line.split("=", 1) + values[key.strip()] = value.strip().strip('"').strip("'") + return values + + +def merged_env_values() -> dict[str, str]: + values: dict[str, str] = {} + values.update(load_env_file(ROOT_ENV_PATH)) + values.update(load_env_file(SMOM_ENV_PATH)) + return values + + +def resolve_env_value(key: str, env_values: dict[str, str], seen: set[str] | None = None) -> str: + if seen is None: + seen = set() + if key in seen: + return env_values.get(key, "") + seen.add(key) + value = os.environ.get(key) or env_values.get(key, "") + if value.startswith("${") and value.endswith("}"): + inner = value[2:-1] + target = inner.split(":-", 1)[0] + fallback = inner.split(":-", 1)[1] if ":-" in inner else "" + resolved = resolve_env_value(target, env_values, seen) + return resolved or fallback + return value.rstrip("\r\n") + + +def cast_call(rpc_url: str, target: str, signature: str, *args: str) -> str: + cmd = ["cast", "call", target, signature, *args, "--rpc-url", rpc_url] + return subprocess.check_output(cmd, text=True).strip() + + +def parse_uint(value: str) -> int: + matches = UINT_RE.findall(value) + if not matches: + raise ValueError(f"could not parse integer from {value!r}") + return int(matches[0]) + + +def parse_uints(value: str, count: int) -> list[int]: + matches = [int(match) for match in UINT_RE.findall(value)] + if len(matches) < count: + raise ValueError(f"expected at least {count} integers from {value!r}") + return matches[:count] + + +def parse_address(value: str) -> str: + match = ADDRESS_RE.search(value) + if not match: + raise ValueError(f"could not parse address from {value!r}") + return match.group(0) + + +def normalize_units(raw: int, decimals: int) -> Decimal: + return Decimal(raw) / (Decimal(10) ** decimals) + + +def run_health_checker() -> dict: + output = subprocess.check_output(["python3", str(CHECKER_PATH)], text=True) + return json.loads(output) + + +def read_latest_create_address(path: Path, expected_contract_name: str) -> str: + if not path.exists(): + return "" + data = load_json(path) + for tx in reversed(data.get("transactions", [])): + if tx.get("transactionType") == "CREATE" and tx.get("contractName") == expected_contract_name: + return str(tx.get("contractAddress") or "").strip() + return "" + + +def query_token_meta(rpc_url: str, token: str) -> dict: + decimals = parse_uint(cast_call(rpc_url, token, "decimals()(uint8)")) + symbol = cast_call(rpc_url, token, "symbol()(string)") + return {"address": token, "symbol": symbol, "decimals": decimals} + + +def query_manager_state(rpc_url: str, manager: str) -> dict: + quote_token = parse_address(cast_call(rpc_url, manager, "quoteToken()(address)")) + receiver = parse_address(cast_call(rpc_url, manager, "receiver()(address)")) + state = { + "manager": manager, + "quoteToken": query_token_meta(rpc_url, quote_token), + "receiver": receiver, + "receiverOwner": parse_address(cast_call(rpc_url, manager, "receiverOwner()(address)")), + "isReceiverOwnedByManager": "true" in cast_call(rpc_url, manager, "isReceiverOwnedByManager()(bool)").lower(), + "quoteBalanceRaw": str(parse_uint(cast_call(rpc_url, manager, "quoteBalance()(uint256)"))), + "availableQuoteRaw": str(parse_uint(cast_call(rpc_url, manager, "availableQuote()(uint256)"))), + "receiverSweepableQuoteRaw": str(parse_uint(cast_call(rpc_url, manager, "receiverSweepableQuote()(uint256)"))), + "receiverReserveRetainedRaw": str(parse_uint(cast_call(rpc_url, manager, "receiverReserveRetained()(uint256)"))), + "managerReserveRetainedRaw": str(parse_uint(cast_call(rpc_url, manager, "managerReserveRetained()(uint256)"))), + "gasRecipient": parse_address(cast_call(rpc_url, manager, "gasRecipient()(address)")), + "recycleRecipient": parse_address(cast_call(rpc_url, manager, "recycleRecipient()(address)")), + } + decimals = state["quoteToken"]["decimals"] + state["quoteBalanceUnits"] = str(normalize_units(int(state["quoteBalanceRaw"]), decimals)) + state["availableQuoteUnits"] = str(normalize_units(int(state["availableQuoteRaw"]), decimals)) + state["receiverSweepableQuoteUnits"] = str(normalize_units(int(state["receiverSweepableQuoteRaw"]), decimals)) + state["receiverReserveRetainedUnits"] = str(normalize_units(int(state["receiverReserveRetainedRaw"]), decimals)) + state["managerReserveRetainedUnits"] = str(normalize_units(int(state["managerReserveRetainedRaw"]), decimals)) + return state + + +def query_receiver_state(rpc_url: str, receiver: str, quote_token: str) -> dict: + return { + "receiver": receiver, + "owner": parse_address(cast_call(rpc_url, receiver, "owner()(address)")), + "quoteBalanceRaw": str(parse_uint(cast_call(rpc_url, quote_token, "balanceOf(address)(uint256)", receiver))), + } + + +def query_defended_quotes(rpc_url: str, defended_pool: str, trader: str, policy: dict) -> list[dict]: + rows: list[dict] = [] + for item in policy["managedCycle"]["quoteAmountByDeviationBps"]: + amount_raw = int(item["flashQuoteAmountRaw"]) + base_out_raw, mt_fee_raw = parse_uints( + cast_call(rpc_url, defended_pool, "querySellQuote(address,uint256)(uint256,uint256)", trader, str(amount_raw)), + 2, + ) + rows.append( + { + "minDeviationBps": int(item["minDeviationBps"]), + "flashQuoteAmountRaw": amount_raw, + "receiveBaseAmountRaw": str(base_out_raw), + "mtFeeRaw": str(mt_fee_raw), + } + ) + return rows + + +def build_summary(snapshot: dict) -> dict: + public_health = snapshot["health"]["publicPairHealth"] + defended_health = snapshot["health"]["defendedVenueHealth"] + treasury = snapshot.get("treasuryManager") or {} + return { + "publicPairDeviationBps": public_health.get("deviationBps"), + "publicPairBaseReserveUnits": public_health.get("baseReserveUnits"), + "publicPairQuoteReserveUnits": public_health.get("quoteReserveUnits"), + "defendedMidPrice": defended_health.get("midPrice"), + "defendedDeviationBps": defended_health.get("deviationBps"), + "defendedBaseReserveRaw": defended_health.get("baseReserveRaw"), + "defendedQuoteReserveRaw": defended_health.get("quoteReserveRaw"), + "managerAvailableQuoteUnits": treasury.get("availableQuoteUnits"), + "receiverSweepableQuoteUnits": treasury.get("receiverSweepableQuoteUnits"), + "decisionAction": snapshot["health"]["decision"]["action"], + "decisionSeverity": snapshot["health"]["decision"]["severity"], + "flashQuoteAmountRaw": snapshot["health"]["decision"]["flashQuoteAmountRaw"], + } + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--out", help="Write the JSON snapshot to this file.") + args = parser.parse_args() + + env_values = merged_env_values() + policy = load_json(POLICY_PATH) + health = run_health_checker() + rpc_url = "" + for key in policy["network"].get("rpcEnvKeys", []): + rpc_url = resolve_env_value(key, env_values) + if rpc_url: + break + if not rpc_url: + raise RuntimeError("missing mainnet RPC URL") + + manager_addr = resolve_env_value("QUOTE_PUSH_TREASURY_MANAGER_MAINNET", env_values) + receiver_addr = resolve_env_value("AAVE_QUOTE_PUSH_RECEIVER_MAINNET", env_values) + if not receiver_addr: + receiver_addr = read_latest_create_address(BROADCAST_RECEIVER, "AaveQuotePushFlashReceiver") + if not manager_addr: + manager_addr = read_latest_create_address(BROADCAST_MANAGER, "QuotePushTreasuryManager") + defended_pool = health["defendedVenue"]["poolAddress"] + + treasury_manager = None + receiver_state = None + defended_quotes = [] + warnings: list[str] = [] + + if manager_addr and manager_addr.lower() != ZERO_ADDRESS: + try: + treasury_manager = query_manager_state(rpc_url, manager_addr) + receiver_addr = treasury_manager["receiver"] + except Exception as exc: + warnings.append(f"treasury manager query failed: {exc}") + else: + warnings.append("treasury manager query skipped: QUOTE_PUSH_TREASURY_MANAGER_MAINNET not configured") + + if receiver_addr and receiver_addr.lower() != ZERO_ADDRESS: + quote_token = treasury_manager["quoteToken"]["address"] if treasury_manager else health["publicPair"]["quoteAddress"] + try: + receiver_state = query_receiver_state(rpc_url, receiver_addr, quote_token) + quote_decimals = treasury_manager["quoteToken"]["decimals"] if treasury_manager else 6 + receiver_state["quoteBalanceUnits"] = str(normalize_units(int(receiver_state["quoteBalanceRaw"]), quote_decimals)) + except Exception as exc: + warnings.append(f"receiver query failed: {exc}") + else: + warnings.append("receiver query skipped: AAVE_QUOTE_PUSH_RECEIVER_MAINNET not configured") + + trader = receiver_addr if receiver_addr and receiver_addr.lower() != ZERO_ADDRESS else "" + if trader: + try: + defended_quotes = query_defended_quotes(rpc_url, defended_pool, trader, policy) + except Exception as exc: + warnings.append(f"defended quote query failed: {exc}") + else: + warnings.append("defended quote query skipped: no receiver configured") + + snapshot = { + "generatedAt": datetime.now(timezone.utc).isoformat(), + "mode": "read_only_preflight", + "policyPath": str(POLICY_PATH), + "checkerPath": str(CHECKER_PATH), + "resolvedAddresses": { + "receiver": receiver_addr or None, + "treasuryManager": manager_addr or None, + }, + "health": health, + "treasuryManager": treasury_manager, + "receiver": receiver_state, + "defendedLaneQuotes": defended_quotes, + "warnings": warnings, + } + snapshot["summary"] = build_summary(snapshot) + + output = json.dumps(snapshot, indent=2) + if args.out: + out_path = Path(args.out) + out_path.parent.mkdir(parents=True, exist_ok=True) + out_path.write_text(output + "\n") + print(output) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh b/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh new file mode 100755 index 00000000..59842b26 --- /dev/null +++ b/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" + +# shellcheck source=/home/intlc/projects/proxmox/scripts/lib/load-project-env.sh +source "${PROJECT_ROOT}/scripts/lib/load-project-env.sh" + +SNAPSHOT_PY="${PROJECT_ROOT}/scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.py" +STAMP="$(date -u +%Y%m%dT%H%M%SZ)" +OUT_DIR="${PROJECT_ROOT}/reports/status" +OUT_FILE="${OUT_DIR}/mainnet-cwusdc-usdc-preflight-${STAMP}.json" +LATEST_FILE="${OUT_DIR}/mainnet-cwusdc-usdc-preflight-latest.json" + +mkdir -p "${OUT_DIR}" + +python3 "${SNAPSHOT_PY}" --out "${OUT_FILE}" > "${LATEST_FILE}" + +echo "Wrote snapshot:" +echo " ${OUT_FILE}" +echo "Updated latest pointer:" +echo " ${LATEST_FILE}" +echo +python3 - <<'PY' "${LATEST_FILE}" +import json, sys +from pathlib import Path + +data = json.loads(Path(sys.argv[1]).read_text()) +s = data["summary"] +print("Summary:") +print(f" publicPairDeviationBps={s.get('publicPairDeviationBps')}") +print(f" publicPairBaseReserveUnits={s.get('publicPairBaseReserveUnits')}") +print(f" publicPairQuoteReserveUnits={s.get('publicPairQuoteReserveUnits')}") +print(f" defendedMidPrice={s.get('defendedMidPrice')}") +print(f" managerAvailableQuoteUnits={s.get('managerAvailableQuoteUnits')}") +print(f" receiverSweepableQuoteUnits={s.get('receiverSweepableQuoteUnits')}") +print(f" decision={s.get('decisionSeverity')}/{s.get('decisionAction')}") +print(f" flashQuoteAmountRaw={s.get('flashQuoteAmountRaw')}") +warnings = data.get("warnings") or [] +if warnings: + print("Warnings:") + for warning in warnings: + print(f" - {warning}") +PY diff --git a/smom-dbis-138 b/smom-dbis-138 index 843cdbf7..768168de 160000 --- a/smom-dbis-138 +++ b/smom-dbis-138 @@ -1 +1 @@ -Subproject commit 843cdbf71cc0551231e511d98cdd67a2932ef9d0 +Subproject commit 768168de5e4f96d6906776e4776062a863b3b3a9 diff --git a/smom-dbis-138-proxmox/lib/proxmox-api.sh b/smom-dbis-138-proxmox/lib/proxmox-api.sh index 02c36a44..595c9386 100755 --- a/smom-dbis-138-proxmox/lib/proxmox-api.sh +++ b/smom-dbis-138-proxmox/lib/proxmox-api.sh @@ -8,6 +8,19 @@ source "$(dirname "${BASH_SOURCE[0]}")/common.sh" # Proxmox API base URL PROXMOX_API_BASE="" +build_proxmox_auth_header() { + local user="${1:-}" + local token_name="${2:-}" + local token_secret="${3:-}" + + if [[ "$token_name" == *"!"* ]]; then + printf 'Authorization: PVEAPIToken=%s=%s' "$token_name" "$token_secret" + return 0 + fi + + printf 'Authorization: PVEAPIToken=%s!%s=%s' "$user" "$token_name" "$token_secret" +} + # Load .env file from ~/.env (standardized location) load_env_file() { local env_file="${HOME}/.env" @@ -54,7 +67,8 @@ proxmox_api_call() { endpoint="${endpoint//\{node\}/$node}" local url="${PROXMOX_API_BASE}${endpoint}" - local auth_header="Authorization: PVEAPIToken=${PROXMOX_USER}=${PROXMOX_TOKEN_NAME}=${PROXMOX_TOKEN_SECRET}" + local auth_header + auth_header="$(build_proxmox_auth_header "$PROXMOX_USER" "$PROXMOX_TOKEN_NAME" "$PROXMOX_TOKEN_SECRET")" local curl_opts=( -s diff --git a/token-lists/ALL_COMPLETE_SUMMARY.md b/token-lists/ALL_COMPLETE_SUMMARY.md index ffadf664..5eca892d 100644 --- a/token-lists/ALL_COMPLETE_SUMMARY.md +++ b/token-lists/ALL_COMPLETE_SUMMARY.md @@ -24,7 +24,7 @@ All token lists have been created, populated, and validated successfully! --- -### ✅ ChainID 138 (DBIS Chain) - COMPLETE +### ✅ ChainID 138 (DeFi Oracle Meta Mainnet) - COMPLETE **File**: `lists/dbis-138.tokenlist.json` **Tokens**: 6 diff --git a/token-lists/COMPLETE_SUBMISSION_SUMMARY.md b/token-lists/COMPLETE_SUBMISSION_SUMMARY.md index 79f6b4b0..1fd907cc 100644 --- a/token-lists/COMPLETE_SUBMISSION_SUMMARY.md +++ b/token-lists/COMPLETE_SUBMISSION_SUMMARY.md @@ -9,7 +9,7 @@ ### 1. Token List Files Created ✅ -#### ChainID 138 (DBIS Chain) +#### ChainID 138 (DeFi Oracle Meta Mainnet) - **File**: `token-lists/lists/dbis-138.tokenlist.json` - **Status**: ✅ Complete - **Tokens**: 6 @@ -176,7 +176,7 @@ token-lists/ ``` ✅ Token list is valid! 📋 Token List Info: - Name: DBIS Chain 138 Token List + Name: DeFi Oracle Meta Mainnet Token List Version: 1.2.0 Tokens: 6 ``` diff --git a/token-lists/COMPLETE_SUMMARY.md b/token-lists/COMPLETE_SUMMARY.md index 02355285..cc7910cb 100644 --- a/token-lists/COMPLETE_SUMMARY.md +++ b/token-lists/COMPLETE_SUMMARY.md @@ -21,7 +21,7 @@ - **Tokens**: 1 (USDT) - **Status**: ✅ Validated -#### ChainID 138 (DBIS Chain) +#### ChainID 138 (DeFi Oracle Meta Mainnet) - **File**: `token-lists/lists/dbis-138.tokenlist.json` - **Tokens**: 6 (WETH, WETH10, LINK, cUSDT, cUSDC, ETH/USD Oracle) - **Version**: 1.2.0 diff --git a/token-lists/FINAL_STATUS.md b/token-lists/FINAL_STATUS.md index 2c043a08..33cdf7ef 100644 --- a/token-lists/FINAL_STATUS.md +++ b/token-lists/FINAL_STATUS.md @@ -9,7 +9,7 @@ ### 1. Token Lists Created -#### ✅ ChainID 138 (DBIS Chain) - COMPLETE +#### ✅ ChainID 138 (DeFi Oracle Meta Mainnet) - COMPLETE - **File**: `lists/dbis-138.tokenlist.json` - **Tokens**: 6 (WETH, WETH10, LINK, cUSDT, cUSDC, ETH/USD Oracle) - **Version**: 1.2.0 diff --git a/token-lists/IMPLEMENTATION_STATUS.md b/token-lists/IMPLEMENTATION_STATUS.md index 07b119b0..9cec1cbc 100644 --- a/token-lists/IMPLEMENTATION_STATUS.md +++ b/token-lists/IMPLEMENTATION_STATUS.md @@ -7,7 +7,7 @@ ## Implementation Summary -The DBIS Chain 138 Token List infrastructure has been successfully upgraded to production standards according to the detailed technical plan. +The DeFi Oracle Meta Mainnet Token List infrastructure has been successfully upgraded to production standards according to the detailed technical plan. --- @@ -19,7 +19,7 @@ The DBIS Chain 138 Token List infrastructure has been successfully upgraded to p - ✅ Migrated token list to `token-lists/lists/dbis-138.tokenlist.json` - ✅ Enhanced token list with: - `keywords` field - - Updated name to "DBIS Chain 138 Token List" + - Updated name to "DeFi Oracle Meta Mainnet Token List" - All addresses EIP-55 checksummed - Tag system for categorization - ✅ Logo management structure created (logos/ directory) diff --git a/token-lists/README.md b/token-lists/README.md index f8ffc892..a0769ea7 100644 --- a/token-lists/README.md +++ b/token-lists/README.md @@ -1,6 +1,6 @@ -# DBIS Chain 138 Token Lists +# DeFi Oracle Meta Mainnet Token Lists -Production-ready token lists for ChainID 138 (DBIS Chain), following the [Uniswap Token Lists Specification](https://github.com/Uniswap/token-lists). +Production-ready token lists for ChainID 138 (DeFi Oracle Meta Mainnet), following the [Uniswap Token Lists Specification](https://github.com/Uniswap/token-lists). --- @@ -302,7 +302,7 @@ The chain configuration includes: ## Token Lists Available -### ChainID 138 (DBIS Chain) +### ChainID 138 (DeFi Oracle Meta Mainnet) - **File**: `lists/dbis-138.tokenlist.json` - **Tokens**: 6 (WETH, WETH10, LINK, cUSDT, cUSDC, ETH/USD Oracle) - **Version**: 1.3.0 diff --git a/token-lists/README_COMPLETE.md b/token-lists/README_COMPLETE.md index d5bcfd57..956f0263 100644 --- a/token-lists/README_COMPLETE.md +++ b/token-lists/README_COMPLETE.md @@ -12,7 +12,7 @@ - **Tokens**: 1 (USDT) - **Status**: Validated ✅ -### ✅ ChainID 138 (DBIS Chain) +### ✅ ChainID 138 (DeFi Oracle Meta Mainnet) - **File**: `lists/dbis-138.tokenlist.json` - **Tokens**: 6 (WETH, WETH10, LINK, cUSDT, cUSDC, ETH/USD Oracle) - **Status**: Validated ✅ diff --git a/token-lists/SUBMISSION_TEMPLATES.md b/token-lists/SUBMISSION_TEMPLATES.md index d6013179..6ca12332 100644 --- a/token-lists/SUBMISSION_TEMPLATES.md +++ b/token-lists/SUBMISSION_TEMPLATES.md @@ -9,13 +9,13 @@ ### PR Template for ChainID 138 -**Title**: `Add DBIS Chain 138 Token List` +**Title**: `Add DeFi Oracle Meta Mainnet Token List` **Description**: ```markdown -## Token List: DBIS Chain 138 +## Token List: DeFi Oracle Meta Mainnet -- **Network**: ChainID 138 (DBIS Chain) +- **Network**: ChainID 138 (DeFi Oracle Meta Mainnet) - **Tokens**: 6 - **Version**: 1.2.0 - **File**: `dbis-138.tokenlist.json` diff --git a/token-lists/TOKEN_LIST_UPDATE_COMPLETE.md b/token-lists/TOKEN_LIST_UPDATE_COMPLETE.md index fa1d5ea0..af444f8d 100644 --- a/token-lists/TOKEN_LIST_UPDATE_COMPLETE.md +++ b/token-lists/TOKEN_LIST_UPDATE_COMPLETE.md @@ -46,7 +46,7 @@ ``` ✅ Token list is valid! 📋 Token List Info: - Name: DBIS Chain 138 Token List + Name: DeFi Oracle Meta Mainnet Token List Version: 1.2.0 Timestamp: 2026-01-26T00:00:00.000Z Tokens: 6 @@ -111,7 +111,7 @@ - **Tokens**: 1 - USDT (Tether USD) -### ChainID 138 (DBIS Chain) +### ChainID 138 (DeFi Oracle Meta Mainnet) - **Tokens**: 6 - ETH/USD Price Feed (Oracle) - WETH (Wrapped Ether) diff --git a/token-lists/chainlists/SUBMISSION_GUIDE.md b/token-lists/chainlists/SUBMISSION_GUIDE.md index 70140766..df747dc5 100644 --- a/token-lists/chainlists/SUBMISSION_GUIDE.md +++ b/token-lists/chainlists/SUBMISSION_GUIDE.md @@ -1,6 +1,6 @@ # Chainlists Submission Guide -This directory contains files needed to submit DBIS Chain 138 to Chainlists.org. +This directory contains files needed to submit DeFi Oracle Meta Mainnet (Chain 138) to Chainlists.org. --- @@ -48,7 +48,7 @@ The token list is available at: ```bash git checkout -b add-dbis-chain-138 git add _data/chains/eip155-138/chain.json - git commit -m "Add DBIS Chain (ChainID 138)" + git commit -m "Add DeFi Oracle Meta Mainnet (ChainID 138)" git push origin add-dbis-chain-138 ``` - Then create a pull request on GitHub @@ -68,7 +68,7 @@ If Chainlists provides a submission form on their website, use it with the infor ## Required Information - **Chain ID**: 138 (0x8a) -- **Network Name**: DBIS Chain / SMOM-DBIS-138 +- **Network Name**: DeFi Oracle Meta Mainnet / SMOM-DBIS-138 - **RPC URLs**: - Primary: `https://rpc-core.d-bis.org` - Secondary: `https://rpc-http-pub.d-bis.org` diff --git a/token-lists/chainlists/SUBMISSION_SCRIPT.sh b/token-lists/chainlists/SUBMISSION_SCRIPT.sh index 7fccf6a8..8e63593c 100755 --- a/token-lists/chainlists/SUBMISSION_SCRIPT.sh +++ b/token-lists/chainlists/SUBMISSION_SCRIPT.sh @@ -79,7 +79,7 @@ log_info "1. Fork Chainlist repository: https://github.com/ethereum-lists/chains log_info "2. Clone your fork: git clone https://github.com/YOUR_USERNAME/chains.git" log_info "3. Create branch: git checkout -b add-dbis-chain-138" log_info "4. Copy file: cp $CHAIN_FILE chains/_data/chains/eip155-138.json" -log_info "5. Commit: git add _data/chains/eip155-138.json && git commit -m 'Add DBIS Chain (ChainID 138)'" +log_info "5. Commit: git add _data/chains/eip155-138.json && git commit -m 'Add DeFi Oracle Meta Mainnet (ChainID 138)'" log_info "6. Push: git push origin add-dbis-chain-138" log_info "7. Create PR: Visit GitHub and create pull request" log_info "" diff --git a/token-lists/chainlists/chain-138.json b/token-lists/chainlists/chain-138.json index 5d23e4a8..8a0c7daa 100644 --- a/token-lists/chainlists/chain-138.json +++ b/token-lists/chainlists/chain-138.json @@ -1,5 +1,5 @@ { - "name": "DBIS Chain", + "name": "DeFi Oracle Meta Mainnet", "chain": "DBIS", "rpc": [ "https://rpc-http-pub.d-bis.org", diff --git a/token-lists/docs/CHANGELOG.md b/token-lists/docs/CHANGELOG.md index 59b3e903..c688b9ec 100644 --- a/token-lists/docs/CHANGELOG.md +++ b/token-lists/docs/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -All notable changes to the DBIS Chain 138 Token List will be documented in this file. +All notable changes to the DeFi Oracle Meta Mainnet Token List will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). diff --git a/token-lists/docs/INTEGRATION_GUIDE.md b/token-lists/docs/INTEGRATION_GUIDE.md index 6d00b36d..e445273b 100644 --- a/token-lists/docs/INTEGRATION_GUIDE.md +++ b/token-lists/docs/INTEGRATION_GUIDE.md @@ -1,14 +1,14 @@ # Token List Integration Guide -**Network**: ChainID 138 (DBIS Chain) -**Token List**: DBIS Chain 138 Token List +**Network**: ChainID 138 (DeFi Oracle Meta Mainnet) +**Token List**: DeFi Oracle Meta Mainnet Token List **Last Updated**: 2025-12-22 --- ## Overview -This guide explains how to integrate the DBIS Chain 138 Token List into various applications, wallets, and services. +This guide explains how to integrate the DeFi Oracle Meta Mainnet Token List into various applications, wallets, and services. --- diff --git a/token-lists/docs/TOKEN_LIST_POLICY.md b/token-lists/docs/TOKEN_LIST_POLICY.md index d5f56f46..88218987 100644 --- a/token-lists/docs/TOKEN_LIST_POLICY.md +++ b/token-lists/docs/TOKEN_LIST_POLICY.md @@ -2,13 +2,13 @@ **Version**: 1.0 **Last Updated**: 2025-12-22 -**Network**: ChainID 138 (DBIS Chain) +**Network**: ChainID 138 (DeFi Oracle Meta Mainnet) --- ## Overview -This document defines the inclusion and delisting policy for the DBIS Chain 138 Token List. All tokens must meet these requirements to be included in the list. +This document defines the inclusion and delisting policy for the DeFi Oracle Meta Mainnet Token List. All tokens must meet these requirements to be included in the list. --- diff --git a/token-lists/docs/UNISWAP_COMPARISON.md b/token-lists/docs/UNISWAP_COMPARISON.md index 8979c25f..cd12d2ce 100644 --- a/token-lists/docs/UNISWAP_COMPARISON.md +++ b/token-lists/docs/UNISWAP_COMPARISON.md @@ -7,7 +7,7 @@ ## Overview -This document compares our DBIS Chain 138 Token List implementation with the official Uniswap Token Lists specification and package. +This document compares our DeFi Oracle Meta Mainnet Token List implementation with the official Uniswap Token Lists specification and package. --- diff --git a/token-lists/lists/dbis-138.tokenlist.json b/token-lists/lists/dbis-138.tokenlist.json index 7a4cc619..ce394c17 100644 --- a/token-lists/lists/dbis-138.tokenlist.json +++ b/token-lists/lists/dbis-138.tokenlist.json @@ -1 +1 @@ -{"name":"DBIS Chain 138 Token List","version":{"major":1,"minor":6,"patch":1},"timestamp":"2026-02-28T00:00:00.000Z","keywords":["dbis","chain138","defi oracle meta"],"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tokens":[{"chainId":138,"address":"0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6","name":"ETH/USD Price Feed","symbol":"ETH-USD","decimals":8,"logoURI":"https://ipfs.io/ipfs/QmPZuycjyJEe2otREuQ5HirvPJ8X6Yc6MBtwz1VhdD79pY","tags":["oracle","pricefeed"]},{"chainId":138,"address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","name":"Wrapped Ether","symbol":"WETH","decimals":18,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","wrapped"],"extensions":{"aliasSymbols":["WETH9"],"aliasNote":"Expose WETH9 as a compatibility alias on surfaces that distinguish WETH9 branding; canonical symbol remains WETH."}},{"chainId":138,"address":"0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F","name":"Wrapped Ether v10","symbol":"WETH10","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4","tags":["defi","wrapped"]},{"chainId":138,"address":"0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03","name":"Chainlink Token","symbol":"LINK","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A","tags":["defi","oracle","ccip"]},{"chainId":138,"address":"0x93E66202A11B1772E55407B32B44e5Cd8eda7f22","name":"Compliant Tether USD","symbol":"cUSDT","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmRfhPs9DcyFPpGjKwF6CCoVDWUHSxkQR34n9NK7JSbPCP","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xf22258f57794CC8E06237084b353Ab30fFfa640b","name":"Compliant USD Coin","symbol":"cUSDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmNPq4D5JXzurmi9jAhogVMzhAQRk1PZ1r9H3qQUV9gjDm","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x8085961F9cF02b4d800A3c6d386D31da4B34266a","name":"Euro Coin (Compliant)","symbol":"cEURC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xdf4b71c61E5912712C1Bdd451416B9aC26949d72","name":"Tether EUR (Compliant)","symbol":"cEURT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x003960f16D9d34F2e98d62723B6721Fb92074aD2","name":"Pound Sterling (Compliant)","symbol":"cGBPC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x350f54e4D23795f86A9c03988c7135357CCaD97c","name":"Tether GBP (Compliant)","symbol":"cGBPT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xD51482e567c03899eecE3CAe8a058161FD56069D","name":"Australian Dollar (Compliant)","symbol":"cAUDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xEe269e1226a334182aace90056EE4ee5Cc8A6770","name":"Japanese Yen (Compliant)","symbol":"cJPYC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x873990849DDa5117d7C644f0aF24370797C03885","name":"Swiss Franc (Compliant)","symbol":"cCHFC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x54dBd40cF05e15906A2C21f600937e96787f5679","name":"Canadian Dollar (Compliant)","symbol":"cCADC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x290E52a8819A4fbD0714E517225429aA2B70EC6b","name":"Gold (Compliant)","symbol":"cXAUC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"],"extensions":{"unitOfAccount":"troy_ounce","unitDescription":"1 full token (10^decimals base units) = 1 troy oz fine gold"}},{"chainId":138,"address":"0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E","name":"Tether XAU (Compliant)","symbol":"cXAUT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"],"extensions":{"unitOfAccount":"troy_ounce","unitDescription":"1 full token (10^decimals base units) = 1 troy oz fine gold"}}],"tags":{"defi":{"name":"DeFi","description":"Decentralized Finance tokens"},"wrapped":{"name":"Wrapped","description":"Wrapped tokens representing native assets"},"oracle":{"name":"Oracle","description":"Oracle price feed tokens"},"pricefeed":{"name":"Price Feed","description":"Price feed oracle contracts"},"stablecoin":{"name":"Stablecoin","description":"Stable value tokens pegged to fiat currencies"},"compliant":{"name":"Compliant","description":"Regulatory compliant tokens with compliance features"},"ccip":{"name":"CCIP","description":"Cross Chain Interoperability Protocol tokens"}}} \ No newline at end of file +{"name":"DeFi Oracle Meta Mainnet Token List","version":{"major":1,"minor":6,"patch":1},"timestamp":"2026-02-28T00:00:00.000Z","keywords":["dbis","chain138","defi oracle meta"],"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tokens":[{"chainId":138,"address":"0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6","name":"ETH/USD Price Feed","symbol":"ETH-USD","decimals":8,"logoURI":"https://ipfs.io/ipfs/QmPZuycjyJEe2otREuQ5HirvPJ8X6Yc6MBtwz1VhdD79pY","tags":["oracle","pricefeed"]},{"chainId":138,"address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","name":"Wrapped Ether","symbol":"WETH","decimals":18,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","wrapped"],"extensions":{"aliasSymbols":["WETH9"],"aliasNote":"Expose WETH9 as a compatibility alias on surfaces that distinguish WETH9 branding; canonical symbol remains WETH."}},{"chainId":138,"address":"0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F","name":"Wrapped Ether v10","symbol":"WETH10","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4","tags":["defi","wrapped"]},{"chainId":138,"address":"0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03","name":"Chainlink Token","symbol":"LINK","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A","tags":["defi","oracle","ccip"]},{"chainId":138,"address":"0x93E66202A11B1772E55407B32B44e5Cd8eda7f22","name":"Compliant Tether USD","symbol":"cUSDT","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmRfhPs9DcyFPpGjKwF6CCoVDWUHSxkQR34n9NK7JSbPCP","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xf22258f57794CC8E06237084b353Ab30fFfa640b","name":"Compliant USD Coin","symbol":"cUSDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmNPq4D5JXzurmi9jAhogVMzhAQRk1PZ1r9H3qQUV9gjDm","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x8085961F9cF02b4d800A3c6d386D31da4B34266a","name":"Euro Coin (Compliant)","symbol":"cEURC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xdf4b71c61E5912712C1Bdd451416B9aC26949d72","name":"Tether EUR (Compliant)","symbol":"cEURT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x003960f16D9d34F2e98d62723B6721Fb92074aD2","name":"Pound Sterling (Compliant)","symbol":"cGBPC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x350f54e4D23795f86A9c03988c7135357CCaD97c","name":"Tether GBP (Compliant)","symbol":"cGBPT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xD51482e567c03899eecE3CAe8a058161FD56069D","name":"Australian Dollar (Compliant)","symbol":"cAUDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xEe269e1226a334182aace90056EE4ee5Cc8A6770","name":"Japanese Yen (Compliant)","symbol":"cJPYC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x873990849DDa5117d7C644f0aF24370797C03885","name":"Swiss Franc (Compliant)","symbol":"cCHFC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x54dBd40cF05e15906A2C21f600937e96787f5679","name":"Canadian Dollar (Compliant)","symbol":"cCADC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x290E52a8819A4fbD0714E517225429aA2B70EC6b","name":"Gold (Compliant)","symbol":"cXAUC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"],"extensions":{"unitOfAccount":"troy_ounce","unitDescription":"1 full token (10^decimals base units) = 1 troy oz fine gold"}},{"chainId":138,"address":"0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E","name":"Tether XAU (Compliant)","symbol":"cXAUT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"],"extensions":{"unitOfAccount":"troy_ounce","unitDescription":"1 full token (10^decimals base units) = 1 troy oz fine gold"}}],"tags":{"defi":{"name":"DeFi","description":"Decentralized Finance tokens"},"wrapped":{"name":"Wrapped","description":"Wrapped tokens representing native assets"},"oracle":{"name":"Oracle","description":"Oracle price feed tokens"},"pricefeed":{"name":"Price Feed","description":"Price feed oracle contracts"},"stablecoin":{"name":"Stablecoin","description":"Stable value tokens pegged to fiat currencies"},"compliant":{"name":"Compliant","description":"Regulatory compliant tokens with compliance features"},"ccip":{"name":"CCIP","description":"Cross Chain Interoperability Protocol tokens"}}} \ No newline at end of file