From 409b77566be70069883a708b58bda68818b32926 Mon Sep 17 00:00:00 2001 From: ryardley Date: Tue, 24 Jun 2025 17:42:29 +0300 Subject: [PATCH 01/40] --wip-- [skip ci] --- templates/default/package.json | 9 +++++---- templates/default/scripts/test_integration.sh | 5 +++++ templates/default/tests/integrtion.spec.ts | 10 ++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 templates/default/scripts/test_integration.sh create mode 100644 templates/default/tests/integrtion.spec.ts diff --git a/templates/default/package.json b/templates/default/package.json index 3a3b5d7cad..2b425dc714 100644 --- a/templates/default/package.json +++ b/templates/default/package.json @@ -42,13 +42,14 @@ "compile": "hardhat compile", "deploy": "hardhat run scripts/deploy-local.ts --network localhost", "deploy:dev": "hardhat run scripts/deploy-local.ts", - "dev:evm": "hardhat node", - "predev:all": "[ ! -f './contracts/ImageID.sol' ] && enclave program compile || true", - "dev:ciphernodes": "./scripts/dev_ciphernodes.sh", "dev:all": "./scripts/dev_all.sh", + "dev:ciphernodes": "./scripts/dev_ciphernodes.sh", + "dev:evm": "hardhat node", "dev:frontend": "./scripts/dev_frontend.sh", "dev:program": "./scripts/dev_program.sh", "dev:server": "./scripts/dev_server.sh", - "test": "hardhat test" + "predev:all": "[ ! -f './contracts/ImageID.sol' ] && enclave program compile || true", + "test": "hardhat test", + "test:integration": "./scripts/test_integration.sh" } } diff --git a/templates/default/scripts/test_integration.sh b/templates/default/scripts/test_integration.sh new file mode 100644 index 0000000000..40150767d1 --- /dev/null +++ b/templates/default/scripts/test_integration.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -euo pipefail + +pnpm concurrently diff --git a/templates/default/tests/integrtion.spec.ts b/templates/default/tests/integrtion.spec.ts new file mode 100644 index 0000000000..ae970335ab --- /dev/null +++ b/templates/default/tests/integrtion.spec.ts @@ -0,0 +1,10 @@ +async function main() { + console.log("Testing..."); +} + +main() + .then(() => console.log("Test successful")) + .catch(() => { + console.log("Integration test failed"); + process.exit(1); + }); From e7ae80f0198fabf2f48f1697aba9516d899cc222 Mon Sep 17 00:00:00 2001 From: ryardley Date: Wed, 25 Jun 2025 21:52:34 +0300 Subject: [PATCH 02/40] --wip-- [skip ci] --- Cargo.lock | 12 + Cargo.toml | 2 +- crates/bfv-helpers/Cargo.toml | 1 + crates/bfv-helpers/src/client.rs | 28 ++ crates/bfv-helpers/src/lib.rs | 3 + crates/wasm/Cargo.toml | 14 + crates/wasm/src/lib.rs | 10 + packages/evm/src/sdk/enclave-sdk.ts | 14 + templates/default/package.json | 43 ++-- templates/default/scripts/test_integration.sh | 29 ++- templates/default/tests/integration.spec.ts | 239 ++++++++++++++++++ templates/default/tests/integrtion.spec.ts | 10 - templates/default/tsconfig.json | 7 +- 13 files changed, 378 insertions(+), 34 deletions(-) create mode 100644 crates/bfv-helpers/src/client.rs create mode 100644 crates/wasm/Cargo.toml create mode 100644 crates/wasm/src/lib.rs mode change 100644 => 100755 templates/default/scripts/test_integration.sh create mode 100644 templates/default/tests/integration.spec.ts delete mode 100644 templates/default/tests/integrtion.spec.ts diff --git a/Cargo.lock b/Cargo.lock index 4481c3f791..7609ffd846 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2535,6 +2535,7 @@ dependencies = [ "fhe", "fhe-traits", "hex", + "rand 0.8.5", ] [[package]] @@ -7840,6 +7841,17 @@ dependencies = [ "wit-bindgen-rt", ] +[[package]] +name = "wasm" +version = "0.1.0" +dependencies = [ + "e3-bfv-helpers", + "fhe", + "fhe-traits", + "rand 0.8.5", + "wasm-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.100" diff --git a/Cargo.toml b/Cargo.toml index a2421ad8f9..98dff40110 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ members = [ "crates/sortition", "crates/support-scripts", "crates/test-helpers", - "crates/tests", + "crates/tests", "crates/wasm", ] exclude = [ "examples/CRISP/apps/server", diff --git a/crates/bfv-helpers/Cargo.toml b/crates/bfv-helpers/Cargo.toml index 618ee03cf1..7d9d877a8d 100644 --- a/crates/bfv-helpers/Cargo.toml +++ b/crates/bfv-helpers/Cargo.toml @@ -11,6 +11,7 @@ alloy-dyn-abi = { workspace = true } alloy-primitives = { workspace = true } fhe-traits.workspace = true fhe_rs.workspace = true +rand.workspace = true [dev-dependencies] hex.workspace = true diff --git a/crates/bfv-helpers/src/client.rs b/crates/bfv-helpers/src/client.rs new file mode 100644 index 0000000000..faba619036 --- /dev/null +++ b/crates/bfv-helpers/src/client.rs @@ -0,0 +1,28 @@ +use crate::{build_bfv_params_arc, params::SET_2048_1032193_1}; +use anyhow::anyhow; +use anyhow::Context; +use anyhow::Result; +use fhe_rs::bfv::Encoding; +use fhe_rs::bfv::Plaintext; +use fhe_rs::bfv::PublicKey; +use fhe_traits::{DeserializeParametrized, FheEncoder, FheEncrypter, Serialize}; +use rand::thread_rng; + +pub fn bfv_encrypt_u64(data: u64, public_key: Vec) -> Result> { + let (degree, plaintext_modulus, moduli) = SET_2048_1032193_1; + let params = build_bfv_params_arc(degree, plaintext_modulus, &moduli); + + let pk = PublicKey::from_bytes(&public_key, ¶ms) + .map_err(|e| anyhow!("Error deserializing public key:{e}"))?; + + let input = vec![data]; + let pt = Plaintext::try_encode(&input, Encoding::poly(), ¶ms) + .map_err(|e| anyhow!("Error encoding plaintext: {e}"))?; + + let ct = pk + .try_encrypt(&pt, &mut thread_rng()) + .map_err(|e| anyhow!("Error encrypting data: {e}"))?; + + let encrypted_data = ct.to_bytes(); + Ok(encrypted_data) +} diff --git a/crates/bfv-helpers/src/lib.rs b/crates/bfv-helpers/src/lib.rs index df277fa092..3b57a8d4a5 100644 --- a/crates/bfv-helpers/src/lib.rs +++ b/crates/bfv-helpers/src/lib.rs @@ -1,7 +1,10 @@ +pub mod client; + use alloy_dyn_abi::{DynSolType, DynSolValue}; use alloy_primitives::U256; use fhe_rs::bfv::{BfvParameters, BfvParametersBuilder}; use std::sync::Arc; + /// Predefined BFV parameters for common use cases pub mod params { /// Standard BFV parameters sets diff --git a/crates/wasm/Cargo.toml b/crates/wasm/Cargo.toml new file mode 100644 index 0000000000..844f92d054 --- /dev/null +++ b/crates/wasm/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "wasm" +version.workspace = true +edition.workspace = true +license.workspace = true +description.workspace = true +repository.workspace = true + +[dependencies] +wasm-bindgen = "0.2.99" +e3-bfv-helpers.workspace = true +rand.workspace = true +fhe_rs.workspace = true +fhe-traits.workspace = true diff --git a/crates/wasm/src/lib.rs b/crates/wasm/src/lib.rs new file mode 100644 index 0000000000..568ac70ed9 --- /dev/null +++ b/crates/wasm/src/lib.rs @@ -0,0 +1,10 @@ +use e3_bfv_helpers::client::bfv_encrypt_u64; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn encrypt_number(data: u64, public_key: Vec) -> Result, JsValue> { + let encrypted_data = + bfv_encrypt_u64(data, public_key).map_err(|e| JsValue::from_str(&format!("{}", e)))?; + Ok(encrypted_data) +} + diff --git a/packages/evm/src/sdk/enclave-sdk.ts b/packages/evm/src/sdk/enclave-sdk.ts index f017776cf2..20a6da723b 100644 --- a/packages/evm/src/sdk/enclave-sdk.ts +++ b/packages/evm/src/sdk/enclave-sdk.ts @@ -209,6 +209,20 @@ export class EnclaveSDK { this.eventListener.off(eventType, callback); } + /** + * Handle an event only once + */ + public once( + type: T, + callback: EventCallback, + ): void { + const handler: EventCallback = (event) => { + this.off(type, handler); + callback(event); + }; + this.onEnclaveEvent(type, handler); + } + /** * Get historical events */ diff --git a/templates/default/package.json b/templates/default/package.json index 2b425dc714..8a6e6dd415 100644 --- a/templates/default/package.json +++ b/templates/default/package.json @@ -1,4 +1,26 @@ { + "name": "enclave-example", + "scripts": { + "ciphernode:add": "hardhat run scripts/ciphernode-add.ts -- ", + "compile": "hardhat compile", + "deploy": "hardhat run scripts/deploy-local.ts --network localhost", + "deploy:dev": "hardhat run scripts/deploy-local.ts", + "dev:all": "./scripts/dev_all.sh", + "dev:ciphernodes": "./scripts/dev_ciphernodes.sh", + "dev:evm": "hardhat node", + "dev:frontend": "./scripts/dev_frontend.sh", + "dev:program": "./scripts/dev_program.sh", + "dev:server": "./scripts/dev_server.sh", + "predev:all": "[ ! -f './contracts/ImageID.sol' ] && enclave program compile || true", + "test": "hardhat test", + "test:integration": "./scripts/test_integration.sh" + }, + "dependencies": { + "@gnosis-guild/enclave": "workspace:*", + "@types/yargs": "^17.0.33", + "yargs": "^18.0.0", + "viem": "^2.30.6" + }, "devDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", "@nomicfoundation/hardhat-ethers": "^3.0.5", @@ -30,26 +52,5 @@ "typescript": ">=4.5.0", "viem": "^2.30.6", "wait-on": "^8.0.3" - }, - "dependencies": { - "@gnosis-guild/enclave": "workspace:*", - "@types/yargs": "^17.0.33", - "yargs": "^18.0.0" - }, - "name": "enclave-example", - "scripts": { - "ciphernode:add": "hardhat run scripts/ciphernode-add.ts -- ", - "compile": "hardhat compile", - "deploy": "hardhat run scripts/deploy-local.ts --network localhost", - "deploy:dev": "hardhat run scripts/deploy-local.ts", - "dev:all": "./scripts/dev_all.sh", - "dev:ciphernodes": "./scripts/dev_ciphernodes.sh", - "dev:evm": "hardhat node", - "dev:frontend": "./scripts/dev_frontend.sh", - "dev:program": "./scripts/dev_program.sh", - "dev:server": "./scripts/dev_server.sh", - "predev:all": "[ ! -f './contracts/ImageID.sol' ] && enclave program compile || true", - "test": "hardhat test", - "test:integration": "./scripts/test_integration.sh" } } diff --git a/templates/default/scripts/test_integration.sh b/templates/default/scripts/test_integration.sh old mode 100644 new mode 100755 index 40150767d1..5035b958fd --- a/templates/default/scripts/test_integration.sh +++ b/templates/default/scripts/test_integration.sh @@ -2,4 +2,31 @@ set -euo pipefail -pnpm concurrently +passed_message() { + echo "" + echo "------------------------" + echo " ✅ Test has passed! " + echo "------------------------" + echo "" +} + +failed_message() { + echo "" + echo "❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌" + echo " ❌ Test failed " + echo "❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌" + echo "" +} + +export $(enclave print-env --chain hardhat) + +(pnpm concurrently \ + --names "TEST,EVM,CIPHER,SERVER,PROGRAM" \ + --prefix-colors "blue,cyan,magenta,yellow,green" \ + --kill-others \ + --success first \ + "wait-on http://localhost:13151/health && pnpm ts-node ./tests/integration.spec.ts" \ + "pnpm dev:evm" \ + "pnpm dev:ciphernodes" \ + "TEST_MODE=1 pnpm dev:server" \ + "enclave program start" && passed_message) || failed_message diff --git a/templates/default/tests/integration.spec.ts b/templates/default/tests/integration.spec.ts new file mode 100644 index 0000000000..92cda4cf4b --- /dev/null +++ b/templates/default/tests/integration.spec.ts @@ -0,0 +1,239 @@ +import { + calculateStartWindow, + DEFAULT_COMPUTE_PROVIDER_PARAMS, + DEFAULT_E3_CONFIG, + EnclaveEventType, + EnclaveSDK, + encodeBfvParams, + encodeComputeProviderParams, + RegistryEventType, + AllEventTypes, + EnclaveEvent, +} from "@gnosis-guild/enclave/sdk"; +import { hexToBytes } from "viem"; +import { E3 } from "@gnosis-guild/enclave/sdk/types.js"; +import assert from "assert"; + +export function getContractAddresses() { + return { + enclave: process.env.ENCLAVE_ADDRESS as `0x${string}`, + ciphernodeRegistry: process.env.REGISTRY_ADDRESS as `0x${string}`, + filterRegistry: process.env.FILTER_REGISTRY_ADDRESS as `0x${string}`, + e3Program: process.env.E3_PROGRAM_ADDRESS as `0x${string}`, + }; +} + +type E3Shared = { + e3Id: bigint; + e3Program: string; + e3: E3; + filter: string; +}; + +type E3StateRequested = E3Shared & { + type: "requested"; +}; + +type E3StatePublished = E3Shared & { + type: "committee_published"; + publicKey: `0x${string}`; +}; + +type E3StateActivated = E3Shared & { + type: "activated"; + publicKey: `0x${string}`; + expiration: bigint; +}; + +type E3StateOutputPublished = E3Shared & { + type: "output_published"; + plaintextOutput: string; +}; + +type E3State = + | E3StateRequested + | E3StatePublished + | E3StateActivated + | E3StateOutputPublished; + +async function setupEventListeners( + sdk: EnclaveSDK, + store: Map, +) { + async function waitForEvent( + type: T, + trigger?: () => Promise, + ): Promise> { + return new Promise((resolve) => { + sdk.once(type, resolve); + trigger && trigger(); + }); + } + + sdk.onEnclaveEvent(EnclaveEventType.E3_REQUESTED, (event) => { + const id = event.data.e3Id; + + if (store.has(id)) { + throw new Error("E3 has already been requested "); + } + + store.set(event.data.e3Id, { + type: "requested", + ...event.data, + }); + }); + + sdk.onEnclaveEvent(RegistryEventType.COMMITTEE_PUBLISHED, (event) => { + const id = event.data.e3Id; + + const state = store.get(id); + + if (!state) { + throw new Error(`State for ID '${id}'not found.`); + } + + if (state.type !== "requested") { + throw new Error(`State must be in the ${state.type} state`); + } + + store.set(id, { + publicKey: event.data.publicKey as `0x${string}`, + ...state, + type: "committee_published", + }); + }); + + sdk.onEnclaveEvent(EnclaveEventType.E3_ACTIVATED, (event) => { + const id = event.data.e3Id; + const state = store.get(id); + + if (!state) { + throw new Error(`State for ID '${id}' not found.`); + } + + if (state.type !== "committee_published") { + throw new Error(`State must be in the ${state.type} state`); + } + + store.set(id, { + ...state, + expiration: event.data.expiration, + publicKey: event.data.committeePublicKey as `0x${string}`, + type: "activated", + }); + }); + + sdk.onEnclaveEvent(EnclaveEventType.PLAINTEXT_OUTPUT_PUBLISHED, (event) => { + const id = event.data.e3Id; + const state = store.get(id); + + if (!state) { + throw new Error(`State for ID '${id}' not found.`); + } + + if (state.type !== "committee_published") { + throw new Error(`State must be in the ${state.type} state`); + } + + store.set(id, { + ...state, + plaintextOutput: event.data.plaintextOutput, + type: "output_published", + }); + }); + + return { waitForEvent }; +} + +async function main() { + console.log("Testing..."); + + const contracts = getContractAddresses(); + + const store = new Map(); + const sdk = EnclaveSDK.create({ + chainId: 31337, + contracts: { + enclave: contracts.enclave, + ciphernodeRegistry: contracts.ciphernodeRegistry, + }, + rpcUrl: "ws://localhost:8545", + privateKey: + "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", + }); + + const { waitForEvent } = await setupEventListeners(sdk, store); + + const threshold: [number, number] = [ + DEFAULT_E3_CONFIG.threshold_min, + DEFAULT_E3_CONFIG.threshold_max, + ]; + const startWindow = calculateStartWindow(60); // 1 minute + const duration = BigInt(60); // 1 minute + const e3ProgramParams = encodeBfvParams(); + const computeProviderParams = encodeComputeProviderParams( + DEFAULT_COMPUTE_PROVIDER_PARAMS, + ); + + let state; + let event; + + // REQUEST phase + await waitForEvent(EnclaveEventType.E3_REQUESTED, async () => { + await sdk.requestE3({ + filter: contracts.filterRegistry, + threshold, + startWindow, + duration, + e3Program: contracts.e3Program, + e3ProgramParams, + computeProviderParams, + value: BigInt("1000000000000000"), // 0.001 ETH + }); + }); + + state = store.get(0n); + assert(state); + assert.strictEqual(state.e3Id, 0n); + assert.strictEqual(state.filter, contracts.filterRegistry); + assert.strictEqual(state.type, "requested"); + + // Ciphernodes will publish a public key within the COMMITTEE_PUBLISHED event + event = await waitForEvent(RegistryEventType.COMMITTEE_PUBLISHED); + + state = store.get(0n); + assert(state); + assert.strictEqual(state.type, "committee_published"); + assert.strictEqual(state.publicKey, event.data.publicKey); + + let { e3Id, publicKey } = state; + + // ACTIVATION phase + event = await waitForEvent(EnclaveEventType.E3_ACTIVATED, async () => { + await sdk.activateE3(e3Id, publicKey); + }); + + state = store.get(0n); + assert(state); + assert.strictEqual(state.type, "activated"); + + // INPUT PUBLISHING phase + const num1 = 123n; + const num2 = 210n; + const publicKeyBytes = hexToBytes(state.publicKey); + await waitForEvent(EnclaveEventType.E3_ACTIVATED, async () => {}); + + console.log("It worked"); + + process.exit(0); +} + +main() + .then(() => console.log("Test successful")) + .catch((err) => { + console.log(""); + console.log(" ❌ Test failed "); + console.log(""); + console.log(err); + process.exit(1); + }); diff --git a/templates/default/tests/integrtion.spec.ts b/templates/default/tests/integrtion.spec.ts deleted file mode 100644 index ae970335ab..0000000000 --- a/templates/default/tests/integrtion.spec.ts +++ /dev/null @@ -1,10 +0,0 @@ -async function main() { - console.log("Testing..."); -} - -main() - .then(() => console.log("Test successful")) - .catch(() => { - console.log("Integration test failed"); - process.exit(1); - }); diff --git a/templates/default/tsconfig.json b/templates/default/tsconfig.json index a2a3e02585..d17b82c638 100644 --- a/templates/default/tsconfig.json +++ b/templates/default/tsconfig.json @@ -10,5 +10,10 @@ "skipLibCheck": true, "resolveJsonModule": true }, - "include": ["./deploy/**/*", "./server/**/*", "hardhat.config.ts"] + "include": [ + "./tests/**/*", + "./deploy/**/*", + "./server/**/*", + "hardhat.config.ts" + ] } From 209c42839e1d2ae256bce98b1cf98e4b1bb2fe0b Mon Sep 17 00:00:00 2001 From: ryardley Date: Wed, 25 Jun 2025 22:54:23 +0300 Subject: [PATCH 03/40] --wip-- [skip ci] --- Cargo.lock | 23 ++++++++++++----------- crates/bfv-helpers/Cargo.toml | 2 +- crates/bfv-helpers/src/client.rs | 11 +++++++---- crates/wasm/.gitignore | 1 + crates/wasm/Cargo.toml | 6 +++++- crates/wasm/package.json | 25 +++++++++++++++++++++++++ crates/wasm/scripts/build.sh | 4 ++++ crates/wasm/src/lib.rs | 5 +++-- pnpm-lock.yaml | 6 +++--- rust-toolchain.toml | 1 + 10 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 crates/wasm/.gitignore create mode 100644 crates/wasm/package.json create mode 100755 crates/wasm/scripts/build.sh diff --git a/Cargo.lock b/Cargo.lock index 7609ffd846..a8c42bcc7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2941,6 +2941,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "e3-wasm" +version = "0.1.0" +dependencies = [ + "e3-bfv-helpers", + "fhe", + "fhe-traits", + "getrandom 0.2.16", + "rand 0.8.5", + "wasm-bindgen", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -7841,17 +7853,6 @@ dependencies = [ "wit-bindgen-rt", ] -[[package]] -name = "wasm" -version = "0.1.0" -dependencies = [ - "e3-bfv-helpers", - "fhe", - "fhe-traits", - "rand 0.8.5", - "wasm-bindgen", -] - [[package]] name = "wasm-bindgen" version = "0.2.100" diff --git a/crates/bfv-helpers/Cargo.toml b/crates/bfv-helpers/Cargo.toml index 7d9d877a8d..1e1bf9ded3 100644 --- a/crates/bfv-helpers/Cargo.toml +++ b/crates/bfv-helpers/Cargo.toml @@ -12,7 +12,7 @@ alloy-primitives = { workspace = true } fhe-traits.workspace = true fhe_rs.workspace = true rand.workspace = true +anyhow.workspace = true [dev-dependencies] hex.workspace = true -anyhow.workspace = true diff --git a/crates/bfv-helpers/src/client.rs b/crates/bfv-helpers/src/client.rs index faba619036..cc51c99d0d 100644 --- a/crates/bfv-helpers/src/client.rs +++ b/crates/bfv-helpers/src/client.rs @@ -1,14 +1,17 @@ use crate::{build_bfv_params_arc, params::SET_2048_1032193_1}; use anyhow::anyhow; -use anyhow::Context; use anyhow::Result; use fhe_rs::bfv::Encoding; use fhe_rs::bfv::Plaintext; use fhe_rs::bfv::PublicKey; use fhe_traits::{DeserializeParametrized, FheEncoder, FheEncrypter, Serialize}; -use rand::thread_rng; +use rand::CryptoRng; +use rand::RngCore; -pub fn bfv_encrypt_u64(data: u64, public_key: Vec) -> Result> { +pub fn bfv_encrypt_u64(data: u64, public_key: Vec, mut rng: R) -> Result> +where + R: RngCore + CryptoRng, +{ let (degree, plaintext_modulus, moduli) = SET_2048_1032193_1; let params = build_bfv_params_arc(degree, plaintext_modulus, &moduli); @@ -20,7 +23,7 @@ pub fn bfv_encrypt_u64(data: u64, public_key: Vec) -> Result> { .map_err(|e| anyhow!("Error encoding plaintext: {e}"))?; let ct = pk - .try_encrypt(&pt, &mut thread_rng()) + .try_encrypt(&pt, &mut rng) .map_err(|e| anyhow!("Error encrypting data: {e}"))?; let encrypted_data = ct.to_bytes(); diff --git a/crates/wasm/.gitignore b/crates/wasm/.gitignore new file mode 100644 index 0000000000..85dc7947ec --- /dev/null +++ b/crates/wasm/.gitignore @@ -0,0 +1 @@ +/pkg-* diff --git a/crates/wasm/Cargo.toml b/crates/wasm/Cargo.toml index 844f92d054..39cf7306b3 100644 --- a/crates/wasm/Cargo.toml +++ b/crates/wasm/Cargo.toml @@ -1,14 +1,18 @@ [package] -name = "wasm" +name = "e3-wasm" version.workspace = true edition.workspace = true license.workspace = true description.workspace = true repository.workspace = true +[lib] +crate-type = ["cdylib"] + [dependencies] wasm-bindgen = "0.2.99" e3-bfv-helpers.workspace = true rand.workspace = true +getrandom = { version = "0.2", features = ["js"] } fhe_rs.workspace = true fhe-traits.workspace = true diff --git a/crates/wasm/package.json b/crates/wasm/package.json new file mode 100644 index 0000000000..9440e66440 --- /dev/null +++ b/crates/wasm/package.json @@ -0,0 +1,25 @@ +{ + "name": "wasm", + "version": "1.0.0", + "description": "", + "main": "index.js", + "files": [ + "pkg" + ], + "scripts": { + "build": "./scripts/build.sh" + }, + "exports": { + ".": { + "types": "./pkg/enclave_client_wasm.d.ts", + "default": "./pkg/enclave_client_wasm.js" + } + }, + "keywords": [], + "author": { + "name": "gnosisguild", + "url": "https://github.com/gnosisguild" + }, + "license": "LGPL-3.0-only", + "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" +} diff --git a/crates/wasm/scripts/build.sh b/crates/wasm/scripts/build.sh new file mode 100755 index 0000000000..a0314bc2cd --- /dev/null +++ b/crates/wasm/scripts/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +pnpm wasm-pack build --target web --out-dir pkg-web +pnpm wasm-pack build --target nodejs --out-dir pkg-nodejs diff --git a/crates/wasm/src/lib.rs b/crates/wasm/src/lib.rs index 568ac70ed9..b37c17060a 100644 --- a/crates/wasm/src/lib.rs +++ b/crates/wasm/src/lib.rs @@ -1,10 +1,11 @@ use e3_bfv_helpers::client::bfv_encrypt_u64; +use rand::thread_rng; use wasm_bindgen::prelude::*; #[wasm_bindgen] pub fn encrypt_number(data: u64, public_key: Vec) -> Result, JsValue> { - let encrypted_data = - bfv_encrypt_u64(data, public_key).map_err(|e| JsValue::from_str(&format!("{}", e)))?; + let encrypted_data = bfv_encrypt_u64(data, public_key, thread_rng()) + .map_err(|e| JsValue::from_str(&format!("{}", e)))?; Ok(encrypted_data) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c188a7c4a0..ef58ceebb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -448,6 +448,9 @@ importers: '@types/yargs': specifier: ^17.0.33 version: 17.0.33 + viem: + specifier: ^2.30.6 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) yargs: specifier: ^18.0.0 version: 18.0.0 @@ -536,9 +539,6 @@ importers: typescript: specifier: '>=4.5.0' version: 5.8.3 - viem: - specifier: ^2.30.6 - version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) wait-on: specifier: ^8.0.3 version: 8.0.3 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index c68e3d8ae1..d0efd2d0a4 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,4 @@ [toolchain] channel = "1.85" components = ["rustfmt"] +targets = ["wasm32-unknown-unknown"] From 8caf82b7fc6ec32c15041cfb20dccaff5af0b003 Mon Sep 17 00:00:00 2001 From: ryardley Date: Thu, 26 Jun 2025 00:14:17 +0300 Subject: [PATCH 04/40] Build sdk package so that hardhat uses a separate tsconfig --- Cargo.lock | 24 ++++++++++++------------ crates/wasm/Cargo.toml | 2 +- crates/wasm/package.json | 23 ++++++++++++++++------- package.json | 5 +++-- packages/evm/hardhat.config.ts | 2 +- packages/evm/package.json | 20 +++++++++++++++----- packages/evm/sdk.tsconfig.json | 22 ++++++++++++++++++++++ packages/evm/src/sdk/index.ts | 2 ++ packages/evm/src/sdk/wasm.ts | 8 ++++++++ packages/evm/tsconfig.json | 6 +++--- pnpm-lock.yaml | 5 +++++ pnpm-workspace.yaml | 1 + 12 files changed, 89 insertions(+), 31 deletions(-) create mode 100644 packages/evm/sdk.tsconfig.json create mode 100644 packages/evm/src/sdk/wasm.ts diff --git a/Cargo.lock b/Cargo.lock index a8c42bcc7b..184b4fd6e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2634,6 +2634,18 @@ dependencies = [ "tracing", ] +[[package]] +name = "e3-enclave-wasm" +version = "0.1.0" +dependencies = [ + "e3-bfv-helpers", + "fhe", + "fhe-traits", + "getrandom 0.2.16", + "rand 0.8.5", + "wasm-bindgen", +] + [[package]] name = "e3-entrypoint" version = "0.1.0" @@ -2941,18 +2953,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "e3-wasm" -version = "0.1.0" -dependencies = [ - "e3-bfv-helpers", - "fhe", - "fhe-traits", - "getrandom 0.2.16", - "rand 0.8.5", - "wasm-bindgen", -] - [[package]] name = "ecdsa" version = "0.16.9" diff --git a/crates/wasm/Cargo.toml b/crates/wasm/Cargo.toml index 39cf7306b3..6d1d233b43 100644 --- a/crates/wasm/Cargo.toml +++ b/crates/wasm/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "e3-wasm" +name = "e3-enclave-wasm" version.workspace = true edition.workspace = true license.workspace = true diff --git a/crates/wasm/package.json b/crates/wasm/package.json index 9440e66440..f06b80c175 100644 --- a/crates/wasm/package.json +++ b/crates/wasm/package.json @@ -1,18 +1,27 @@ { - "name": "wasm", - "version": "1.0.0", - "description": "", + "name": "@gnosis-guild/enclave-wasm", + "version": "0.0.5-test.22", + "description": "Wasm modules for enclave.", "main": "index.js", "files": [ - "pkg" + "pkg-nodejs/", + "pkg-web/" ], "scripts": { "build": "./scripts/build.sh" }, "exports": { - ".": { - "types": "./pkg/enclave_client_wasm.d.ts", - "default": "./pkg/enclave_client_wasm.js" + "node": { + "types": "./pkg-nodejs/e3_enclave_wasm.d.ts", + "default": "./pkg-nodejs/e3_enclave_wasm.js" + }, + "browser": { + "types": "./pkg-web/e3_enclave_wasm.d.ts", + "default": "./pkg-web/e3_enclave_wasm.js" + }, + "default": { + "types": "./pkg-web/e3_enclave_wasm.d.ts", + "default": "./pkg-web/e3_enclave_wasm.js" } }, "keywords": [], diff --git a/package.json b/package.json index a88520d9d2..d58d14a7ef 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "scripts": { "clean": "cd packages/evm && pnpm clean", - "compile": "pnpm evm:build && pnpm react:build && pnpm ciphernode:build", + "compile": "pnpm wasm:build && pnpm evm:build && pnpm react:build && pnpm ciphernode:build", "lint": "pnpm evm:lint && pnpm ciphernode:lint", "typechain": "pnpm evm:typechain", "test": "pnpm evm:test && pnpm ciphernode:test", @@ -41,9 +41,10 @@ "react:release": "cd packages/enclave-react && pnpm release", "npm:release": "pnpm build && pnpm evm:release && pnpm react:release", "support:build": "cd crates/support && ./scripts/build.sh", - "build": "pnpm -r build", + "build": "pnpm compile", "changeset": "changeset", "version": "changeset version", + "wasm:build": "cd ./crates/wasm && pnpm build", "release": "pnpm build && changeset publish" }, "workspaces": [ diff --git a/packages/evm/hardhat.config.ts b/packages/evm/hardhat.config.ts index f1e0661f5d..33c08d1ac5 100644 --- a/packages/evm/hardhat.config.ts +++ b/packages/evm/hardhat.config.ts @@ -56,7 +56,7 @@ function getChainConfig(chain: keyof typeof chainIds): NetworkUserConfig { jsonRpcUrl = "https://" + chain + ".infura.io/v3/" + infuraApiKey; } - let accounts; + let accounts: [string] | { mnemonic: string }; if (PRIVATE_KEY) { accounts = [PRIVATE_KEY]; } else { diff --git a/packages/evm/package.json b/packages/evm/package.json index 766e055e12..baf44d04b5 100644 --- a/packages/evm/package.json +++ b/packages/evm/package.json @@ -20,8 +20,16 @@ }, "./contracts/*": "./contracts/*", "./artifacts/*": "./artifacts/*", - "./sdk": "./dist/src/sdk/index.js", - "./sdk/*": "./dist/src/sdk/*" + "./sdk": { + "types": "./dist/src/sdk/index.d.ts", + "import": "./dist/src/sdk/index.js", + "require": "./dist/src/sdk/index.js" + }, + "./sdk/*": { + "types": "./dist/src/sdk/*.d.ts", + "import": "./dist/src/sdk/*", + "require": "./dist/src/sdk/*" + } }, "devDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.2", @@ -88,10 +96,11 @@ "git-checks": false }, "scripts": { - "clean": "rimraf ./artifacts ./cache ./coverage ./types ./coverage.json && pnpm typechain", + "clean": "rimraf ./artifacts ./cache ./coverage ./types ./dist ./coverage.json && pnpm typechain", "build": "pnpm compile", - "compile": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile && pnpm compile:scripts", - "compile:scripts": "tsc --noEmitOnError false --noCheck", + "compile": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile && pnpm compile:scripts && pnpm compile:sdk", + "compile:scripts": "tsc -p tsconfig.json --noEmitOnError false --noCheck", + "compile:sdk": "tsc -p sdk.tsconfig.json --noEmitOnError false --noCheck", "coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && pnpm typechain", "deploy": "hardhat deploy --tags enclave", "deploy:mocks": "hardhat deploy --tags enclave,mocks", @@ -113,6 +122,7 @@ }, "dependencies": { "@excubiae/contracts": "^0.4.0", + "@gnosis-guild/enclave-wasm": "workspace:*", "solady": "^0.1.13", "viem": "^2.30.6" }, diff --git a/packages/evm/sdk.tsconfig.json b/packages/evm/sdk.tsconfig.json new file mode 100644 index 0000000000..af6e6f24fc --- /dev/null +++ b/packages/evm/sdk.tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "lib": ["es2020"], + "module": "es2015", + "moduleResolution": "bundler", + "noImplicitAny": true, + "outDir": "dist", + "removeComments": true, + "resolveJsonModule": true, + "sourceMap": true, + "strict": true, + "target": "es2020" + }, + "exclude": ["node_modules"], + "include": ["src/**/*"] +} diff --git a/packages/evm/src/sdk/index.ts b/packages/evm/src/sdk/index.ts index 082676e890..e51ffab0c1 100644 --- a/packages/evm/src/sdk/index.ts +++ b/packages/evm/src/sdk/index.ts @@ -54,3 +54,5 @@ export { decodePlaintextOutput, type ComputeProviderParams, } from "./utils"; + +export { encryptNumber } from "./wasm"; diff --git a/packages/evm/src/sdk/wasm.ts b/packages/evm/src/sdk/wasm.ts new file mode 100644 index 0000000000..c44d060179 --- /dev/null +++ b/packages/evm/src/sdk/wasm.ts @@ -0,0 +1,8 @@ +import { encrypt_number } from "@gnosis-guild/enclave-wasm"; + +export function encryptNumber( + data: bigint, + public_key: Uint8Array, +): Uint8Array { + return encrypt_number(data, public_key); +} diff --git a/packages/evm/tsconfig.json b/packages/evm/tsconfig.json index bf2c2ef0ca..2a5d6a23f3 100644 --- a/packages/evm/tsconfig.json +++ b/packages/evm/tsconfig.json @@ -9,8 +9,8 @@ "lib": ["es2020"], "module": "commonjs", "moduleResolution": "node", - "noImplicitAny": true, "outDir": "dist", + "noImplicitAny": true, "removeComments": true, "resolveJsonModule": true, "sourceMap": true, @@ -18,6 +18,6 @@ "target": "es2020" }, "exclude": ["node_modules"], - "files": ["./hardhat.config.ts"], - "include": ["src/**/*", "tasks/**/*", "test/**/*", "deploy/**/*", "types/"] + "files": ["hardhat.config.ts"], + "include": ["tasks/**/*", "test/**/*", "deploy/**/*", "types/"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef58ceebb8..bb428a7be4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,8 @@ importers: specifier: ^9.1.7 version: 9.1.7 + crates/wasm: {} + docs: dependencies: next: @@ -306,6 +308,9 @@ importers: '@excubiae/contracts': specifier: ^0.4.0 version: 0.4.0 + '@gnosis-guild/enclave-wasm': + specifier: workspace:* + version: link:../../crates/wasm solady: specifier: ^0.1.13 version: 0.1.19 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c791c3207b..a207d025b6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,5 +4,6 @@ packages: - examples/CRISP/apps/client - packages/enclave-react - packages/evm + - crates/wasm - templates/default - templates/default/client From c4ef4b8dc2ace4cd1d11042b9034d901c7f1a30d Mon Sep 17 00:00:00 2001 From: ryardley Date: Thu, 26 Jun 2025 00:23:04 +0300 Subject: [PATCH 05/40] Linting --- packages/evm/.eslintrc.yml | 4 +++- packages/evm/src/sdk/enclave-sdk.ts | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/evm/.eslintrc.yml b/packages/evm/.eslintrc.yml index 27672a35fb..08af93f54d 100644 --- a/packages/evm/.eslintrc.yml +++ b/packages/evm/.eslintrc.yml @@ -5,7 +5,9 @@ extends: - "prettier" parser: "@typescript-eslint/parser" parserOptions: - project: "tsconfig.json" + project: + - "tsconfig.json" + - "sdk.tsconfig.json" plugins: - "@typescript-eslint" root: true diff --git a/packages/evm/src/sdk/enclave-sdk.ts b/packages/evm/src/sdk/enclave-sdk.ts index 20a6da723b..0b558746fd 100644 --- a/packages/evm/src/sdk/enclave-sdk.ts +++ b/packages/evm/src/sdk/enclave-sdk.ts @@ -218,7 +218,10 @@ export class EnclaveSDK { ): void { const handler: EventCallback = (event) => { this.off(type, handler); - callback(event); + const prom = callback(event); + if (prom) { + prom.catch((e) => console.log(e)); + } }; this.onEnclaveEvent(type, handler); } From a44158e73f8870d55d0f3c03a8307bfbe5208c3d Mon Sep 17 00:00:00 2001 From: ryardley Date: Thu, 26 Jun 2025 00:24:16 +0300 Subject: [PATCH 06/40] Linting --- crates/wasm/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/wasm/src/lib.rs b/crates/wasm/src/lib.rs index b37c17060a..0c4ae6fd6b 100644 --- a/crates/wasm/src/lib.rs +++ b/crates/wasm/src/lib.rs @@ -8,4 +8,3 @@ pub fn encrypt_number(data: u64, public_key: Vec) -> Result, JsValue .map_err(|e| JsValue::from_str(&format!("{}", e)))?; Ok(encrypted_data) } - From d50eafe3c50eb15fa60a84aae71f30995675088e Mon Sep 17 00:00:00 2001 From: ryardley Date: Thu, 26 Jun 2025 23:15:19 +0300 Subject: [PATCH 07/40] --wip-- [skip ci] --- Cargo.lock | 24 ++++++++++---------- crates/wasm/.gitignore | 2 +- crates/wasm/Cargo.toml | 2 +- crates/wasm/package.json | 17 +++++++------- crates/wasm/scripts/build.sh | 4 ++-- packages/evm/test/fixtures/pubkey.bin | Bin 0 -> 27676 bytes packages/evm/test/sdk.spec.ts | 17 ++++++++++++++ templates/default/tests/integration.spec.ts | 17 +++++++++++++- 8 files changed, 57 insertions(+), 26 deletions(-) create mode 100644 packages/evm/test/fixtures/pubkey.bin create mode 100644 packages/evm/test/sdk.spec.ts diff --git a/Cargo.lock b/Cargo.lock index 184b4fd6e3..a8c42bcc7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2634,18 +2634,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "e3-enclave-wasm" -version = "0.1.0" -dependencies = [ - "e3-bfv-helpers", - "fhe", - "fhe-traits", - "getrandom 0.2.16", - "rand 0.8.5", - "wasm-bindgen", -] - [[package]] name = "e3-entrypoint" version = "0.1.0" @@ -2953,6 +2941,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "e3-wasm" +version = "0.1.0" +dependencies = [ + "e3-bfv-helpers", + "fhe", + "fhe-traits", + "getrandom 0.2.16", + "rand 0.8.5", + "wasm-bindgen", +] + [[package]] name = "ecdsa" version = "0.16.9" diff --git a/crates/wasm/.gitignore b/crates/wasm/.gitignore index 85dc7947ec..9b1c8b133c 100644 --- a/crates/wasm/.gitignore +++ b/crates/wasm/.gitignore @@ -1 +1 @@ -/pkg-* +/dist diff --git a/crates/wasm/Cargo.toml b/crates/wasm/Cargo.toml index 6d1d233b43..39cf7306b3 100644 --- a/crates/wasm/Cargo.toml +++ b/crates/wasm/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "e3-enclave-wasm" +name = "e3-wasm" version.workspace = true edition.workspace = true license.workspace = true diff --git a/crates/wasm/package.json b/crates/wasm/package.json index f06b80c175..b6bacd0a37 100644 --- a/crates/wasm/package.json +++ b/crates/wasm/package.json @@ -1,27 +1,26 @@ { - "name": "@gnosis-guild/enclave-wasm", + "name": "@gnosis-guild/e3-wasm", "version": "0.0.5-test.22", "description": "Wasm modules for enclave.", "main": "index.js", "files": [ - "pkg-nodejs/", - "pkg-web/" + "dist" ], "scripts": { "build": "./scripts/build.sh" }, "exports": { "node": { - "types": "./pkg-nodejs/e3_enclave_wasm.d.ts", - "default": "./pkg-nodejs/e3_enclave_wasm.js" + "types": "./dist/nodejs/e3_wasm.d.ts", + "default": "./dist/nodejs/e3_wasm.js" }, "browser": { - "types": "./pkg-web/e3_enclave_wasm.d.ts", - "default": "./pkg-web/e3_enclave_wasm.js" + "types": "./dist/web/e3_wasm.d.ts", + "default": "./dist/web/e3_wasm.js" }, "default": { - "types": "./pkg-web/e3_enclave_wasm.d.ts", - "default": "./pkg-web/e3_enclave_wasm.js" + "types": "./dist/web/e3_wasm.d.ts", + "default": "./dist/web/e3_wasm.js" } }, "keywords": [], diff --git a/crates/wasm/scripts/build.sh b/crates/wasm/scripts/build.sh index a0314bc2cd..a1ab3209d1 100755 --- a/crates/wasm/scripts/build.sh +++ b/crates/wasm/scripts/build.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash -pnpm wasm-pack build --target web --out-dir pkg-web -pnpm wasm-pack build --target nodejs --out-dir pkg-nodejs +pnpm wasm-pack build --target web --out-dir dist/web +pnpm wasm-pack build --target nodejs --out-dir dist/nodejs diff --git a/packages/evm/test/fixtures/pubkey.bin b/packages/evm/test/fixtures/pubkey.bin new file mode 100644 index 0000000000000000000000000000000000000000..ecc1d2934151137ed56581bc7224a9df26d27513 GIT binary patch literal 27676 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 bco9C3!%!1_PAAwSh10P literal 0 HcmV?d00001 diff --git a/packages/evm/test/sdk.spec.ts b/packages/evm/test/sdk.spec.ts new file mode 100644 index 0000000000..a47057d0fe --- /dev/null +++ b/packages/evm/test/sdk.spec.ts @@ -0,0 +1,17 @@ +import { expect } from "chai"; +import fs from "fs/promises"; +import path from "path"; + +import { encryptNumber } from "../src/sdk"; + +describe("encryptNumber", () => { + it("should encrypt a number without crashing in a node environent", async () => { + const buffer = await fs.readFile( + path.resolve(__dirname, "./fixtures/pubkey.bin"), + ); + const value = encryptNumber(10n, Uint8Array.from(buffer)); + expect(value).to.be.an.instanceof(Uint8Array); + expect(value.length).to.equal(27_674); + // TODO: test the encryption is correct + }); +}); diff --git a/templates/default/tests/integration.spec.ts b/templates/default/tests/integration.spec.ts index 92cda4cf4b..2ee6504b47 100644 --- a/templates/default/tests/integration.spec.ts +++ b/templates/default/tests/integration.spec.ts @@ -9,6 +9,7 @@ import { RegistryEventType, AllEventTypes, EnclaveEvent, + encryptNumber, } from "@gnosis-guild/enclave/sdk"; import { hexToBytes } from "viem"; import { E3 } from "@gnosis-guild/enclave/sdk/types.js"; @@ -221,7 +222,21 @@ async function main() { const num1 = 123n; const num2 = 210n; const publicKeyBytes = hexToBytes(state.publicKey); - await waitForEvent(EnclaveEventType.E3_ACTIVATED, async () => {}); + const enc1 = encryptNumber(num1, publicKeyBytes); + const enc2 = encryptNumber(num2, publicKeyBytes); + + await waitForEvent(EnclaveEventType.INPUT_PUBLISHED, async () => { + await sdk.publishInput( + e3Id, + `0x${Array.from(enc1, (b) => b.toString(16).padStart(2, "0")).join("")}` as `0x${string}`, + ); + }); + await waitForEvent(EnclaveEventType.INPUT_PUBLISHED, async () => { + const hash2 = await sdk.publishInput( + e3Id, + `0x${Array.from(enc2, (b) => b.toString(16).padStart(2, "0")).join("")}` as `0x${string}`, + ); + }); console.log("It worked"); From da9f11ea4e47c45e551d8240f9a8ec4402a32fb8 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:06:16 +0300 Subject: [PATCH 08/40] Update moduleResolution --- packages/evm/sdk.tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/evm/sdk.tsconfig.json b/packages/evm/sdk.tsconfig.json index af6e6f24fc..3edca5b420 100644 --- a/packages/evm/sdk.tsconfig.json +++ b/packages/evm/sdk.tsconfig.json @@ -7,8 +7,8 @@ "experimentalDecorators": true, "forceConsistentCasingInFileNames": true, "lib": ["es2020"], - "module": "es2015", - "moduleResolution": "bundler", + "module": "nodenext", + "moduleResolution": "nodenext", "noImplicitAny": true, "outDir": "dist", "removeComments": true, From 3cdc8ef2822891716991f837a843bedd1b8dea28 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:11:01 +0300 Subject: [PATCH 09/40] Update packages --- packages/evm/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/evm/package.json b/packages/evm/package.json index baf44d04b5..0934a216b8 100644 --- a/packages/evm/package.json +++ b/packages/evm/package.json @@ -122,7 +122,7 @@ }, "dependencies": { "@excubiae/contracts": "^0.4.0", - "@gnosis-guild/enclave-wasm": "workspace:*", + "@gnosis-guild/e3-wasm": "workspace:*", "solady": "^0.1.13", "viem": "^2.30.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb428a7be4..f5e711e514 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -308,7 +308,7 @@ importers: '@excubiae/contracts': specifier: ^0.4.0 version: 0.4.0 - '@gnosis-guild/enclave-wasm': + '@gnosis-guild/e3-wasm': specifier: workspace:* version: link:../../crates/wasm solady: From 920376303cb5f5093cbb48c11c1f7e7aaaf91a4b Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:20:35 +0300 Subject: [PATCH 10/40] Ensure that LSP can respect the correct tsconfig --- packages/evm/package.json | 2 +- packages/evm/src/sdk/wasm.ts | 2 +- packages/evm/{sdk.tsconfig.json => src/tsconfig.json} | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename packages/evm/{sdk.tsconfig.json => src/tsconfig.json} (90%) diff --git a/packages/evm/package.json b/packages/evm/package.json index 0934a216b8..dbcfae5280 100644 --- a/packages/evm/package.json +++ b/packages/evm/package.json @@ -100,7 +100,7 @@ "build": "pnpm compile", "compile": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile && pnpm compile:scripts && pnpm compile:sdk", "compile:scripts": "tsc -p tsconfig.json --noEmitOnError false --noCheck", - "compile:sdk": "tsc -p sdk.tsconfig.json --noEmitOnError false --noCheck", + "compile:sdk": "tsc -p ./src/tsconfig.json --noEmitOnError false --noCheck", "coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && pnpm typechain", "deploy": "hardhat deploy --tags enclave", "deploy:mocks": "hardhat deploy --tags enclave,mocks", diff --git a/packages/evm/src/sdk/wasm.ts b/packages/evm/src/sdk/wasm.ts index c44d060179..33416645da 100644 --- a/packages/evm/src/sdk/wasm.ts +++ b/packages/evm/src/sdk/wasm.ts @@ -1,4 +1,4 @@ -import { encrypt_number } from "@gnosis-guild/enclave-wasm"; +import { encrypt_number } from "@gnosis-guild/e3-wasm"; export function encryptNumber( data: bigint, diff --git a/packages/evm/sdk.tsconfig.json b/packages/evm/src/tsconfig.json similarity index 90% rename from packages/evm/sdk.tsconfig.json rename to packages/evm/src/tsconfig.json index 3edca5b420..231a4bbf09 100644 --- a/packages/evm/sdk.tsconfig.json +++ b/packages/evm/src/tsconfig.json @@ -10,7 +10,7 @@ "module": "nodenext", "moduleResolution": "nodenext", "noImplicitAny": true, - "outDir": "dist", + "outDir": "../dist", "removeComments": true, "resolveJsonModule": true, "sourceMap": true, @@ -18,5 +18,5 @@ "target": "es2020" }, "exclude": ["node_modules"], - "include": ["src/**/*"] + "include": ["sdk/**/*"] } From 997cd8b4a11fb65132a1a48be04d21bb6994579e Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:25:54 +0300 Subject: [PATCH 11/40] Tidy up eslint --- packages/evm/.eslintrc.yml | 2 +- packages/evm/src/sdk/contract-client.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/evm/.eslintrc.yml b/packages/evm/.eslintrc.yml index 08af93f54d..4f191fd36d 100644 --- a/packages/evm/.eslintrc.yml +++ b/packages/evm/.eslintrc.yml @@ -7,7 +7,7 @@ parser: "@typescript-eslint/parser" parserOptions: project: - "tsconfig.json" - - "sdk.tsconfig.json" + - "src/tsconfig.json" plugins: - "@typescript-eslint" root: true diff --git a/packages/evm/src/sdk/contract-client.ts b/packages/evm/src/sdk/contract-client.ts index e88850fdba..2b379e092f 100644 --- a/packages/evm/src/sdk/contract-client.ts +++ b/packages/evm/src/sdk/contract-client.ts @@ -26,9 +26,9 @@ export class ContractClient { enclave: `0x${string}`; ciphernodeRegistry: `0x${string}`; } = { - enclave: "0x0000000000000000000000000000000000000000", - ciphernodeRegistry: "0x0000000000000000000000000000000000000000", - }, + enclave: "0x0000000000000000000000000000000000000000", + ciphernodeRegistry: "0x0000000000000000000000000000000000000000", + }, ) { if (!isValidAddress(addresses.enclave)) { throw new SDKError("Invalid Enclave contract address", "INVALID_ADDRESS"); From 1149cf501081269ceb7969447b7b6fc6abf1cc56 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:26:30 +0300 Subject: [PATCH 12/40] Tidy up eslint --- packages/evm/src/sdk/contract-client.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/evm/src/sdk/contract-client.ts b/packages/evm/src/sdk/contract-client.ts index 2b379e092f..e88850fdba 100644 --- a/packages/evm/src/sdk/contract-client.ts +++ b/packages/evm/src/sdk/contract-client.ts @@ -26,9 +26,9 @@ export class ContractClient { enclave: `0x${string}`; ciphernodeRegistry: `0x${string}`; } = { - enclave: "0x0000000000000000000000000000000000000000", - ciphernodeRegistry: "0x0000000000000000000000000000000000000000", - }, + enclave: "0x0000000000000000000000000000000000000000", + ciphernodeRegistry: "0x0000000000000000000000000000000000000000", + }, ) { if (!isValidAddress(addresses.enclave)) { throw new SDKError("Invalid Enclave contract address", "INVALID_ADDRESS"); From 8daad4ddcc1df59aa283e789a3814e2d2560ff94 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:29:44 +0300 Subject: [PATCH 13/40] Add package to Dockerfile --- crates/Dockerfile | 1 + examples/CRISP/apps/server/Dockerfile | 1 + 2 files changed, 2 insertions(+) diff --git a/crates/Dockerfile b/crates/Dockerfile index ecc0ee263a..387f5c9fba 100644 --- a/crates/Dockerfile +++ b/crates/Dockerfile @@ -54,6 +54,7 @@ COPY crates/sortition/Cargo.toml ./sortition/Cargo.toml COPY crates/support-scripts/Cargo.toml ./support-scripts/Cargo.toml COPY crates/test-helpers/Cargo.toml ./test-helpers/Cargo.toml COPY crates/tests/Cargo.toml ./tests/Cargo.toml +COPY crates/wasm/Cargo.toml ./wasm/Cargo.toml # COPY ./crates/entrypoint/build.rs ./entrypoint/build.rs diff --git a/examples/CRISP/apps/server/Dockerfile b/examples/CRISP/apps/server/Dockerfile index 00705b77d5..62f6d893c3 100644 --- a/examples/CRISP/apps/server/Dockerfile +++ b/examples/CRISP/apps/server/Dockerfile @@ -82,6 +82,7 @@ COPY crates/sortition/Cargo.toml crates/sortition/Cargo.toml COPY crates/support-scripts/Cargo.toml crates/support-scripts/Cargo.toml COPY crates/test-helpers/Cargo.toml crates/test-helpers/Cargo.toml COPY crates/tests/Cargo.toml crates/tests/Cargo.toml +COPY crates/wasm/Cargo.toml crates/wasm/Cargo.toml RUN set -eux; \ From 72f25cc414255bb058f564d88935e87f34120aef Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 01:56:32 +0300 Subject: [PATCH 14/40] Fix up issues with docker build for ciphernodes --- crates/Dockerfile | 16 ++++++++-------- packages/evm/package.json | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/crates/Dockerfile b/crates/Dockerfile index 387f5c9fba..d29636b230 100644 --- a/crates/Dockerfile +++ b/crates/Dockerfile @@ -1,15 +1,17 @@ FROM node:22 AS evm-builder -WORKDIR /build/packages/evm -COPY ./packages/evm ./ +WORKDIR /build +COPY crates/wasm/package.json ./crates/wasm/package.json +COPY packages/enclave-react ./packages/enclave-react +COPY packages/evm ./packages/evm RUN npm install -g corepack RUN corepack enable -RUN pnpm install && pnpm compile +RUN cd packages/evm && pnpm install && pnpm compile:contracts # Build stage -FROM rust:1.81 AS ciphernode-builder +FROM rust:1.85 AS ciphernode-builder # Force incremental ENV CARGO_INCREMENTAL=1 @@ -33,14 +35,14 @@ COPY crates/aggregator/Cargo.toml ./aggregator/Cargo.toml COPY crates/bfv-helpers/Cargo.toml ./bfv-helpers/Cargo.toml COPY crates/cli/Cargo.toml ./cli/Cargo.toml COPY crates/compute-provider/Cargo.toml ./compute-provider/Cargo.toml -COPY crates/enclaveup/Cargo.toml ./enclaveup/Cargo.toml COPY crates/config/Cargo.toml ./config/Cargo.toml COPY crates/crypto/Cargo.toml ./crypto/Cargo.toml COPY crates/data/Cargo.toml ./data/Cargo.toml +COPY crates/enclaveup/Cargo.toml ./enclaveup/Cargo.toml COPY crates/entrypoint/Cargo.toml ./entrypoint/Cargo.toml COPY crates/events/Cargo.toml ./events/Cargo.toml -COPY crates/evm/Cargo.toml ./evm/Cargo.toml COPY crates/evm-helpers/Cargo.toml ./evm-helpers/Cargo.toml +COPY crates/evm/Cargo.toml ./evm/Cargo.toml COPY crates/fhe/Cargo.toml ./fhe/Cargo.toml COPY crates/fs/Cargo.toml ./fs/Cargo.toml COPY crates/indexer/Cargo.toml ./indexer/Cargo.toml @@ -56,8 +58,6 @@ COPY crates/test-helpers/Cargo.toml ./test-helpers/Cargo.toml COPY crates/tests/Cargo.toml ./tests/Cargo.toml COPY crates/wasm/Cargo.toml ./wasm/Cargo.toml - -# COPY ./crates/entrypoint/build.rs ./entrypoint/build.rs RUN echo 'fn main() { println!("cargo:warning=dependency cache build"); }' > ./entrypoint/build.rs RUN echo 'fn main() { println!("cargo:warning=dependency cache build"); }' > ./cli/build.rs RUN for d in ./*/ ; do \ diff --git a/packages/evm/package.json b/packages/evm/package.json index dbcfae5280..9d5a6b4324 100644 --- a/packages/evm/package.json +++ b/packages/evm/package.json @@ -98,7 +98,8 @@ "scripts": { "clean": "rimraf ./artifacts ./cache ./coverage ./types ./dist ./coverage.json && pnpm typechain", "build": "pnpm compile", - "compile": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile && pnpm compile:scripts && pnpm compile:sdk", + "compile": "pnpm compile:contracts && pnpm compile:scripts && pnpm compile:sdk", + "compile:contracts": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile", "compile:scripts": "tsc -p tsconfig.json --noEmitOnError false --noCheck", "compile:sdk": "tsc -p ./src/tsconfig.json --noEmitOnError false --noCheck", "coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && pnpm typechain", From 7b3ae5eb247d29bb362c49b57fc74c5ccc1176a6 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 23:01:53 +0300 Subject: [PATCH 15/40] Update Dockerfile --- crates/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crates/Dockerfile b/crates/Dockerfile index d29636b230..edce6ffb1d 100644 --- a/crates/Dockerfile +++ b/crates/Dockerfile @@ -4,10 +4,13 @@ WORKDIR /build COPY crates/wasm/package.json ./crates/wasm/package.json COPY packages/enclave-react ./packages/enclave-react COPY packages/evm ./packages/evm +COPY pnpm-workspace.yaml . +COPY pnpm-lock.yaml . RUN npm install -g corepack RUN corepack enable +# We just need the contracts to be compiled here RUN cd packages/evm && pnpm install && pnpm compile:contracts # Build stage From 839d0da7dbb5b87a99a0771a7b1b1ac8ca82fc07 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 23:56:20 +0300 Subject: [PATCH 16/40] Fix up warnings --- crates/cli/src/cli.rs | 2 +- crates/config/src/app_config.rs | 6 --- .../entrypoint/src/start/aggregator_start.rs | 1 - crates/entrypoint/src/start/start.rs | 1 - crates/events/src/eventbus.rs | 2 +- crates/evm-helpers/src/contracts.rs | 5 +-- crates/evm-helpers/src/listener.rs | 2 +- crates/indexer/src/traits.rs | 4 +- crates/init/src/package_json.rs | 2 + crates/init/src/pkgman.rs | 2 + crates/net/src/bin/p2p_test.rs | 7 +--- crates/net/src/dialer.rs | 3 +- crates/net/src/network_manager.rs | 3 +- crates/net/src/network_peer.rs | 37 ++----------------- crates/sortition/src/index.rs | 2 +- packages/evm/src/sdk/event-listener.ts | 8 ++-- templates/default/tests/integration.spec.ts | 6 +++ 17 files changed, 27 insertions(+), 66 deletions(-) diff --git a/crates/cli/src/cli.rs b/crates/cli/src/cli.rs index efda4b88d2..f7cda6c2ee 100644 --- a/crates/cli/src/cli.rs +++ b/crates/cli/src/cli.rs @@ -6,7 +6,7 @@ use crate::nodes::{self, NodeCommands}; use crate::password::PasswordCommands; use crate::program::{self, ProgramCommands}; use crate::wallet::WalletCommands; -use crate::{config_set, init, net, nodes_purge, password, purge_all, rev, wallet}; +use crate::{config_set, init, net, password, purge_all, rev, wallet}; use crate::{print_env, start}; use anyhow::{bail, Result}; use clap::{command, ArgAction, Parser, Subcommand}; diff --git a/crates/config/src/app_config.rs b/crates/config/src/app_config.rs index 1e7d94dd9a..fd5e93e43f 100644 --- a/crates/config/src/app_config.rs +++ b/crates/config/src/app_config.rs @@ -241,12 +241,6 @@ impl AppConfig { self.node_def().quic_port } - /// Depricated - #[deprecated] - pub fn enable_mdns(&self) -> bool { - false - } - /// Get the config file path pub fn config_file(&self) -> PathBuf { self.paths.config_file() diff --git a/crates/entrypoint/src/start/aggregator_start.rs b/crates/entrypoint/src/start/aggregator_start.rs index 809d827c0b..89ef6707c7 100644 --- a/crates/entrypoint/src/start/aggregator_start.rs +++ b/crates/entrypoint/src/start/aggregator_start.rs @@ -88,7 +88,6 @@ pub async fn execute( config.peers(), &cipher, config.quic_port(), - config.enable_mdns(), repositories.libp2p_keypair(), ) .await?; diff --git a/crates/entrypoint/src/start/start.rs b/crates/entrypoint/src/start/start.rs index 730a8030aa..ca8ac82545 100644 --- a/crates/entrypoint/src/start/start.rs +++ b/crates/entrypoint/src/start/start.rs @@ -86,7 +86,6 @@ pub async fn execute( config.peers(), &cipher, config.quic_port(), - config.enable_mdns(), repositories.libp2p_keypair(), ) .await?; diff --git a/crates/events/src/eventbus.rs b/crates/events/src/eventbus.rs index 89aaedbdc5..62b0d0826f 100644 --- a/crates/events/src/eventbus.rs +++ b/crates/events/src/eventbus.rs @@ -242,7 +242,7 @@ impl Actor for HistoryCollector { impl Handler for HistoryCollector { type Result = E::Result; - fn handle(&mut self, msg: E, ctx: &mut Self::Context) -> Self::Result { + fn handle(&mut self, msg: E, _ctx: &mut Self::Context) -> Self::Result { self.history.push(msg); } } diff --git a/crates/evm-helpers/src/contracts.rs b/crates/evm-helpers/src/contracts.rs index 3541924400..6d40b76d71 100644 --- a/crates/evm-helpers/src/contracts.rs +++ b/crates/evm-helpers/src/contracts.rs @@ -5,11 +5,10 @@ use alloy::{ providers::fillers::{ ChainIdFiller, FillProvider, GasFiller, JoinFill, NonceFiller, WalletFiller, }, - providers::{Identity, Provider, ProviderBuilder, RootProvider, WalletProvider}, - rpc::types::{BlockNumberOrTag, TransactionReceipt}, + providers::{Identity, Provider, ProviderBuilder, RootProvider}, + rpc::types::TransactionReceipt, signers::local::PrivateKeySigner, sol, - transports::BoxTransport, }; use async_trait::async_trait; use eyre::Result; diff --git a/crates/evm-helpers/src/listener.rs b/crates/evm-helpers/src/listener.rs index 593529c70c..eb47ae8a59 100644 --- a/crates/evm-helpers/src/listener.rs +++ b/crates/evm-helpers/src/listener.rs @@ -89,7 +89,7 @@ impl EventListener { } pub async fn create_contract_listener(ws_url: &str, contract_address: &str) -> Result { - let provider = Arc::new(ProviderBuilder::new().on_builtin(ws_url).await?); + let provider = Arc::new(ProviderBuilder::new().connect(ws_url).await?); let address = contract_address.parse::
()?; let filter = Filter::new() .address(address) diff --git a/crates/indexer/src/traits.rs b/crates/indexer/src/traits.rs index 0802134ac3..5d107d21f1 100644 --- a/crates/indexer/src/traits.rs +++ b/crates/indexer/src/traits.rs @@ -1,8 +1,6 @@ -use std::fmt::Display; - use async_trait::async_trait; use serde::{de::DeserializeOwned, Serialize}; -use tokio::task::JoinHandle; +use std::fmt::Display; /// Trait for injectable DataStore. Note the implementor must manage interior mutability #[async_trait] diff --git a/crates/init/src/package_json.rs b/crates/init/src/package_json.rs index e493564ecd..350354cd46 100644 --- a/crates/init/src/package_json.rs +++ b/crates/init/src/package_json.rs @@ -4,6 +4,7 @@ use anyhow::Result; use serde_json::{Map, Value}; use tokio::fs; +#[allow(dead_code)] #[derive(Debug, Clone)] pub enum DependencyType { Dependencies, @@ -32,6 +33,7 @@ pub async fn get_version_from_package_json(file_path: &PathBuf) -> Result Result<()> { match dep_type { "dependencies" | "devDependencies" | "peerDependencies" => Ok(()), diff --git a/crates/init/src/pkgman.rs b/crates/init/src/pkgman.rs index 067cef7828..3d106afe9f 100644 --- a/crates/init/src/pkgman.rs +++ b/crates/init/src/pkgman.rs @@ -63,6 +63,7 @@ pub struct PkgMan { cwd: PathBuf, } +#[allow(dead_code)] pub enum PkgManKind { NPM, PNPM, @@ -87,6 +88,7 @@ impl PkgMan { self } + #[allow(dead_code)] pub async fn available(&self) -> bool { self.strategy.available().await } diff --git a/crates/net/src/bin/p2p_test.rs b/crates/net/src/bin/p2p_test.rs index c9a2b1072b..252f9e2393 100644 --- a/crates/net/src/bin/p2p_test.rs +++ b/crates/net/src/bin/p2p_test.rs @@ -32,15 +32,10 @@ async fn main() -> Result<()> { .ok() .and_then(|p| p.parse::().ok()); - let enable_mdns = env::var("ENABLE_MDNS") - .unwrap_or("false".to_string()) - .parse::() - .unwrap(); - let peers: Vec = dial_to.iter().cloned().collect(); let id = libp2p::identity::Keypair::generate_ed25519(); - let mut peer = NetworkPeer::new(&id, peers, udp_port, "test-topic", enable_mdns)?; + let mut peer = NetworkPeer::new(&id, peers, udp_port, "test-topic")?; // Extract input and outputs let tx = peer.tx(); diff --git a/crates/net/src/dialer.rs b/crates/net/src/dialer.rs index bd5274132d..e0539688c9 100644 --- a/crates/net/src/dialer.rs +++ b/crates/net/src/dialer.rs @@ -203,7 +203,8 @@ fn resolve_ipv4(domain: &str) -> Result { Ok(addr.ip().to_string()) } -fn resolve_ipv6(domain: &str) -> Result { +// For if we wish to resolve ipv6 as well (currently disabled) +fn _resolve_ipv6(domain: &str) -> Result { let addr = format!("{}:0", domain) .to_socket_addrs()? .find(|addr| addr.ip().is_ipv6()) diff --git a/crates/net/src/network_manager.rs b/crates/net/src/network_manager.rs index 5fb4bc228e..5f13c1cbda 100644 --- a/crates/net/src/network_manager.rs +++ b/crates/net/src/network_manager.rs @@ -85,7 +85,6 @@ impl NetworkManager { peers: Vec, cipher: &Arc, quic_port: u16, - enable_mdns: bool, repository: Repository>, ) -> Result<(Addr, tokio::task::JoinHandle>, String)> { let topic = "tmp-enclave-gossip-topic"; @@ -101,7 +100,7 @@ impl NetworkManager { // Create peer from keypair let keypair: libp2p::identity::Keypair = ed25519::Keypair::try_from_bytes(&mut bytes)?.try_into()?; - let mut peer = NetworkPeer::new(&keypair, peers, Some(quic_port), topic, enable_mdns)?; + let mut peer = NetworkPeer::new(&keypair, peers, Some(quic_port), topic)?; // Setup and start network manager let rx = peer.rx(); diff --git a/crates/net/src/network_peer.rs b/crates/net/src/network_peer.rs index d801182bca..b8bbf2f88d 100644 --- a/crates/net/src/network_peer.rs +++ b/crates/net/src/network_peer.rs @@ -6,8 +6,7 @@ use libp2p::{ identify::{self, Behaviour as IdentifyBehaviour}, identity::Keypair, kad::{store::MemoryStore, Behaviour as KademliaBehaviour}, - mdns, - swarm::{behaviour::toggle::Toggle, NetworkBehaviour, SwarmEvent}, + swarm::{NetworkBehaviour, SwarmEvent}, Swarm, }; use std::hash::{Hash, Hasher}; @@ -25,7 +24,6 @@ pub struct NodeBehaviour { gossipsub: gossipsub::Behaviour, kademlia: KademliaBehaviour, connection_limits: connection_limits::Behaviour, - mdns: Toggle, identify: IdentifyBehaviour, } @@ -54,7 +52,6 @@ impl NetworkPeer { peers: Vec, udp_port: Option, topic: &str, - enable_mdns: bool, ) -> Result { let (event_tx, _) = broadcast::channel(100); // TODO : tune this param let (cmd_tx, cmd_rx) = mpsc::channel(100); // TODO : tune this param @@ -62,7 +59,7 @@ impl NetworkPeer { let swarm = libp2p::SwarmBuilder::with_existing_identity(id.clone()) .with_tokio() .with_quic() - .with_behaviour(|key| create_mdns_kad_behaviour(enable_mdns, key))? + .with_behaviour(|key| create_kad_behaviour(key))? .build(); // TODO: Use topics to manage network traffic instead of just using a single topic @@ -158,8 +155,7 @@ impl NetworkPeer { } /// Create the libp2p behaviour -fn create_mdns_kad_behaviour( - enable_mdns: bool, +fn create_kad_behaviour( key: &Keypair, ) -> std::result::Result> { let connection_limits = connection_limits::Behaviour::new(ConnectionLimits::default()); @@ -186,22 +182,12 @@ fn create_mdns_kad_behaviour( gossipsub_config, )?; - let mdns = if enable_mdns { - Toggle::from(Some(mdns::tokio::Behaviour::new( - mdns::Config::default(), - key.public().to_peer_id(), - )?)) - } else { - Toggle::from(None) - }; - Ok(NodeBehaviour { gossipsub, kademlia: KademliaBehaviour::new( key.public().to_peer_id(), MemoryStore::new(key.public().to_peer_id()), ), - mdns, connection_limits, identify: identify_config, }) @@ -253,23 +239,6 @@ async fn process_swarm_event( debug!("Kademlia event: {:?}", e); } - SwarmEvent::Behaviour(NodeBehaviourEvent::Mdns(mdns::Event::Discovered(list))) => { - for (peer_id, _multiaddr) in list { - trace!("mDNS discovered a new peer: {peer_id}"); - swarm.behaviour_mut().gossipsub.add_explicit_peer(&peer_id); - } - } - - SwarmEvent::Behaviour(NodeBehaviourEvent::Mdns(mdns::Event::Expired(list))) => { - for (peer_id, _multiaddr) in list { - trace!("mDNS discover peer has expired: {peer_id}"); - swarm - .behaviour_mut() - .gossipsub - .remove_explicit_peer(&peer_id); - } - } - SwarmEvent::Behaviour(NodeBehaviourEvent::Gossipsub(gossipsub::Event::Message { propagation_source: peer_id, message_id: id, diff --git a/crates/sortition/src/index.rs b/crates/sortition/src/index.rs index 3c2bcf0e20..b2fd3657dc 100644 --- a/crates/sortition/src/index.rs +++ b/crates/sortition/src/index.rs @@ -15,7 +15,7 @@ impl IndexSortition { } } - fn get_committee(&mut self) -> Vec { + fn _get_committee(&mut self) -> Vec { // Initialize a vector with indices of nodes as elements let mut leaf_indices: Vec = (0..self.num_nodes).collect(); // Initialize an empty vector to store the committee diff --git a/packages/evm/src/sdk/event-listener.ts b/packages/evm/src/sdk/event-listener.ts index 68df1c9678..e129f33a8b 100644 --- a/packages/evm/src/sdk/event-listener.ts +++ b/packages/evm/src/sdk/event-listener.ts @@ -22,7 +22,7 @@ export class EventListener implements SDKEventEmitter { constructor( private publicClient: PublicClient, private config: EventListenerConfig = {}, - ) {} + ) { } /** * Listen to specific contract events @@ -56,18 +56,16 @@ export class EventListener implements SDKEventEmitter { eventName: eventType as string, fromBlock: this.config.fromBlock, onLogs(logs: Log[]) { - console.log(`Log received for ${watcherKey}`, logs); for (let i = 0; i < logs.length; i++) { const log = logs[i]; - console.log("Got log!"); const event: EnclaveEvent = { type: eventType, data: (log as unknown as { args: unknown }) .args as T extends EnclaveEventType ? EnclaveEventData[T] : T extends RegistryEventType - ? RegistryEventData[T] - : unknown, + ? RegistryEventData[T] + : unknown, log, timestamp: new Date(), blockNumber: log.blockNumber ?? BigInt(0), diff --git a/templates/default/tests/integration.spec.ts b/templates/default/tests/integration.spec.ts index 2ee6504b47..2d8f07ac99 100644 --- a/templates/default/tests/integration.spec.ts +++ b/templates/default/tests/integration.spec.ts @@ -238,6 +238,12 @@ async function main() { ); }); + const plaintextEvent = await waitForEvent( + EnclaveEventType.PLAINTEXT_OUTPUT_PUBLISHED, + ); + + assert.strictEqual(plaintextEvent.data.plaintextOutput, "0x12345678"); + console.log("It worked"); process.exit(0); From 6eeed76f51bb7dff98f3568f7d205eece661a8e0 Mon Sep 17 00:00:00 2001 From: ryardley Date: Fri, 27 Jun 2025 23:57:42 +0300 Subject: [PATCH 17/40] Linting --- packages/evm/src/sdk/event-listener.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/evm/src/sdk/event-listener.ts b/packages/evm/src/sdk/event-listener.ts index e129f33a8b..11275f382a 100644 --- a/packages/evm/src/sdk/event-listener.ts +++ b/packages/evm/src/sdk/event-listener.ts @@ -22,7 +22,7 @@ export class EventListener implements SDKEventEmitter { constructor( private publicClient: PublicClient, private config: EventListenerConfig = {}, - ) { } + ) {} /** * Listen to specific contract events @@ -64,8 +64,8 @@ export class EventListener implements SDKEventEmitter { .args as T extends EnclaveEventType ? EnclaveEventData[T] : T extends RegistryEventType - ? RegistryEventData[T] - : unknown, + ? RegistryEventData[T] + : unknown, log, timestamp: new Date(), blockNumber: log.blockNumber ?? BigInt(0), From 3104237340ff95be882202c3f4d30d53fb9cf30a Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 00:14:04 +0300 Subject: [PATCH 18/40] Fix warnings --- crates/support/app/src/main.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/crates/support/app/src/main.rs b/crates/support/app/src/main.rs index c7521b9c50..da35901ed0 100644 --- a/crates/support/app/src/main.rs +++ b/crates/support/app/src/main.rs @@ -1,12 +1,7 @@ -use actix_web::{ - http::Method, middleware::Logger, web, App, HttpResponse, HttpServer, Result as ActixResult, -}; -use anyhow::bail; +use actix_web::{middleware::Logger, web, App, HttpResponse, HttpServer, Result as ActixResult}; use e3_compute_provider::FHEInputs; -#[cfg(feature = "risc0")] -use e3_support_host::Risc0Output; -use e3_support_types::{ComputeRequest, ComputeResponse, WebhookPayload}; -use serde::{Deserialize, Deserializer, Serialize}; +use e3_support_types::{ComputeRequest, WebhookPayload}; +use serde::Serialize; #[derive(Serialize, Debug)] struct ProcessingResponse { From c454a068753b9f7576da63de4dad7ab00cc6e80e Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 00:20:54 +0300 Subject: [PATCH 19/40] Update viem dependency --- examples/CRISP/apps/client/package.json | 4 +- packages/evm/package.json | 2 +- pnpm-lock.yaml | 484 +++++++++++++++--------- templates/default/client/package.json | 2 +- templates/default/package.json | 3 +- 5 files changed, 317 insertions(+), 178 deletions(-) diff --git a/examples/CRISP/apps/client/package.json b/examples/CRISP/apps/client/package.json index cf3b9ff4d8..b829c20d3e 100644 --- a/examples/CRISP/apps/client/package.json +++ b/examples/CRISP/apps/client/package.json @@ -36,7 +36,7 @@ "react-markdown": "^9.0.1", "react-router-dom": "^6.22.3", "react-syntax-highlighter": "^15.5.0", - "viem": "^2.30.6", + "viem": "2.30.6", "vite-plugin-node-polyfills": "^0.22.0", "vite-plugin-top-level-await": "^1.4.1", "vite-tsconfig-paths": "^4.3.2", @@ -64,4 +64,4 @@ "vite-plugin-wasm": "^3.3.0" }, "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" -} \ No newline at end of file +} diff --git a/packages/evm/package.json b/packages/evm/package.json index 9d5a6b4324..0bbbe81e61 100644 --- a/packages/evm/package.json +++ b/packages/evm/package.json @@ -125,7 +125,7 @@ "@excubiae/contracts": "^0.4.0", "@gnosis-guild/e3-wasm": "workspace:*", "solady": "^0.1.13", - "viem": "^2.30.6" + "viem": "2.30.6" }, "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a88553c4ab..db1669925a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,10 +77,10 @@ importers: devDependencies: '@nomicfoundation/hardhat-chai-matchers': specifier: ^2.0.0 - version: 2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + version: 2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-ethers': specifier: ^3.0.0 - version: 3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + version: 3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-foundry': specifier: ^1.1.2 version: 1.1.4(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) @@ -89,13 +89,13 @@ importers: version: 0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) '@nomicfoundation/hardhat-ignition-ethers': specifier: ^0.15.0 - version: 0.15.13(@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@nomicfoundation/ignition-core@0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + version: 0.15.13(@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@nomicfoundation/ignition-core@0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-network-helpers': specifier: ^1.0.0 version: 1.0.13(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-toolbox': specifier: ^5.0.0 - version: 5.0.0(d1a9b5350250b0c212d224a0066f41ff) + version: 5.0.0(62dbc94741f8fd6a7d8599a31638421d) '@nomicfoundation/hardhat-verify': specifier: ^2.0.0 version: 2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) @@ -107,16 +107,16 @@ importers: version: 1.52.0 '@synthetixio/synpress': specifier: ^4.1.0 - version: 4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + version: 4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) '@synthetixio/synpress-cache': specifier: ^0.0.12 version: 0.0.12(@swc/core@1.12.7)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3) '@typechain/ethers-v6': specifier: ^0.5.0 - version: 0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + version: 0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) '@typechain/hardhat': specifier: ^9.0.0 - version: 9.1.0(@typechain/ethers-v6@0.5.1(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3)) + version: 9.1.0(@typechain/ethers-v6@0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3)) '@types/chai': specifier: ^4.2.0 version: 4.3.20 @@ -194,7 +194,7 @@ importers: version: 1.10.0 connectkit: specifier: ^1.9.0 - version: 1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) + version: 1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) ethers: specifier: ^6.12.0 version: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -214,8 +214,8 @@ importers: specifier: ^15.5.0 version: 15.6.1(react@18.3.1) viem: - specifier: ^2.30.6 - version: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + specifier: 2.30.6 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) vite-plugin-node-polyfills: specifier: ^0.22.0 version: 0.22.0(rollup@4.44.1)(vite@5.4.19(@types/node@22.15.33)) @@ -227,7 +227,7 @@ importers: version: 4.3.2(typescript@5.8.3)(vite@5.4.19(@types/node@22.15.33)) wagmi: specifier: ^2.14.16 - version: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + version: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) devDependencies: '@tailwindcss/typography': specifier: ^0.5.12 @@ -321,8 +321,8 @@ importers: specifier: ^0.1.13 version: 0.1.22 viem: - specifier: ^2.30.6 - version: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + specifier: 2.30.6 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) devDependencies: '@nomicfoundation/hardhat-chai-matchers': specifier: ^2.0.2 @@ -460,8 +460,8 @@ importers: specifier: ^17.0.33 version: 17.0.33 viem: - specifier: ^2.30.6 - version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.51) + specifier: 2.30.6 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) yargs: specifier: ^18.0.0 version: 18.0.0 @@ -550,9 +550,6 @@ importers: typescript: specifier: '>=4.5.0' version: 5.8.3 - viem: - specifier: ^2.30.6 - version: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) wait-on: specifier: ^8.0.3 version: 8.0.3 @@ -573,10 +570,10 @@ importers: version: 5.81.2(react@18.3.1) '@wagmi/core': specifier: ^2.14.16 - version: 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) + version: 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) connectkit: specifier: ^1.9.0 - version: 1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) + version: 1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) react: specifier: ^18.2.0 version: 18.3.1 @@ -584,11 +581,11 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) viem: - specifier: ^2.30.6 - version: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + specifier: 2.30.6 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) wagmi: specifier: ^2.14.16 - version: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + version: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) devDependencies: '@tailwindcss/typography': specifier: ^0.5.12 @@ -2460,6 +2457,10 @@ packages: 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} @@ -7104,6 +7105,14 @@ packages: typescript: optional: true + ox@0.7.1: + resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + ox@0.8.1: resolution: {integrity: sha512-e+z5epnzV+Zuz91YYujecW8cF01mzmrUtWotJ0oEPym/G82uccs7q0WDHTYL3eiONbTUEvcZrptAKLgTBD3u2A==} peerDependencies: @@ -8895,6 +8904,14 @@ packages: typescript: optional: true + viem@2.30.6: + resolution: {integrity: sha512-N3vGy3pZ+EVgQRuWqQhZPFXxQE8qMRrBd3uM+KLc1Ub2w6+vkyr7umeWQCM4c+wlsCdByUgh2630MDMLquMtpg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + viem@2.31.4: resolution: {integrity: sha512-0UZ/asvzl6p44CIBRDbwEcn3HXIQQurBZcMo5qmLhQ8s27Ockk+RYohgTLlpLvkYs8/t4UUEREAbHLuek1kXcw==} peerDependencies: @@ -9283,7 +9300,7 @@ snapshots: dependencies: comlink: 4.4.2 commander: 12.1.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) fflate: 0.8.2 pako: 2.1.0 tslib: 2.8.1 @@ -9294,7 +9311,7 @@ snapshots: dependencies: comlink: 4.4.2 commander: 12.1.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) fflate: 0.8.2 pako: 2.1.0 tslib: 2.8.1 @@ -9319,10 +9336,10 @@ snapshots: '@babel/helpers': 7.27.6 '@babel/parser': 7.27.7 '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) '@babel/types': 7.27.7 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9363,7 +9380,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.7) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9380,7 +9397,7 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -9401,14 +9418,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.27.7 - '@babel/types': 7.27.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) '@babel/types': 7.27.7 transitivePeerDependencies: - supports-color @@ -9423,9 +9433,9 @@ snapshots: '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9440,7 +9450,7 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9449,13 +9459,13 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) '@babel/types': 7.27.7 transitivePeerDependencies: - supports-color @@ -9473,7 +9483,7 @@ snapshots: '@babel/helper-wrap-function@7.27.1': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) '@babel/types': 7.27.7 transitivePeerDependencies: - supports-color @@ -9491,7 +9501,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9518,7 +9528,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9562,14 +9572,14 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.7) - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.7)': dependencies: '@babel/core': 7.27.7 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.7) transitivePeerDependencies: @@ -9608,7 +9618,7 @@ snapshots: '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.7) - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9623,7 +9633,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9672,7 +9682,7 @@ snapshots: '@babel/core': 7.27.7 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9718,7 +9728,7 @@ snapshots: '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.7) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9758,7 +9768,7 @@ snapshots: '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-destructuring': 7.27.7(@babel/core@7.27.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.7) - '@babel/traverse': 7.27.7 + '@babel/traverse': 7.27.7(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -9841,7 +9851,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.7) '@babel/types': 7.27.7 @@ -10055,19 +10065,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.7 '@babel/parser': 7.27.7 '@babel/types': 7.27.7 - debug: 4.4.1(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/traverse@7.27.7': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.7 - '@babel/template': 7.27.2 - '@babel/types': 7.27.7 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10276,10 +10274,11 @@ snapshots: '@depay/web3-blockchains@9.8.6': {} - '@depay/web3-client@10.18.6(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)': + '@depay/web3-client@10.18.6(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@depay/solana-web3.js': 1.98.2 '@depay/web3-blockchains': 9.8.6 + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@depay/web3-mock-evm@14.19.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: @@ -10309,7 +10308,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.27.1(supports-color@5.5.0) '@babel/runtime': 7.27.6 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 @@ -10604,7 +10603,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -10931,7 +10930,7 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11227,7 +11226,7 @@ snapshots: bufferutil: 4.0.9 cross-fetch: 4.1.0 date-fns: 2.30.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) eciesjs: 0.4.15 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -11251,7 +11250,7 @@ snapshots: '@paulmillr/qr': 0.2.1 bowser: 2.11.0 cross-fetch: 4.1.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) eciesjs: 0.4.15 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -11274,7 +11273,7 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) semver: 7.7.2 superstruct: 1.0.4 transitivePeerDependencies: @@ -11287,7 +11286,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.2 uuid: 9.0.1 @@ -11301,7 +11300,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.2 uuid: 9.0.1 @@ -11455,6 +11454,10 @@ snapshots: 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 @@ -11530,40 +11533,42 @@ snapshots: '@nomicfoundation/edr-linux-x64-musl': 0.11.2 '@nomicfoundation/edr-win32-x64-msvc': 0.11.2 - '@nomicfoundation/hardhat-chai-matchers@2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-chai-matchers@2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.9(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-ethers': 3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@types/chai-as-promised': 7.1.8 chai: 4.5.0 chai-as-promised: 7.1.2(chai@4.5.0) deep-eql: 4.1.4 - ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) ordinal: 1.0.3 - '@nomicfoundation/hardhat-chai-matchers@2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-chai-matchers@2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-ethers': 3.0.9(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@types/chai-as-promised': 7.1.8 chai: 4.5.0 chai-as-promised: 7.1.2(chai@4.5.0) deep-eql: 4.1.4 - hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) + ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) ordinal: 1.0.3 - '@nomicfoundation/hardhat-ethers@3.0.9(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': dependencies: - debug: 4.4.1(supports-color@8.1.1) - ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) + debug: 4.4.1(supports-color@5.5.0) + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) lodash.isequal: 4.5.0 transitivePeerDependencies: - supports-color - '@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-ethers@3.0.9(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': dependencies: - debug: 4.4.1(supports-color@8.1.1) - hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) + debug: 4.4.1(supports-color@5.5.0) + ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) lodash.isequal: 4.5.0 transitivePeerDependencies: - supports-color @@ -11573,11 +11578,12 @@ snapshots: hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) picocolors: 1.1.1 - '@nomicfoundation/hardhat-ignition-ethers@0.15.13(@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@nomicfoundation/ignition-core@0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-ignition-ethers@0.15.13(@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@nomicfoundation/ignition-core@0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))': dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-ethers': 3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-ignition': 0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) '@nomicfoundation/ignition-core': 0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) '@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': @@ -11586,7 +11592,7 @@ snapshots: '@nomicfoundation/ignition-core': 0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@nomicfoundation/ignition-ui': 0.15.11 chalk: 4.1.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) fs-extra: 10.1.0 hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) json5: 2.2.3 @@ -11646,19 +11652,20 @@ snapshots: typechain: 8.3.2(typescript@5.8.3) typescript: 5.8.3 - '@nomicfoundation/hardhat-toolbox@5.0.0(d1a9b5350250b0c212d224a0066f41ff)': + '@nomicfoundation/hardhat-toolbox@5.0.0(62dbc94741f8fd6a7d8599a31638421d)': dependencies: - '@nomicfoundation/hardhat-chai-matchers': 2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) - '@nomicfoundation/hardhat-ethers': 3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) - '@nomicfoundation/hardhat-ignition-ethers': 0.15.13(@nomicfoundation/hardhat-ethers@3.0.9(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@nomicfoundation/ignition-core@0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-chai-matchers': 2.0.9(@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-ethers': 3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-ignition-ethers': 0.15.13(@nomicfoundation/hardhat-ethers@3.0.9(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-ignition@0.15.12(@nomicfoundation/hardhat-verify@2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(@nomicfoundation/ignition-core@0.15.12(bufferutil@4.0.9)(utf-8-validate@5.0.10))(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-network-helpers': 1.0.13(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-verify': 2.0.14(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) - '@typechain/ethers-v6': 0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) - '@typechain/hardhat': 9.1.0(@typechain/ethers-v6@0.5.1(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3)) + '@typechain/ethers-v6': 0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + '@typechain/hardhat': 9.1.0(@typechain/ethers-v6@0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3)) '@types/chai': 4.3.20 '@types/mocha': 10.0.10 '@types/node': 22.15.33 chai: 4.5.0 + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) hardhat-gas-reporter: 1.0.10(bufferutil@4.0.9)(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) solidity-coverage: 0.8.16(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)) @@ -11671,7 +11678,7 @@ snapshots: '@ethersproject/abi': 5.8.0 '@ethersproject/address': 5.8.0 cbor: 8.1.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) lodash.clonedeep: 4.5.0 picocolors: 1.1.1 @@ -11686,7 +11693,7 @@ snapshots: '@ethersproject/abi': 5.8.0 '@ethersproject/address': 5.8.0 cbor: 8.1.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) lodash.clonedeep: 4.5.0 picocolors: 1.1.1 @@ -11701,7 +11708,7 @@ snapshots: '@ethersproject/address': 5.6.1 '@nomicfoundation/solidity-analyzer': 0.1.2 cbor: 9.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) fs-extra: 10.1.0 immer: 10.0.2 @@ -11789,7 +11796,7 @@ snapshots: dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -11800,7 +11807,7 @@ snapshots: dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - bufferutil - typescript @@ -11813,7 +11820,7 @@ snapshots: '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10) '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11959,7 +11966,7 @@ snapshots: '@walletconnect/logger': 2.1.2 '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12012,7 +12019,7 @@ snapshots: '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) bs58: 6.0.0 valtio: 1.13.2(@types/react@18.3.23)(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12137,7 +12144,7 @@ snapshots: '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - bufferutil - typescript @@ -12170,8 +12177,8 @@ snapshots: '@scure/bip32@1.6.2': dependencies: - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/curves': 1.8.2 + '@noble/hashes': 1.7.2 '@scure/base': 1.2.6 '@scure/bip32@1.7.0': @@ -12197,7 +12204,7 @@ snapshots: '@scure/bip39@1.5.4': dependencies: - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.2 '@scure/base': 1.2.6 '@scure/bip39@1.6.0': @@ -12504,9 +12511,9 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@synthetixio/ethereum-wallet-mock@0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': + '@synthetixio/ethereum-wallet-mock@0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': dependencies: - '@depay/web3-client': 10.18.6(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6) + '@depay/web3-client': 10.18.6(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@depay/web3-mock': 14.19.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@depay/web3-mock-evm': 14.19.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@playwright/test': 1.52.0 @@ -12589,10 +12596,10 @@ snapshots: - typescript - utf-8-validate - '@synthetixio/synpress@4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': + '@synthetixio/synpress@4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': dependencies: '@playwright/test': 1.52.0 - '@synthetixio/ethereum-wallet-mock': 0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + '@synthetixio/ethereum-wallet-mock': 0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) '@synthetixio/synpress-cache': 0.0.12(@swc/core@1.12.7)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3) '@synthetixio/synpress-core': 0.0.12(@playwright/test@1.52.0) '@synthetixio/synpress-metamask': 0.0.12(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) @@ -12675,6 +12682,14 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@typechain/ethers-v6@0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3)': + dependencies: + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.8.3) + typechain: 8.3.2(typescript@5.8.3) + typescript: 5.8.3 + '@typechain/ethers-v6@0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3)': dependencies: ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -12683,19 +12698,20 @@ snapshots: typechain: 8.3.2(typescript@5.8.3) typescript: 5.8.3 - '@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))': + '@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))': dependencies: - '@typechain/ethers-v6': 0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) - ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@typechain/ethers-v6': 0.5.1(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) fs-extra: 9.1.0 - hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) + hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) typechain: 8.3.2(typescript@5.8.3) - '@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))': + '@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(hardhat@2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))': dependencies: '@typechain/ethers-v6': 0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + ethers: 6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) fs-extra: 9.1.0 - hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) + hardhat: 2.25.0(bufferutil@4.0.9)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@20.10.4)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) typechain: 8.3.2(typescript@5.8.3) '@types/acorn@4.0.6': @@ -12945,7 +12961,7 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) eslint: 8.57.1 optionalDependencies: typescript: 5.8.3 @@ -12961,7 +12977,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.8.3) optionalDependencies: @@ -12975,7 +12991,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -13027,16 +13043,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@wagmi/connectors@5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)': + '@wagmi/connectors@5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)': dependencies: '@coinbase/wallet-sdk': 4.3.3 '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) + '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) '@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + optionalDependencies: + typescript: 5.8.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/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - ioredis + - react + - supports-color + - uploadthing + - utf-8-validate + - zod + + '@wagmi/connectors@5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)': + dependencies: + '@coinbase/wallet-sdk': 4.3.3 + '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -13105,11 +13160,26 @@ snapshots: - utf-8-validate - zod - '@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))': + '@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.8.3) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + zustand: 5.0.0(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) + optionalDependencies: + '@tanstack/query-core': 5.81.2 + typescript: 5.8.3 + transitivePeerDependencies: + - '@types/react' + - immer + - react + - use-sync-external-store + + '@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))': + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7(typescript@5.8.3) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) zustand: 5.0.0(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) optionalDependencies: '@tanstack/query-core': 5.81.2 @@ -13746,7 +13816,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -14039,7 +14109,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -14519,12 +14589,12 @@ snapshots: ini: 1.3.8 proto-list: 1.2.4 - connectkit@1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): + connectkit@1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): dependencies: '@tanstack/react-query': 5.81.2(react@18.3.1) buffer: 6.0.3 detect-browser: 5.3.0 - family: 0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) + family: 0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) framer-motion: 6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) qrcode: 1.5.4 react: 18.3.1 @@ -14533,18 +14603,18 @@ snapshots: react-use-measure: 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) resize-observer-polyfill: 1.5.1 styled-components: 5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) transitivePeerDependencies: - '@babel/core' - react-is - connectkit@1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): + connectkit@1.9.1(@babel/core@7.27.7)(@tanstack/react-query@5.81.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): dependencies: '@tanstack/react-query': 5.81.2(react@18.3.1) buffer: 6.0.3 detect-browser: 5.3.0 - family: 0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) + family: 0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)) framer-motion: 6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) qrcode: 1.5.4 react: 18.3.1 @@ -14553,8 +14623,8 @@ snapshots: react-use-measure: 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) resize-observer-polyfill: 1.5.1 styled-components: 5.3.11(@babel/core@7.27.7)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) transitivePeerDependencies: - '@babel/core' - react-is @@ -15307,7 +15377,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -15615,7 +15685,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -15658,19 +15728,19 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - family@0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): + family@0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) - family@0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): + family@0.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)): optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + wagmi: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) fast-deep-equal@3.1.3: {} @@ -15752,7 +15822,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -15805,7 +15875,7 @@ snapshots: follow-redirects@1.15.9(debug@4.4.1): optionalDependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) for-each@0.3.5: dependencies: @@ -16150,7 +16220,7 @@ snapshots: axios: 0.21.4(debug@4.4.1) chalk: 4.1.2 chokidar: 3.6.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) enquirer: 2.4.1 ethers: 5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) form-data: 4.0.3 @@ -16205,7 +16275,7 @@ snapshots: lodash: 4.17.21 markdown-table: 2.0.0 sha1: 1.1.1 - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - bufferutil - debug @@ -16228,7 +16298,7 @@ snapshots: boxen: 5.1.2 chokidar: 4.0.3 ci-info: 2.0.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) enquirer: 2.4.1 env-paths: 2.2.1 ethereum-cryptography: 1.2.0 @@ -16279,7 +16349,7 @@ snapshots: boxen: 5.1.2 chokidar: 4.0.3 ci-info: 2.0.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) enquirer: 2.4.1 env-paths: 2.2.1 ethereum-cryptography: 1.2.0 @@ -16566,7 +16636,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -17720,7 +17790,7 @@ snapshots: micromark@3.2.0: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) decode-named-character-reference: 1.2.0 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -17742,7 +17812,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -18187,10 +18257,10 @@ snapshots: ox@0.6.7(typescript@5.8.3)(zod@3.25.67): dependencies: '@adraffy/ens-normalize': 1.11.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/bip32': 1.6.2 - '@scure/bip39': 1.5.4 + '@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.8.3)(zod@3.25.67) eventemitter3: 5.0.1 optionalDependencies: @@ -18198,7 +18268,7 @@ snapshots: transitivePeerDependencies: - zod - ox@0.8.1(typescript@5.8.3)(zod@3.22.4): + ox@0.7.1(typescript@5.8.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.0 '@noble/ciphers': 1.3.0 @@ -18213,6 +18283,21 @@ snapshots: transitivePeerDependencies: - zod + ox@0.7.1(typescript@5.8.3)(zod@3.25.67): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@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.8.3)(zod@3.25.67) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - zod + ox@0.8.1(typescript@5.8.3)(zod@3.25.67): dependencies: '@adraffy/ens-normalize': 1.11.0 @@ -19006,7 +19091,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -19088,7 +19173,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -19881,7 +19966,7 @@ snapshots: bundle-require: 4.2.1(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 @@ -19929,7 +20014,7 @@ snapshots: typechain@8.3.2(typescript@5.8.3): dependencies: '@types/prettier': 2.7.3 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) fs-extra: 7.0.1 glob: 7.1.7 js-sha3: 0.8.0 @@ -20268,15 +20353,32 @@ snapshots: - utf-8-validate - zod - viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: - '@noble/curves': 1.9.2 + '@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.8.3)(zod@3.22.4) isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.8.1(typescript@5.8.3)(zod@3.22.4) + ox: 0.7.1(typescript@5.8.3)(zod@3.22.4) + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67): + 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.8.3)(zod@3.25.67) + isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.7.1(typescript@5.8.3)(zod@3.25.67) ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.8.3 @@ -20343,7 +20445,7 @@ snapshots: vite-tsconfig-paths@4.3.2(typescript@5.8.3)(vite@5.4.19(@types/node@22.15.33)): dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.1(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: @@ -20367,14 +20469,52 @@ snapshots: vscode-textmate@8.0.0: {} - wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67): + wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67): dependencies: '@tanstack/react-query': 5.81.2(react@18.3.1) - '@wagmi/connectors': 5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) - '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) + '@wagmi/connectors': 5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) react: 18.3.1 use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + optionalDependencies: + typescript: 5.8.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/kv' + - aws4fetch + - bufferutil + - db0 + - encoding + - immer + - ioredis + - supports-color + - uploadthing + - utf-8-validate + - zod + + wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67): + dependencies: + '@tanstack/react-query': 5.81.2(react@18.3.1) + '@wagmi/connectors': 5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) + react: 18.3.1 + use-sync-external-store: 1.4.0(react@18.3.1) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: diff --git a/templates/default/client/package.json b/templates/default/client/package.json index 2e8fc7e7f8..fb4bde30e5 100644 --- a/templates/default/client/package.json +++ b/templates/default/client/package.json @@ -24,7 +24,7 @@ "connectkit": "^1.9.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "viem": "^2.30.6", + "viem": "2.30.6", "wagmi": "^2.14.16" }, "devDependencies": { diff --git a/templates/default/package.json b/templates/default/package.json index 8a6e6dd415..b64748fd8d 100644 --- a/templates/default/package.json +++ b/templates/default/package.json @@ -19,7 +19,7 @@ "@gnosis-guild/enclave": "workspace:*", "@types/yargs": "^17.0.33", "yargs": "^18.0.0", - "viem": "^2.30.6" + "viem": "2.30.6" }, "devDependencies": { "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", @@ -50,7 +50,6 @@ "typechain": "^8.3.0", "typed-rpc": "^6.1.1", "typescript": ">=4.5.0", - "viem": "^2.30.6", "wait-on": "^8.0.3" } } From e2908d12683f216a79295b6d80f9f304b983e947 Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 02:16:37 +0300 Subject: [PATCH 20/40] Get test to pass --- templates/default/server/index.ts | 43 +++++++++++++++++++++ templates/default/tests/integration.spec.ts | 27 +++++++++---- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/templates/default/server/index.ts b/templates/default/server/index.ts index 160a92ea2c..772b4ed7d8 100644 --- a/templates/default/server/index.ts +++ b/templates/default/server/index.ts @@ -95,17 +95,55 @@ async function runProgram(e3Id: bigint): Promise { } } +function defer() { + let resolve: () => void = () => {}; + let reject: (e?: any) => void = () => {}; + + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + + return { + promise, + resolve, + reject, + }; +} + +type Defer = ReturnType; + +const currentlyActivating = new Map(); + +function getActivationDefer(e3Id: bigint): Defer { + let d = currentlyActivating.get(e3Id); + if (!d) { + const def = defer(); + currentlyActivating.set(e3Id, def); + return def; + } + return d; +} + async function handleE3ActivatedEvent(event: any) { const data = event.data as E3ActivatedData; const e3Id = data.e3Id; const expiration = data.expiration; + // This allows us to wait until the session has been activated avoiding race conditions + const def = getActivationDefer(e3Id); + console.log(`🎯 E3 Activated: ${e3Id}, expiration: ${expiration}`); const sessionKey = e3Id.toString(); + if (!e3Sessions.has(sessionKey)) { const sdk = await createPrivateSDK(); + console.log("📡 Fetching E3 data from contract..."); + const e3 = await sdk.getE3(e3Id); + console.log("✅ Reveived E3 data from contract."); + e3Sessions.set(sessionKey, { e3Id, e3ProgramParams: e3.e3ProgramParams, @@ -114,6 +152,7 @@ async function handleE3ActivatedEvent(event: any) { isProcessing: false, isCompleted: false, }); + def.resolve(); } const currentTime = BigInt(Math.floor(Date.now() / 1000)); @@ -140,6 +179,10 @@ async function handleInputPublishedEvent(event: any) { console.log(`📝 Input Published for E3 ${e3Id}: index ${data.index}`); const sessionKey = e3Id.toString(); + + // Ensure the session is available + await getActivationDefer(e3Id).promise; + const session = e3Sessions.get(sessionKey); if (session) { diff --git a/templates/default/tests/integration.spec.ts b/templates/default/tests/integration.spec.ts index 2d8f07ac99..b29bf3d01e 100644 --- a/templates/default/tests/integration.spec.ts +++ b/templates/default/tests/integration.spec.ts @@ -132,7 +132,7 @@ async function setupEventListeners( throw new Error(`State for ID '${id}' not found.`); } - if (state.type !== "committee_published") { + if (state.type !== "activated") { throw new Error(`State must be in the ${state.type} state`); } @@ -169,8 +169,8 @@ async function main() { DEFAULT_E3_CONFIG.threshold_min, DEFAULT_E3_CONFIG.threshold_max, ]; - const startWindow = calculateStartWindow(60); // 1 minute - const duration = BigInt(60); // 1 minute + const startWindow = calculateStartWindow(60); + const duration = BigInt(10); const e3ProgramParams = encodeBfvParams(); const computeProviderParams = encodeComputeProviderParams( DEFAULT_COMPUTE_PROVIDER_PARAMS, @@ -219,8 +219,8 @@ async function main() { assert.strictEqual(state.type, "activated"); // INPUT PUBLISHING phase - const num1 = 123n; - const num2 = 210n; + const num1 = 12n; + const num2 = 21n; const publicKeyBytes = hexToBytes(state.publicKey); const enc1 = encryptNumber(num1, publicKeyBytes); const enc2 = encryptNumber(num2, publicKeyBytes); @@ -242,9 +242,16 @@ async function main() { EnclaveEventType.PLAINTEXT_OUTPUT_PUBLISHED, ); - assert.strictEqual(plaintextEvent.data.plaintextOutput, "0x12345678"); + const parsed = hexToUint8Array(plaintextEvent.data.plaintextOutput); + + assert.strictEqual(BigInt(parsed[0]), num1 + num2); - console.log("It worked"); + console.log(""); + console.log("*****************************************"); + console.log(" TEST WAS SUCCESSFUL!"); + console.log(" SHUTTING DOWN SERVICES"); + console.log("*****************************************"); + console.log(""); process.exit(0); } @@ -258,3 +265,9 @@ main() console.log(err); process.exit(1); }); + +function hexToUint8Array(hexString: string) { + const hex = hexString.startsWith("0x") ? hexString.slice(2) : hexString; + const m = hex.match(/.{2}/g)?.map((byte) => parseInt(byte, 16)) ?? []; + return new Uint8Array(m); +} From 1d7e90d9433ee3a84fcb70fdd080621d5b79265c Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 02:20:13 +0300 Subject: [PATCH 21/40] Add rust to workflow --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c71f3de08d..4901da762e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,11 @@ jobs: - name: "Check out the repo" uses: "actions/checkout@v4" + - name: Install Rust 1.85.0 + uses: actions-rs/toolchain@v1 + with: + toolchain: 1.85.0 + - name: "Setup node" uses: actions/setup-node@v3 with: From 58083b6e64a7044ee8f753f78226188d5b6e0462 Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 02:28:37 +0300 Subject: [PATCH 22/40] Add compiling sdk and lwasm to be part of the build process --- packages/evm/package.json | 2 ++ pnpm-lock.yaml | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/evm/package.json b/packages/evm/package.json index 0bbbe81e61..86cb65dd0e 100644 --- a/packages/evm/package.json +++ b/packages/evm/package.json @@ -101,7 +101,9 @@ "compile": "pnpm compile:contracts && pnpm compile:scripts && pnpm compile:sdk", "compile:contracts": "cross-env TS_NODE_TRANSPILE_ONLY=true hardhat compile", "compile:scripts": "tsc -p tsconfig.json --noEmitOnError false --noCheck", + "precompile:sdk": "cd ../../crates/wasm && pnpm build", "compile:sdk": "tsc -p ./src/tsconfig.json --noEmitOnError false --noCheck", + "precoverage": "pnpm compile:sdk", "coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && pnpm typechain", "deploy": "hardhat deploy --tags enclave", "deploy:mocks": "hardhat deploy --tags enclave,mocks", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db1669925a..3bd23e83e9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -486,7 +486,7 @@ importers: version: 5.3.0 '@risc0/ethereum': specifier: file:lib/risc0-ethereum - version: file:templates/default/lib/risc0-ethereum + version: risc0-ethereum@file:templates/default/lib/risc0-ethereum '@typechain/ethers-v6': specifier: ^0.5.0 version: 0.5.1(ethers@6.14.4(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) @@ -2760,9 +2760,6 @@ packages: '@reown/appkit@1.7.8': resolution: {integrity: sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==} - '@risc0/ethereum@file:templates/default/lib/risc0-ethereum': - resolution: {directory: templates/default/lib/risc0-ethereum, type: directory} - '@rolldown/pluginutils@1.0.0-beta.19': resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} @@ -7865,6 +7862,9 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + risc0-ethereum@file:templates/default/lib/risc0-ethereum: + resolution: {directory: templates/default/lib/risc0-ethereum, type: directory} + rlp@2.2.7: resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} hasBin: true @@ -12047,8 +12047,6 @@ snapshots: - utf-8-validate - zod - '@risc0/ethereum@file:templates/default/lib/risc0-ethereum': {} - '@rolldown/pluginutils@1.0.0-beta.19': {} '@rollup/plugin-inject@5.0.5(rollup@4.44.1)': @@ -19057,6 +19055,8 @@ snapshots: hash-base: 3.1.0 inherits: 2.0.4 + risc0-ethereum@file:templates/default/lib/risc0-ethereum: {} + rlp@2.2.7: dependencies: bn.js: 5.2.2 From a0d6a391e9ce3323c6868691e1fb652406950b4e Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:09:53 +0300 Subject: [PATCH 23/40] Add wasm-pack --- .github/workflows/ci.yml | 6 ++++++ examples/CRISP/Dockerfile | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4901da762e..68df0f7523 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,12 @@ jobs: uses: actions-rs/toolchain@v1 with: toolchain: 1.85.0 + target: wasm32-unknown-unknown + + # required so that we can compile wasm within the sdk + - uses: jetli/wasm-pack-action@v0.4.0 + with: + version: "latest" - name: "Setup node" uses: actions/setup-node@v3 diff --git a/examples/CRISP/Dockerfile b/examples/CRISP/Dockerfile index 493eceeaed..3a0ea7d94e 100644 --- a/examples/CRISP/Dockerfile +++ b/examples/CRISP/Dockerfile @@ -46,7 +46,7 @@ WORKDIR /home/$USERNAME RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | sh -s -- -y --default-toolchain ${RUST_VERSION} ENV PATH="/home/${USERNAME}/.cargo/bin:${PATH}" -RUN rustup component add rustfmt clippy +RUN rustup component add rustfmt clippy wasm-pack ENV RUSTFLAGS="-C debuginfo=0 -C strip=symbols" \ CARGO_TERM_COLOR=always # ──────────────────────────────────────────────────────────────────────────────── From abbf778f2fe0a5f1ea57486de1a71449b3732f6a Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:18:50 +0300 Subject: [PATCH 24/40] Install with wasm --- examples/CRISP/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/CRISP/Dockerfile b/examples/CRISP/Dockerfile index 3a0ea7d94e..a5d6ed7287 100644 --- a/examples/CRISP/Dockerfile +++ b/examples/CRISP/Dockerfile @@ -46,9 +46,11 @@ WORKDIR /home/$USERNAME RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | sh -s -- -y --default-toolchain ${RUST_VERSION} ENV PATH="/home/${USERNAME}/.cargo/bin:${PATH}" -RUN rustup component add rustfmt clippy wasm-pack +RUN rustup component add rustfmt clippy ENV RUSTFLAGS="-C debuginfo=0 -C strip=symbols" \ CARGO_TERM_COLOR=always +RUN cargo install wasm-pack + # ──────────────────────────────────────────────────────────────────────────────── # Foundry # ──────────────────────────────────────────────────────────────────────────────── From 08bf6981bedc73272d5c912c69659cb03ba923a9 Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:32:14 +0300 Subject: [PATCH 25/40] Rename --- ...rt-docker.yml => template-and-support.yml} | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) rename .github/workflows/{support-docker.yml => template-and-support.yml} (72%) diff --git a/.github/workflows/support-docker.yml b/.github/workflows/template-and-support.yml similarity index 72% rename from .github/workflows/support-docker.yml rename to .github/workflows/template-and-support.yml index c78a6081a7..d509c53e17 100644 --- a/.github/workflows/support-docker.yml +++ b/.github/workflows/template-and-support.yml @@ -63,3 +63,35 @@ jobs: type=gha,mode=max,scope=cargo-git type=gha,mode=max,scope=cargo-target type=gha,mode=max,scope=buildcache + + template_integration: + name: Template Integration + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: latest + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: wasm32-unknown-unknown + + - name: Install wasm-pack + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + + - name: Install enclave CLI + run: cargo install --path crates/cli --bin enclave + + - name: Test enclave CLI + run: enclave --help From 81ed6c3f9c74475c849515b41a870a66bc807853 Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:38:39 +0300 Subject: [PATCH 26/40] Fix pnpm version --- .github/workflows/template-and-support.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index d509c53e17..225c90c793 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -78,8 +78,6 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 - with: - version: latest - name: Setup Rust uses: dtolnay/rust-toolchain@stable From ba0e9e8984cd1a4f360281bc0ba4013d80e3c4ed Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:48:51 +0300 Subject: [PATCH 27/40] Test template integration --- .github/workflows/template-and-support.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index 225c90c793..c0a750b973 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -1,4 +1,4 @@ -name: Build Support Dockerfile +name: Support Build and Template Test on: workflow_dispatch: pull_request: @@ -91,5 +91,8 @@ jobs: - name: Install enclave CLI run: cargo install --path crates/cli --bin enclave - - name: Test enclave CLI - run: enclave --help + - name: Install node dependencies + run: pnpm install + + - name: Test Template + run: cd templates/default && pnpm test:integration From 333c6b85d06c6d4998c13649ef9a0e8507acc454 Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:51:22 +0300 Subject: [PATCH 28/40] update names --- .github/workflows/template-and-support.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index c0a750b973..46e7fb4d48 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -1,4 +1,4 @@ -name: Support Build and Template Test +name: TEMPLATE on: workflow_dispatch: pull_request: @@ -17,7 +17,7 @@ permissions: packages: write jobs: build: - name: Build & Push Image + name: Compile and Push Support Dockerfile runs-on: ubuntu-latest outputs: image_tag: ${{ steps.version.outputs.version }} From 2329cfbfb19b8332cfd69089187cad77b4a3d5ae Mon Sep 17 00:00:00 2001 From: ryardley Date: Sat, 28 Jun 2025 15:53:04 +0300 Subject: [PATCH 29/40] Lowercase --- .github/workflows/template-and-support.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index 46e7fb4d48..23442f2c9d 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -17,7 +17,7 @@ permissions: packages: write jobs: build: - name: Compile and Push Support Dockerfile + name: Compile and push Support Dockerfile runs-on: ubuntu-latest outputs: image_tag: ${{ steps.version.outputs.version }} From 3382f3c85ec50514f9c453ab85822e78fb7d3cf5 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 00:12:29 +0300 Subject: [PATCH 30/40] Actually fail when failing --- templates/default/scripts/test_integration.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/default/scripts/test_integration.sh b/templates/default/scripts/test_integration.sh index 5035b958fd..f09e1a5329 100755 --- a/templates/default/scripts/test_integration.sh +++ b/templates/default/scripts/test_integration.sh @@ -16,6 +16,7 @@ failed_message() { echo " ❌ Test failed " echo "❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌" echo "" + exit 1 } export $(enclave print-env --chain hardhat) From 2641a865b3e56e949750c0f0506e659fc07c18e3 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 00:13:21 +0300 Subject: [PATCH 31/40] Use lines --- templates/default/scripts/test_integration.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/default/scripts/test_integration.sh b/templates/default/scripts/test_integration.sh index f09e1a5329..2ea98e18b3 100755 --- a/templates/default/scripts/test_integration.sh +++ b/templates/default/scripts/test_integration.sh @@ -12,9 +12,9 @@ passed_message() { failed_message() { echo "" - echo "❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌" + echo "------------------------" echo " ❌ Test failed " - echo "❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌" + echo "------------------------" echo "" exit 1 } From 31f9182a2a8a0a35eda955455a2a7e01c8971591 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 00:43:26 +0300 Subject: [PATCH 32/40] Build sdk before testing --- .github/workflows/template-and-support.yml | 3 + package.json | 5 + packages/enclave-react/package.json | 2 +- packages/evm/src/sdk/types.ts | 11 +- pnpm-lock.yaml | 362 ++------------------- 5 files changed, 33 insertions(+), 350 deletions(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index 23442f2c9d..811a8d64f4 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -94,5 +94,8 @@ jobs: - name: Install node dependencies run: pnpm install + - name: Build the sdk + run: pnpm build + - name: Test Template run: cd templates/default && pnpm test:integration diff --git a/package.json b/package.json index d58d14a7ef..bb8cd7a324 100644 --- a/package.json +++ b/package.json @@ -57,5 +57,10 @@ "devDependencies": { "husky": "^9.1.7", "@changesets/cli": "^2.27.1" + }, + "pnpm": { + "overrides": { + "viem": "2.30.6" + } } } diff --git a/packages/enclave-react/package.json b/packages/enclave-react/package.json index a3d36c7900..e4f782eed9 100644 --- a/packages/enclave-react/package.json +++ b/packages/enclave-react/package.json @@ -32,7 +32,7 @@ "peerDependencies": { "react": "^18.2.0", "wagmi": "^2.14.16", - "viem": "^2.30.6" + "viem": "2.30.6" }, "publishConfig": { "access": "public", diff --git a/packages/evm/src/sdk/types.ts b/packages/evm/src/sdk/types.ts index e196ab394a..8ff69aed6a 100644 --- a/packages/evm/src/sdk/types.ts +++ b/packages/evm/src/sdk/types.ts @@ -1,5 +1,4 @@ -import { type Log } from "viem"; -import { type PublicClient, type WalletClient } from "viem"; +import { type Log, type PublicClient, type WalletClient } from "viem"; import { type CiphernodeRegistryOwnable, @@ -183,10 +182,10 @@ export interface RegistryEventData { export interface EnclaveEvent { type: T; data: T extends EnclaveEventType - ? EnclaveEventData[T] - : T extends RegistryEventType - ? RegistryEventData[T] - : unknown; + ? EnclaveEventData[T] + : T extends RegistryEventType + ? RegistryEventData[T] + : unknown; log: Log; timestamp: Date; blockNumber: bigint; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bd23e83e9..e1cf8cdd13 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + viem: 2.30.6 + importers: .: @@ -107,7 +110,7 @@ importers: version: 1.52.0 '@synthetixio/synpress': specifier: ^4.1.0 - version: 4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + version: 4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) '@synthetixio/synpress-cache': specifier: ^0.0.12 version: 0.0.12(@swc/core@1.12.7)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3) @@ -296,11 +299,11 @@ importers: specifier: ^18.2.0 version: 18.3.1 viem: - specifier: ^2.30.6 - version: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + specifier: 2.30.6 + version: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) wagmi: specifier: ^2.14.16 - version: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) + version: 2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) devDependencies: '@types/react': specifier: ^18.2.0 @@ -647,9 +650,6 @@ importers: packages: - '@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==} @@ -2909,30 +2909,18 @@ packages: '@scure/bip32@1.1.5': resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - '@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.1.1': resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - '@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==} @@ -3558,7 +3546,7 @@ packages: peerDependencies: '@wagmi/core': 2.17.3 typescript: '>=5.0.4' - viem: 2.x + viem: 2.30.6 peerDependenciesMeta: typescript: optional: true @@ -3568,7 +3556,7 @@ packages: peerDependencies: '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' - viem: 2.x + viem: 2.30.6 peerDependenciesMeta: '@tanstack/query-core': optional: true @@ -3692,17 +3680,6 @@ packages: abbrev@1.0.9: resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} - 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.8: resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} peerDependencies: @@ -4461,7 +4438,7 @@ packages: '@tanstack/react-query': '>=5.0.0' react: 17.x || 18.x react-dom: 17.x || 18.x - viem: 2.x + viem: 2.30.6 wagmi: 2.x console-browserify@1.2.0: @@ -5291,7 +5268,7 @@ packages: peerDependencies: react: 17.x || 18.x || 19.x react-dom: 17.x || 18.x || 19.x - viem: 2.x + viem: 2.30.6 wagmi: 2.x peerDependenciesMeta: react: @@ -6129,16 +6106,6 @@ packages: resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} engines: {node: '>=10'} - isows@1.0.3: - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} - 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: @@ -7094,14 +7061,6 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - ox@0.6.7: - resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - ox@0.7.1: resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==} peerDependencies: @@ -7110,14 +7069,6 @@ packages: typescript: optional: true - ox@0.8.1: - resolution: {integrity: sha512-e+z5epnzV+Zuz91YYujecW8cF01mzmrUtWotJ0oEPym/G82uccs7q0WDHTYL3eiONbTUEvcZrptAKLgTBD3u2A==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -8888,22 +8839,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - viem@2.23.2: - resolution: {integrity: sha512-NVmW/E0c5crMOtbEAqMF0e3NmvQykFXhLOc/CkLIXOlzHSA6KXVz3CYVmaKqBF8/xtjsjHAGjdJN3Ru1kFJLaA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - viem@2.23.7: - resolution: {integrity: sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - viem@2.30.6: resolution: {integrity: sha512-N3vGy3pZ+EVgQRuWqQhZPFXxQE8qMRrBd3uM+KLc1Ub2w6+vkyr7umeWQCM4c+wlsCdByUgh2630MDMLquMtpg==} peerDependencies: @@ -8912,22 +8847,6 @@ packages: typescript: optional: true - viem@2.31.4: - resolution: {integrity: sha512-0UZ/asvzl6p44CIBRDbwEcn3HXIQQurBZcMo5qmLhQ8s27Ockk+RYohgTLlpLvkYs8/t4UUEREAbHLuek1kXcw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - - viem@2.9.9: - resolution: {integrity: sha512-SUIHBL6M5IIlqDCMEQwAAvHzeglaM4FEqM6bCI+srLXtFYmrpV4tWhnpobQRNwh4f7HIksmKLLZ+cytv8FfnJQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - vite-plugin-node-polyfills@0.22.0: resolution: {integrity: sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==} peerDependencies: @@ -8997,7 +8916,7 @@ packages: '@tanstack/react-query': '>=5.0.0' react: '>=18' typescript: '>=5.0.4' - viem: 2.x + viem: 2.30.6 peerDependenciesMeta: typescript: optional: true @@ -9116,18 +9035,6 @@ packages: 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'} @@ -9283,8 +9190,6 @@ packages: snapshots: - '@adraffy/ens-normalize@1.10.0': {} - '@adraffy/ens-normalize@1.10.1': {} '@adraffy/ens-normalize@1.11.0': {} @@ -12161,24 +12066,12 @@ snapshots: '@noble/secp256k1': 1.7.1 '@scure/base': 1.1.9 - '@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.2 - '@noble/hashes': 1.7.2 - '@scure/base': 1.2.6 - '@scure/bip32@1.7.0': dependencies: '@noble/curves': 1.9.2 @@ -12190,21 +12083,11 @@ snapshots: '@noble/hashes': 1.2.0 '@scure/base': 1.1.9 - '@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.2 - '@scure/base': 1.2.6 - '@scure/bip39@1.6.0': dependencies: '@noble/hashes': 1.8.0 @@ -12236,7 +12119,7 @@ snapshots: '@zk-kit/utils': 1.3.0 axios: 1.6.6 ethers: 6.13.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) - viem: 2.23.7(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - bufferutil - debug @@ -12509,14 +12392,14 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@synthetixio/ethereum-wallet-mock@0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': + '@synthetixio/ethereum-wallet-mock@0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@depay/web3-client': 10.18.6(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@depay/web3-mock': 14.19.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@depay/web3-mock-evm': 14.19.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@playwright/test': 1.52.0 '@synthetixio/synpress-core': 0.0.12(@playwright/test@1.52.0) - viem: 2.9.9(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - '@depay/solana-web3.js' - '@depay/web3-blockchains' @@ -12594,10 +12477,10 @@ snapshots: - typescript - utf-8-validate - '@synthetixio/synpress@4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': + '@synthetixio/synpress@4.1.0(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10)': dependencies: '@playwright/test': 1.52.0 - '@synthetixio/ethereum-wallet-mock': 0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + '@synthetixio/ethereum-wallet-mock': 0.0.12(@depay/solana-web3.js@1.98.2)(@depay/web3-blockchains@9.8.6)(@playwright/test@1.52.0)(bufferutil@4.0.9)(ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.3)(utf-8-validate@5.0.10) '@synthetixio/synpress-cache': 0.0.12(@swc/core@1.12.7)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3) '@synthetixio/synpress-core': 0.0.12(@playwright/test@1.52.0) '@synthetixio/synpress-metamask': 0.0.12(@playwright/test@1.52.0)(@swc/core@1.12.7)(bufferutil@4.0.9)(playwright-core@1.52.0)(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@22.15.33)(typescript@5.8.3))(typescript@5.8.3)(utf-8-validate@5.0.10) @@ -13119,45 +13002,6 @@ snapshots: - utf-8-validate - zod - '@wagmi/connectors@5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67)': - dependencies: - '@coinbase/wallet-sdk': 4.3.3 - '@metamask/sdk': 0.32.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - optionalDependencies: - typescript: 5.8.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/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - react - - supports-color - - uploadthing - - utf-8-validate - - zod - '@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))': dependencies: eventemitter3: 5.0.1 @@ -13188,21 +13032,6 @@ snapshots: - react - use-sync-external-store - '@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))': - dependencies: - eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.8.3) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - zustand: 5.0.0(@types/react@18.3.23)(immer@10.0.2)(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)) - optionalDependencies: - '@tanstack/query-core': 5.81.2 - typescript: 5.8.3 - transitivePeerDependencies: - - '@types/react' - - immer - - react - - use-sync-external-store - '@walletconnect/core@2.21.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)': dependencies: '@walletconnect/heartbeat': 1.2.2 @@ -13651,7 +13480,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13694,7 +13523,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) + viem: 2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13774,11 +13603,6 @@ snapshots: abbrev@1.0.9: {} - abitype@1.0.0(typescript@5.8.3)(zod@3.25.67): - optionalDependencies: - typescript: 5.8.3 - zod: 3.25.67 - abitype@1.0.8(typescript@5.8.3)(zod@3.22.4): optionalDependencies: typescript: 5.8.3 @@ -16830,14 +16654,6 @@ snapshots: isomorphic-timers-promises@1.0.1: {} - isows@1.0.3(ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): - dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - isows@1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -18252,20 +18068,6 @@ snapshots: outdent@0.5.0: {} - ox@0.6.7(typescript@5.8.3)(zod@3.25.67): - dependencies: - '@adraffy/ens-normalize': 1.11.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.8.3)(zod@3.25.67) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - zod - ox@0.7.1(typescript@5.8.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.0 @@ -18296,21 +18098,6 @@ snapshots: transitivePeerDependencies: - zod - ox@0.8.1(typescript@5.8.3)(zod@3.25.67): - dependencies: - '@adraffy/ens-normalize': 1.11.0 - '@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.8.3)(zod@3.25.67) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - zod - p-cancelable@3.0.0: {} p-filter@2.1.0: @@ -20319,40 +20106,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - viem@2.23.2(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67): - 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.8.3)(zod@3.25.67) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.8.3)(zod@3.25.67) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.23.7(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67): - 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.8.3)(zod@3.25.67) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.8.3)(zod@3.25.67) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - viem@2.30.6(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: '@noble/curves': 1.9.1 @@ -20387,40 +20140,6 @@ snapshots: - utf-8-validate - zod - viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67): - dependencies: - '@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.8.3)(zod@3.25.67) - isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.8.1(typescript@5.8.3)(zod@3.25.67) - ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - - viem@2.9.9(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67): - 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.8.3)(zod@3.25.67) - isows: 1.0.3(ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ws: 8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - optionalDependencies: - typescript: 5.8.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - vite-plugin-node-polyfills@0.22.0(rollup@4.44.1)(vite@5.4.19(@types/node@22.15.33)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.44.1) @@ -20545,44 +20264,6 @@ snapshots: - utf-8-validate - zod - wagmi@2.15.6(@tanstack/query-core@5.81.2)(@tanstack/react-query@5.81.2(react@18.3.1))(@types/react@18.3.23)(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67): - dependencies: - '@tanstack/react-query': 5.81.2(react@18.3.1) - '@wagmi/connectors': 5.8.5(@types/react@18.3.23)(@wagmi/core@2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)))(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.3)(utf-8-validate@5.0.10)(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67))(zod@3.25.67) - '@wagmi/core': 2.17.3(@tanstack/query-core@5.81.2)(@types/react@18.3.23)(react@18.3.1)(typescript@5.8.3)(use-sync-external-store@1.4.0(react@18.3.1))(viem@2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67)) - react: 18.3.1 - use-sync-external-store: 1.4.0(react@18.3.1) - viem: 2.31.4(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.25.67) - optionalDependencies: - typescript: 5.8.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/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - immer - - ioredis - - supports-color - - uploadthing - - utf-8-validate - - zod - wait-on@8.0.3: dependencies: axios: 1.10.0 @@ -20713,11 +20394,6 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 5.0.10 - ws@8.13.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - optionalDependencies: - bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 From b42dedd4b28c6442d6c4778fce1def46e7e65aac Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 00:44:58 +0300 Subject: [PATCH 33/40] linting --- packages/evm/src/sdk/types.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/evm/src/sdk/types.ts b/packages/evm/src/sdk/types.ts index 8ff69aed6a..21e343646b 100644 --- a/packages/evm/src/sdk/types.ts +++ b/packages/evm/src/sdk/types.ts @@ -182,10 +182,10 @@ export interface RegistryEventData { export interface EnclaveEvent { type: T; data: T extends EnclaveEventType - ? EnclaveEventData[T] - : T extends RegistryEventType - ? RegistryEventData[T] - : unknown; + ? EnclaveEventData[T] + : T extends RegistryEventType + ? RegistryEventData[T] + : unknown; log: Log; timestamp: Date; blockNumber: bigint; From 75140d1c15b960aac30e5d7166d4f5d3b74fcbb3 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 00:49:46 +0300 Subject: [PATCH 34/40] linting --- Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 98dff40110..0e5191be41 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,8 @@ members = [ "crates/sortition", "crates/support-scripts", "crates/test-helpers", - "crates/tests", "crates/wasm", + "crates/tests", + "crates/wasm", ] exclude = [ "examples/CRISP/apps/server", From 71f536d696dd9205c4521748b944e62728af9ac9 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 01:08:40 +0300 Subject: [PATCH 35/40] Add submodules to template --- .github/workflows/template-and-support.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index 811a8d64f4..cf7c8769bb 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -70,6 +70,8 @@ jobs: needs: build steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Setup Node.js uses: actions/setup-node@v4 From a5b294b744d4864bc0b0799713a4d7b78ad04ed4 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 01:09:55 +0300 Subject: [PATCH 36/40] Add submodules recursive to template --- .github/workflows/template-and-support.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index cf7c8769bb..e048edaaa1 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -71,7 +71,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: true + submodules: recursive - name: Setup Node.js uses: actions/setup-node@v4 From e633f9cedb77b76843622918933b9b2c3eca98e9 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 14:21:57 +0300 Subject: [PATCH 37/40] Add permissions to folders --- .github/workflows/template-and-support.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index e048edaaa1..ccb11c1977 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -100,4 +100,4 @@ jobs: run: pnpm build - name: Test Template - run: cd templates/default && pnpm test:integration + run: cd templates/default && chmod 777 contracts && chmod 777 tests && pnpm test:integration From 2dec68532f6a11863725e4164453751050553fb9 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 14:51:59 +0300 Subject: [PATCH 38/40] Ensure ImageID.sol is writable --- templates/default/contracts/ImageID.sol | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 templates/default/contracts/ImageID.sol diff --git a/templates/default/contracts/ImageID.sol b/templates/default/contracts/ImageID.sol old mode 100644 new mode 100755 From cf61d01dfab6d50d54b90e3bd27bcc831ab1d241 Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 15:31:26 +0300 Subject: [PATCH 39/40] Attempt to open up permissions on ImageID.sol --- .github/workflows/template-and-support.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index ccb11c1977..1098045b1f 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -100,4 +100,4 @@ jobs: run: pnpm build - name: Test Template - run: cd templates/default && chmod 777 contracts && chmod 777 tests && pnpm test:integration + run: cd templates/default && chmod 777 contracts && chmod 777 tests && chmod 777 contracts/*.sol && pnpm test:integration From 4a73eafdcc63254ea597aa35ed2af664fbc959af Mon Sep 17 00:00:00 2001 From: ryardley Date: Mon, 30 Jun 2025 15:32:21 +0300 Subject: [PATCH 40/40] Attempt to open up permissions on ImageID.sol --- .github/workflows/template-and-support.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/template-and-support.yml b/.github/workflows/template-and-support.yml index 1098045b1f..3c4aca0498 100644 --- a/.github/workflows/template-and-support.yml +++ b/.github/workflows/template-and-support.yml @@ -100,4 +100,4 @@ jobs: run: pnpm build - name: Test Template - run: cd templates/default && chmod 777 contracts && chmod 777 tests && chmod 777 contracts/*.sol && pnpm test:integration + run: cd templates/default && chmod 777 contracts && chmod 777 tests && chmod 777 contracts/ImageID.sol && pnpm test:integration