diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c1ea76e..f3a91c9 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -28,7 +28,7 @@ jobs: - name: Set Aztec version and start sandbox run: | - aztec-up 2.0.2 + aztec-up 3.0.0-devnet.4 aztec start --sandbox & - name: Install dependencies diff --git a/APPLICATION_GUIDE.md b/APPLICATION_GUIDE.md new file mode 100644 index 0000000..fbd0fda --- /dev/null +++ b/APPLICATION_GUIDE.md @@ -0,0 +1,743 @@ +# Aztec Private Voting Application - Technical Guide + +## Table of Contents + +1. [Overview](#overview) +2. [Architecture](#architecture) +3. [Key Concepts](#key-concepts) +4. [Component Breakdown](#component-breakdown) +5. [Data Flow](#data-flow) +6. [Smart Contract](#smart-contract) +7. [Security & Privacy](#security--privacy) +8. [Deployment Process](#deployment-process) +9. [Common Pitfalls](#common-pitfalls) +10. [Learning Path](#learning-path) + +--- + +## Overview + +This is a **private voting web application** built on the Aztec Network, demonstrating zero-knowledge proof technology for anonymous voting. The application allows users to cast votes for one of five candidates while maintaining complete privacy about who voted and what they voted for. + +### What Makes This Special? + +Unlike traditional blockchain voting systems where all votes are public: + +- **Vote choices remain private** - No one can see which candidate you voted for +- **Voter identity is protected** - Your identity is cryptographically concealed +- **Double-voting is prevented** - The system prevents voting twice without revealing voter identity +- **Results are transparent** - Vote tallies are publicly visible + +### Difficulty Level + +**Intermediate to Advanced** - Requires understanding of: + +- Blockchain/distributed ledger concepts +- Zero-knowledge proofs (basic understanding) +- TypeScript/JavaScript +- Asynchronous programming +- Smart contracts + +--- + +## Architecture + +### High-Level System Diagram + +```mermaid +flowchart TD + User[User Browser] --> WebApp[Web Application] + WebApp --> EW[Embedded Wallet] + EW --> PXE[Private Execution Environment] + PXE --> AztecNode[Aztec Node] + AztecNode --> Contract[Private Voting Contract] + + subgraph "Client Side" + User + WebApp + EW + PXE + end + + subgraph "Network" + AztecNode + Contract + end + + style User fill:#e1f5ff + style WebApp fill:#fff4e1 + style Contract fill:#ffe1e1 +``` + +### Technology Stack + +| Layer | Technology | Purpose | +| ------------------ | ----------------------------------- | ---------------------------------------- | +| **Frontend** | HTML + TypeScript + Webpack | User interface | +| **Wallet** | Custom Embedded Wallet | Account management & transaction signing | +| **Execution** | PXE (Private Execution Environment) | Client-side proof generation | +| **Network** | Aztec Node | Blockchain network interaction | +| **Smart Contract** | Noir (Aztec's language) | Vote logic & storage | +| **Testing** | Playwright | End-to-end tests | + +--- + +## Key Concepts + +### 1. Private Execution Environment (PXE) + +The PXE is a **client-side component** that: + +- Generates zero-knowledge proofs locally in your browser +- Manages encrypted state +- Interacts with the Aztec Node + +**Why it matters**: Proofs are generated on YOUR machine, meaning the network never sees your raw vote data. + +### 2. Nullifiers + +A **nullifier** is a unique cryptographic value that: + +- Is derived from your address + secret key +- Prevents double-voting +- Doesn't reveal your identity + +**Simple Analogy**: Think of it like a tamper-proof ballot box slot - once you put your ballot through your unique slot, that slot becomes permanently marked as "used," but no one can tell who owns which slot. + +```typescript +// From contracts/src/main.nr:48 +let nullifier = poseidon2_hash([ + context.msg_sender().unwrap().to_field(), + secret, +]); +context.push_nullifier(nullifier); +``` + +### 3. Sponsored Fee Payment + +Instead of users paying transaction fees, this application uses **Sponsored FPC** (Fee Payment Contract): + +- A special contract pays fees on behalf of users +- Users don't need native tokens to interact +- Perfect for demos and onboarding + +**In Production**: You'd typically use a different fee payment mechanism. + +### 4. Zero-Knowledge Proofs + +When you vote, the application: + +1. Generates a proof that says "I have a valid vote, and I haven't voted before" +2. Sends the proof to the network +3. The network verifies the proof WITHOUT seeing your vote details + +**Time Warning**: Proof generation can take 30-60 seconds on first run (needs to download ~67MB proving key). + +--- + +## Component Breakdown + +### 1. Smart Contract (`contracts/src/main.nr`) + +The Noir smart contract is the heart of the voting logic. + +#### Storage Structure + +```noir +struct Storage { + admin: PublicMutable, // Who can end the vote + tally: Map>, // candidate → vote count + vote_ended: PublicMutable, // Is voting closed? + active_at_block: PublicImmutable, // When voting started +} +``` + +#### Key Functions + +**Constructor** - Initializes the contract + +```noir +fn constructor(admin: AztecAddress) { + storage.admin.write(admin); + storage.vote_ended.write(false); + storage.active_at_block.initialize(context.block_number()); +} +``` + +**cast_vote** - Private function to cast a vote + +```noir +#[external("private")] +fn cast_vote(candidate: Field) { + // Step 1: Get nullifier public key + let msg_sender_nullifier_public_key_message_hash = + get_public_keys(context.msg_sender().unwrap()).npk_m.hash(); + + // Step 2: Get secret key (only you can do this) + let secret = context.request_nsk_app(msg_sender_nullifier_public_key_message_hash); + + // Step 3: Create nullifier (prevents double voting) + let nullifier = poseidon2_hash([context.msg_sender().unwrap().to_field(), secret]); + context.push_nullifier(nullifier); + + // Step 4: Add vote to public tally (in a separate public function) + PrivateVoting::at(context.this_address()).add_to_tally_public(candidate).enqueue(&mut context); +} +``` + +**How it prevents double voting**: + +1. Your nullifier is mathematically tied to your account +2. Once your nullifier is published, you can't publish it again +3. But no one can tell which nullifier belongs to which account! + +**add_to_tally_public** - Public function to increment vote count + +```noir +#[external("public")] +#[internal] +fn add_to_tally_public(candidate: Field) { + assert(storage.vote_ended.read() == false, "Vote has ended"); + let new_tally = storage.tally.at(candidate).read() + 1; + storage.tally.at(candidate).write(new_tally); +} +``` + +**get_vote** - Read vote tally (unconstrained = free to call) + +```noir +#[external("utility")] +unconstrained fn get_vote(candidate: Field) -> Field { + storage.tally.at(candidate).read() +} +``` + +### 2. Embedded Wallet (`app/embedded-wallet.ts`) + +A custom wallet implementation that manages accounts and transactions. + +#### Wallet Initialization + +```typescript +static async initialize(nodeUrl: string) { + // 1. Connect to Aztec Node + const aztecNode = createAztecNodeClient(nodeUrl); + + // 2. Configure PXE (Private Execution Environment) + const config = getPXEConfig(); + config.l1Contracts = await aztecNode.getL1ContractAddresses(); + config.proverEnabled = PROVER_ENABLED; + + // 3. Create PXE instance + const pxe = await createPXE(aztecNode, config, { + useLogSuffix: true, + }); + + // 4. Register Sponsored FPC Contract + await pxe.registerContract(await EmbeddedWallet.#getSponsoredPFCContract()); + + return new EmbeddedWallet(pxe, aztecNode); +} +``` + +#### Account Creation Flow + +```typescript +async createAccountAndConnect() { + // 1. Generate random cryptographic keys + const salt = Fr.random(); // Randomness for address derivation + const secretKey = Fr.random(); // Master secret + const signingKey = randomBytes(32); // ECDSA signing key + + // 2. Create ECDSA account contract + const contract = new EcdsaRAccountContract(signingKey); + const accountManager = await AccountManager.create( + this, + secretKey, + contract, + salt + ); + + // 3. Register with PXE BEFORE deploying + await this.registerAccount(accountManager); + + // 4. Deploy the account contract + const deployMethod = await accountManager.getDeployMethod(); + const receipt = await deployMethod.send(deployOpts).wait({ timeout: 120 }); + + // 5. Store keys in browser's local storage + localStorage.setItem(LocalStorageKey, JSON.stringify({ + address: accountManager.address.toString(), + signingKey: signingKey.toString('hex'), + secretKey: secretKey.toString(), + salt: salt.toString(), + })); + + return accountManager.address; +} +``` + +**Security Warning**: This stores keys in **plain text** in `localStorage`. This is fine for demos but NEVER do this in production! + +#### Fee Payment Method + +```typescript +override async getDefaultFeeOptions( + from: AztecAddress, + userFeeOptions: UserFeeOptions | undefined +): Promise { + // Use Sponsored FPC if no payment method specified + if (!userFeeOptions?.embeddedPaymentMethodFeePayer) { + const sponsoredFPCContract = await EmbeddedWallet.#getSponsoredPFCContract(); + walletFeePaymentMethod = new SponsoredFeePaymentMethod( + sponsoredFPCContract.instance.address + ); + } + // ... configure gas settings +} +``` + +### 3. Main Application (`app/main.ts`) + +The UI logic that ties everything together. + +#### Application Lifecycle + +```mermaid +sequenceDiagram + participant User + participant UI as main.ts + participant Wallet as EmbeddedWallet + participant PXE + participant Node as Aztec Node + participant Contract + + User->>UI: Load Page + UI->>Wallet: Initialize PXE + Wallet->>Node: Connect + Wallet->>PXE: Create PXE instance + UI->>Wallet: Check for existing account + Wallet->>UI: Return account (if exists) + UI->>UI: Display UI + + alt No Account Exists + User->>UI: Click "Create Account" + UI->>Wallet: createAccountAndConnect() + Wallet->>PXE: Register account + Wallet->>Contract: Deploy account contract + Contract-->>Wallet: Receipt + Wallet-->>UI: Account address + end + + User->>UI: Select candidate & click "Vote" + UI->>Wallet: Prepare contract call + UI->>PXE: Generate proof (30-60s) + PXE->>Node: Submit transaction + Node->>Contract: Execute cast_vote() + Contract-->>Node: Success + Node-->>UI: Receipt + UI->>Contract: Update vote tally + UI->>User: Display updated results +``` + +#### Page Load Initialization + +```typescript +document.addEventListener('DOMContentLoaded', async () => { + // 1. Validate environment variables + if (!contractAddress) { + throw new Error('Missing required environment variables'); + } + + // 2. Initialize wallet and connect to node + wallet = await EmbeddedWallet.initialize(nodeUrl); + + // 3. Register the voting contract + const instance = await getContractInstanceFromInstantiationParams( + PrivateVotingContract.artifact, + { + deployer: AztecAddress.fromString(deployerAddress), + salt: Fr.fromString(deploymentSalt), + constructorArgs: [AztecAddress.fromString(deployerAddress)], + } + ); + await wallet.registerContract(instance, PrivateVotingContract.artifact); + + // 4. Check for existing account + const account = await wallet.connectExistingAccount(); + + // 5. Load vote tally if account exists + if (account) { + await updateVoteTally(wallet, account); + } +}); +``` + +#### Casting a Vote + +```typescript +voteButton.addEventListener('click', async (e) => { + // 1. Validate input + const candidate = Number(voteInput.value); + if (isNaN(candidate) || candidate < 1 || candidate > 5) { + displayError('Invalid candidate number'); + return; + } + + // 2. Get connected account + const connectedAccount = wallet.getConnectedAccount(); + if (!connectedAccount) { + throw new Error('No account connected'); + } + + // 3. Prepare contract interaction + const votingContract = await PrivateVotingContract.at( + AztecAddress.fromString(contractAddress), + wallet + ); + + // 4. Send transaction and wait for confirmation + await votingContract.methods + .cast_vote(candidate) + .send({ from: connectedAccount }) + .wait(); + + // 5. Update the displayed tally + await updateVoteTally(wallet, connectedAccount); +}); +``` + +#### Updating Vote Tally + +```typescript +async function updateVoteTally(wallet: Wallet, from: AztecAddress) { + const votingContract = await PrivateVotingContract.at( + AztecAddress.fromString(contractAddress), + wallet + ); + + // Query all 5 candidates in parallel + await Promise.all( + Array.from({ length: 5 }, async (_, i) => { + const value = await votingContract.methods + .get_vote(i + 1) + .simulate({ from }); // simulate = free read, no transaction + results[i + 1] = value; + }) + ); + + displayTally(results); +} +``` + +### 4. Deployment Script (`scripts/deploy.ts`) + +Automates the deployment of accounts and contracts. + +```typescript +async function createAccountAndDeployContract() { + // 1. Setup wallet with temporary PXE store + const aztecNode = createAztecNodeClient(AZTEC_NODE_URL); + const wallet = await setupWallet(aztecNode); + + // 2. Register SponsoredFPC contract + await wallet.registerContract( + await getSponsoredPFCContract(), + SponsoredFPCContractArtifact + ); + + // 3. Create deployer account + const accountAddress = await createAccount(wallet); + + // 4. Deploy voting contract + const deploymentInfo = await deployContract(wallet, accountAddress); + + // 5. Save deployment info to .env file + await writeEnvFile(deploymentInfo); + + // 6. Clean up temporary store + fs.rmSync(PXE_STORE_DIR, { recursive: true, force: true }); +} +``` + +**Why this matters**: The `.env` file stores critical deployment information that the web app needs to interact with the contract. + +--- + +## Data Flow + +### Voting Transaction Flow + +```mermaid +flowchart LR + A[User selects candidate] --> B[UI validates input] + B --> C[Wallet prepares transaction] + C --> D[PXE generates ZK proof] + D --> E[Submit to Aztec Node] + E --> F{Nullifier check} + F -->|New nullifier| G[Add nullifier to set] + F -->|Duplicate| H[Reject transaction] + G --> I[Execute add_to_tally_public] + I --> J[Increment vote count] + J --> K[Return receipt to UI] + K --> L[UI updates display] + + style D fill:#ffe1e1 + style F fill:#fff4e1 + style H fill:#ffcccc +``` + +### What Happens When You Vote + +**Step-by-Step Execution**: + +1. **Client Side (Private)**: + + ```typescript + // Your browser generates a proof that says: + // "I know a secret key for address X, and X hasn't voted before" + // The proof does NOT reveal: + // - Your address + // - Which candidate you voted for + // - Your secret key + ``` + +2. **Transaction Submission**: + + ```typescript + // The transaction includes: + // - The ZK proof + // - Your nullifier (cryptographically concealed identifier) + // - The candidate number (encrypted in the private portion) + ``` + +3. **Network Verification**: + + ```typescript + // The network checks: + // 1. Is the proof valid? + // 2. Has this nullifier been used before? + // 3. Is the vote still active? + ``` + +4. **State Update**: + ```typescript + // If all checks pass: + // 1. Store the nullifier (prevents double voting) + // 2. Increment the vote count for the candidate + // 3. Return success + ``` + +### Privacy Guarantees + +| What is Private | What is Public | +| --------------------------------- | ---------------------------------------------- | +| Your vote choice | That a vote was cast | +| Your identity | The total vote count per candidate | +| Your nullifier → identity mapping | Nullifiers themselves (random-looking numbers) | + +--- + +## Smart Contract + +### Contract Lifecycle + +```mermaid +stateDiagram-v2 + [*] --> Deployed: constructor(admin) + Deployed --> Active: vote starts at block + Active --> Active: users cast_vote() + Active --> Ended: admin calls end_vote() + Ended --> [*] + + note right of Active + Private: cast_vote() + Public: add_to_tally_public() + Utility: get_vote() + end note +``` + +### Function Types Explained + +**Private Functions** (`#[external("private")]`): + +- Execute on the client side +- Generate proofs +- State is encrypted +- Example: `cast_vote()` + +**Public Functions** (`#[external("public")]`): + +- Execute on the network +- State is transparent +- Example: `add_to_tally_public()` + +**Internal Functions** (`#[internal]`): + +- Can only be called from within the contract +- Example: `add_to_tally_public()` is internal and can only be called by `cast_vote()` + +**Utility Functions** (`#[external("utility")]`): + +- Unconstrained reads (free, no transaction needed) +- Example: `get_vote()` + +### Why Split Private and Public? + +The `cast_vote` function uses a clever pattern: + +1. **Private part** (`cast_vote`): + + - Validates you haven't voted (creates nullifier) + - Keeps your vote private + - Enqueues a call to the public function + +2. **Public part** (`add_to_tally_public`): + - Updates the public vote count + - Checks vote hasn't ended + - Visible to everyone + +**This separation** allows: + +- Private voting (who voted for what) +- Public results (vote totals) +- No one can link a nullifier back to an address! + +--- + +## Deployment Process + +### Step-by-Step Deployment Guide + +**Prerequisites**: + +```bash +# Install Aztec tools (version 3.0.0-devnet.4) +aztec-up 3.0.0-devnet.4 + +# Install dependencies +yarn install +``` + +**Step 1: Compile Smart Contracts** + +```bash +yarn build-contracts +``` + +What happens: + +1. Noir compiler (`aztec-nargo`) compiles `contracts/src/main.nr` +2. Post-processor generates artifacts +3. TypeScript bindings are generated +4. Artifacts copied to `app/artifacts/` + +**Step 2: Deploy Contracts** + +```bash +yarn deploy-contracts +``` + +Execution flow: + +```typescript +// scripts/deploy.ts +1. setupWallet() // Create temporary PXE +2. createAccount() // Generate & deploy deployer account +3. deployContract() // Deploy voting contract +4. writeEnvFile() // Save deployment info +``` + +Generated `.env` file: + +```env +CONTRACT_ADDRESS=0x1234... # Where the voting contract lives +DEPLOYER_ADDRESS=0x5678... # Who deployed it (becomes admin) +DEPLOYMENT_SALT=0xabcd... # Salt used for deterministic address +AZTEC_NODE_URL=http://localhost:8080 +``` + +**Step 3: Run the Application** + +```bash +yarn dev +``` + +Webpack serves the application at `http://localhost:3000` + +**Step 4: Test** + +```bash +yarn test +``` + +Playwright runs end-to-end tests: + +1. Connects to Aztec Node +2. Creates test accounts +3. Casts votes +4. Verifies results + +--- + +### Resources + +**Official Documentation**: + +- [Aztec Docs](https://docs.aztec.network/) +- [Noir Lang Docs](https://noir-lang.org/) +- [Aztec.js API Reference](https://docs.aztec.network/developers/aztecjs/main) + +**Code Examples**: + +- [Aztec Boxes](https://github.com/AztecProtocol/aztec-boxes) +- [Noir Examples](https://github.com/noir-lang/noir-examples) + +**Community**: + +- [Aztec Discord](https://discord.gg/aztec) +- [Aztec Forum](https://discourse.aztec.network/) + +--- + +## Appendix: Quick Reference + +### Key Files + +| File | Purpose | +| ------------------------ | ---------------------------- | +| `contracts/src/main.nr` | Voting contract logic (Noir) | +| `app/main.ts` | UI and application logic | +| `app/embedded-wallet.ts` | Wallet implementation | +| `scripts/deploy.ts` | Deployment automation | +| `tests/e2e.spec.ts` | End-to-end tests | + +### Important Commands + +```bash +# Development +yarn build-contracts # Compile contracts +yarn deploy-contracts # Deploy to network +yarn dev # Start dev server +yarn test # Run E2E tests + +# Clean slate +yarn clean # Remove build artifacts + +# Production build +yarn build # Build contracts + app +``` + +### Environment Variables + +```env +CONTRACT_ADDRESS=0x... # Deployed contract address +DEPLOYER_ADDRESS=0x... # Contract admin +DEPLOYMENT_SALT=0x... # Deployment salt +AZTEC_NODE_URL=http://... # Node endpoint +PROVER_ENABLED=true # Enable/disable proving +``` + +--- + +_Generated for aztec-web-starter - Aztec 3.0.0-devnet.4_ diff --git a/README.md b/README.md index 1014781..293830e 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ This is an example web app that demonstrates how to interact with an Aztec contr 1. Install the Aztec tools from the first few steps in [Quick Start Guide](https://docs.aztec.network/developers/getting_started). -Please note that this project uses `2.0.2` version of Aztec SDK. If you wish to use a different version, please update the dependencies in the `app/package.json` and in `contracts/Nargo.toml` file to match your version. +Please note that this project uses `3.0.0-devnet.4` version of Aztec SDK. If you wish to use a different version, please update the dependencies in the `app/package.json` and in `contracts/Nargo.toml` file to match your version. -You can install a specific version of Aztec tools by running `aztec-up 0.X.X` +You can install a specific version of Aztec tools by running `aztec-up 3.0.0-devnet.4` 2. Compile smart contracts in `/contracts`: diff --git a/app/embedded-wallet.ts b/app/embedded-wallet.ts index 0443ee2..ec644b2 100644 --- a/app/embedded-wallet.ts +++ b/app/embedded-wallet.ts @@ -1,66 +1,145 @@ -import { - Fr, - createLogger, - createAztecNodeClient, - AztecAddress, - getContractInstanceFromInstantiationParams, - ContractFunctionInteraction, - SponsoredFeePaymentMethod, - type PXE, - AccountWallet, -} from '@aztec/aztec.js'; -import { SponsoredFPCContractArtifact } from '@aztec/noir-contracts.js/SponsoredFPC'; +import { Account, SignerlessAccount } from '@aztec/aztec.js/account'; +import { AztecAddress } from '@aztec/aztec.js/addresses'; +import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts'; +import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; +import { Fr } from '@aztec/aztec.js/fields'; +import { createLogger } from '@aztec/aztec.js/log'; +import { createAztecNodeClient } from '@aztec/aztec.js/node'; +import { type UserFeeOptions, type FeeOptions, BaseWallet, AccountManager, DeployAccountOptions, SimulateOptions } from '@aztec/aztec.js/wallet'; import { SPONSORED_FPC_SALT } from '@aztec/constants'; import { randomBytes } from '@aztec/foundation/crypto'; -import { getEcdsaRAccount } from '@aztec/accounts/ecdsa/lazy'; -import { getSchnorrAccount } from '@aztec/accounts/schnorr/lazy'; -import { getPXEServiceConfig } from '@aztec/pxe/config'; -import { createPXEService } from '@aztec/pxe/client/lazy'; +import { EcdsaRAccountContract } from '@aztec/accounts/ecdsa/lazy'; +import { SchnorrAccountContract } from '@aztec/accounts/schnorr/lazy'; + +import { getPXEConfig } from '@aztec/pxe/config'; +import { createPXE } from '@aztec/pxe/client/lazy'; +import { getInitialTestAccountsData } from '@aztec/accounts/testing/lazy'; +import { + getStubAccountContractArtifact, + createStubAccount, +} from '@aztec/accounts/stub/lazy'; import { - type ContractArtifact, - getDefaultInitializer, -} from '@aztec/stdlib/abi'; -import { getInitialTestAccounts } from '@aztec/accounts/testing'; + ExecutionPayload, + mergeExecutionPayloads, +} from '@aztec/entrypoints/payload'; +import { TxSimulationResult } from '@aztec/stdlib/tx'; +import { GasSettings } from '@aztec/stdlib/gas'; +import { + AccountFeePaymentMethodOptions, + DefaultAccountEntrypointOptions, +} from '@aztec/entrypoints/account'; -const PROVER_ENABLED = true; +const PROVER_ENABLED = false; const logger = createLogger('wallet'); const LocalStorageKey = 'aztec-account'; -// This is a minimal implementation of an Aztec wallet, that saves the private keys in local storage. -// This does not implement `@aztec.js/Wallet` interface though -// This is not meant for production use -export class EmbeddedWallet { - private pxe!: PXE; - connectedAccount: AccountWallet | null = null; +// This is a minimal implementation of an Aztec wallet +// WARNING: This example code stores the wallet in plain text in LocalStorage. Do not use in production without understanding the security implications +export class EmbeddedWallet extends BaseWallet { + connectedAccount: AztecAddress | null = null; + protected accounts: Map = new Map(); + + protected async getAccountFromAddress( + address: AztecAddress + ): Promise { + let account: Account | undefined; + if (address.equals(AztecAddress.ZERO)) { + const chainInfo = await this.getChainInfo(); + account = new SignerlessAccount(chainInfo); + } else { + account = this.accounts.get(address?.toString() ?? ''); + } - constructor(private nodeUrl: string) { } + if (!account) { + throw new Error(`Account not found in wallet for address: ${address}`); + } + + return account; + } + + /** + * Returns default values for the transaction fee options + * if they were omitted by the user. + * This wallet will use the sponsoredFPC payment method + * unless otherwise stated + * @param from - The address where the transaction is being sent from + * @param userFeeOptions - User-provided fee options, which might be incomplete + * @returns - Populated fee options that can be used to create a transaction execution request + */ + override async getDefaultFeeOptions( + from: AztecAddress, + userFeeOptions: UserFeeOptions | undefined + ): Promise { + const maxFeesPerGas = + userFeeOptions?.gasSettings?.maxFeesPerGas ?? + (await this.aztecNode.getCurrentBaseFees()).mul(1 + this.baseFeePadding); + let walletFeePaymentMethod; + let accountFeePaymentMethodOptions; + // The transaction does not include a fee payment method, so we set a default + if (!userFeeOptions?.embeddedPaymentMethodFeePayer) { + const sponsoredFPCContract = + await EmbeddedWallet.#getSponsoredPFCContract(); + walletFeePaymentMethod = new SponsoredFeePaymentMethod( + sponsoredFPCContract.instance.address + ); + accountFeePaymentMethodOptions = AccountFeePaymentMethodOptions.EXTERNAL; + } else { + // The transaction includes fee payment method, so we check if we are the fee payer for it + // (this can only happen if the embedded payment method is FeeJuiceWithClaim) + accountFeePaymentMethodOptions = from.equals( + userFeeOptions.embeddedPaymentMethodFeePayer + ) + ? AccountFeePaymentMethodOptions.FEE_JUICE_WITH_CLAIM + : AccountFeePaymentMethodOptions.EXTERNAL; + } + const gasSettings: GasSettings = GasSettings.default({ + ...userFeeOptions?.gasSettings, + maxFeesPerGas, + }); + this.log.debug(`Using L2 gas settings`, gasSettings); + return { + gasSettings, + walletFeePaymentMethod, + accountFeePaymentMethodOptions, + }; + } + + getAccounts() { + return Promise.resolve( + Array.from(this.accounts.values()).map((acc) => ({ + alias: '', + item: acc.getAddress(), + })) + ); + } - async initialize() { + static async initialize(nodeUrl: string) { // Create Aztec Node Client - const aztecNode = await createAztecNodeClient(this.nodeUrl); + const aztecNode = createAztecNodeClient(nodeUrl); - // Create PXE Service - const config = getPXEServiceConfig(); + // Create PXE + const config = getPXEConfig(); config.l1Contracts = await aztecNode.getL1ContractAddresses(); config.proverEnabled = PROVER_ENABLED; - this.pxe = await createPXEService(aztecNode, config, { + const pxe = await createPXE(aztecNode, config, { useLogSuffix: true, }); // Register Sponsored FPC Contract with PXE - await this.pxe.registerContract({ - instance: await this.#getSponsoredPFCContract(), - artifact: SponsoredFPCContractArtifact, - }); + await pxe.registerContract(await EmbeddedWallet.#getSponsoredPFCContract()); // Log the Node Info - const nodeInfo = await this.pxe.getNodeInfo(); + const nodeInfo = await aztecNode.getNodeInfo(); logger.info('PXE Connected to node', nodeInfo); + return new EmbeddedWallet(pxe, aztecNode); } // Internal method to use the Sponsored FPC Contract for fee payment - async #getSponsoredPFCContract() { + static async #getSponsoredPFCContract() { + const { SponsoredFPCContractArtifact } = await import( + '@aztec/noir-contracts.js/SponsoredFPC' + ); const instance = await getContractInstanceFromInstantiationParams( SponsoredFPCContractArtifact, { @@ -68,7 +147,10 @@ export class EmbeddedWallet { } ); - return instance; + return { + instance, + artifact: SponsoredFPCContractArtifact, + }; } getConnectedAccount() { @@ -78,21 +160,38 @@ export class EmbeddedWallet { return this.connectedAccount; } + private async registerAccount(accountManager: AccountManager) { + const instance = await accountManager.getInstance(); + const artifact = await accountManager + .getAccountContract() + .getContractArtifact(); + + await this.registerContract( + instance, + artifact, + accountManager.getSecretKey() + ); + } + async connectTestAccount(index: number) { - const testAccounts = await getInitialTestAccounts(); - const account = testAccounts[index]; - const schnorrAccount = await getSchnorrAccount( - this.pxe, - account.secret, - account.signingKey, - account.salt + const testAccounts = await getInitialTestAccountsData(); + const accountData = testAccounts[index]; + + const accountManager = await AccountManager.create( + this, + accountData.secret, + new SchnorrAccountContract(accountData.signingKey), + accountData.salt ); - await schnorrAccount.register(); - const wallet = await schnorrAccount.getWallet(); + await this.registerAccount(accountManager); + this.accounts.set( + accountManager.address.toString(), + await accountManager.getAccount() + ); - this.connectedAccount = wallet; - return wallet; + this.connectedAccount = accountManager.address; + return this.connectedAccount; } // Create a new account @@ -107,51 +206,54 @@ export class EmbeddedWallet { const signingKey = randomBytes(32); // Create an ECDSA account - const ecdsaAccount = await getEcdsaRAccount( - this.pxe, + const contract = new EcdsaRAccountContract(signingKey); + const accountManager = await AccountManager.create( + this, secretKey, - signingKey, + contract, salt ); + // Register the account with PXE BEFORE deploying + // This is needed because the deployment process requires the account to exist in the wallet + await this.registerAccount(accountManager); + this.accounts.set( + accountManager.address.toString(), + await accountManager.getAccount() + ); + // Deploy the account - const deployMethod = await ecdsaAccount.getDeployMethod(); - const sponsoredPFCContract = await this.#getSponsoredPFCContract(); - const deployOpts = { + const deployMethod = await accountManager.getDeployMethod(); + const sponsoredPFCContract = + await EmbeddedWallet.#getSponsoredPFCContract(); + const deployOpts: DeployAccountOptions = { from: AztecAddress.ZERO, - contractAddressSalt: Fr.fromString(ecdsaAccount.salt.toString()), fee: { - paymentMethod: await ecdsaAccount.getSelfPaymentMethod( - new SponsoredFeePaymentMethod(sponsoredPFCContract.address) + paymentMethod: new SponsoredFeePaymentMethod( + sponsoredPFCContract.instance.address ), }, - universalDeploy: true, skipClassPublication: true, skipInstancePublication: true, }; - const provenInteraction = await deployMethod.prove(deployOpts); - const receipt = await provenInteraction.send().wait({ timeout: 120 }); + const receipt = await deployMethod.send(deployOpts).wait({ timeout: 120 }); logger.info('Account deployed', receipt); // Store the account in local storage - const ecdsaWallet = await ecdsaAccount.getWallet(); localStorage.setItem( LocalStorageKey, JSON.stringify({ - address: ecdsaWallet.getAddress().toString(), + address: accountManager.address.toString(), signingKey: signingKey.toString('hex'), secretKey: secretKey.toString(), salt: salt.toString(), }) ); - // Register the account with PXE - await ecdsaAccount.register(); - this.connectedAccount = ecdsaWallet; - - return ecdsaWallet; + this.connectedAccount = accountManager.address; + return this.connectedAccount; } async connectExistingAccount() { @@ -162,63 +264,88 @@ export class EmbeddedWallet { } const parsed = JSON.parse(account); - const ecdsaAccount = await getEcdsaRAccount( - this.pxe, + const contract = new EcdsaRAccountContract( + Buffer.from(parsed.signingKey, 'hex') + ); + const accountManager = await AccountManager.create( + this, Fr.fromString(parsed.secretKey), - Buffer.from(parsed.signingKey, 'hex'), + contract, Fr.fromString(parsed.salt) ); - await ecdsaAccount.register(); - const ecdsaWallet = await ecdsaAccount.getWallet(); - - this.connectedAccount = ecdsaWallet; - return ecdsaWallet; + await this.registerAccount(accountManager); + this.accounts.set( + accountManager.address.toString(), + await accountManager.getAccount() + ); + this.connectedAccount = accountManager.address; + return this.connectedAccount; } - // Register a contract with PXE - async registerContract( - artifact: ContractArtifact, - deployer: AztecAddress, - deploymentSalt: Fr, - constructorArgs: any[] - ) { + private async getFakeAccountDataFor(address: AztecAddress) { + const chainInfo = await this.getChainInfo(); + const originalAccount = await this.getAccountFromAddress(address); + const originalAddress = await originalAccount.getCompleteAddress(); + const { contractInstance } = await this.pxe.getContractMetadata( + originalAddress.address + ); + if (!contractInstance) { + throw new Error( + `No contract instance found for address: ${originalAddress.address}` + ); + } + const stubAccount = createStubAccount(originalAddress, chainInfo); + const StubAccountContractArtifact = await getStubAccountContractArtifact(); const instance = await getContractInstanceFromInstantiationParams( - artifact, - { - constructorArtifact: getDefaultInitializer(artifact), - constructorArgs: constructorArgs, - deployer: deployer, - salt: deploymentSalt, - } + StubAccountContractArtifact, + { salt: Fr.random() } ); - - await this.pxe.registerContract({ + return { + account: stubAccount, instance, - artifact, - }); - } - - // Send a transaction with the Sponsored FPC Contract for fee payment - async sendTransaction(interaction: ContractFunctionInteraction) { - const sponsoredPFCContract = await this.#getSponsoredPFCContract(); - const provenInteraction = await interaction.prove({ - from: this.connectedAccount.getAddress(), - fee: { - paymentMethod: new SponsoredFeePaymentMethod( - sponsoredPFCContract.address - ), - }, - }); - - await provenInteraction.send().wait({ timeout: 120 }); + artifact: StubAccountContractArtifact, + }; } - // Simulate a transaction - async simulateTransaction(interaction: ContractFunctionInteraction) { - const res = await interaction.simulate({ - from: this.connectedAccount.getAddress(), - }); - return res; + async simulateTx( + executionPayload: ExecutionPayload, + opts: SimulateOptions + ): Promise { + const feeOptions = opts.fee?.estimateGas + ? await this.getFeeOptionsForGasEstimation(opts.from, opts.fee) + : await this.getDefaultFeeOptions(opts.from, opts.fee); + const feeExecutionPayload = + await feeOptions.walletFeePaymentMethod?.getExecutionPayload(); + const executionOptions: DefaultAccountEntrypointOptions = { + txNonce: Fr.random(), + cancellable: this.cancellableTransactions, + feePaymentMethodOptions: feeOptions.accountFeePaymentMethodOptions, + }; + const finalExecutionPayload = feeExecutionPayload + ? mergeExecutionPayloads([feeExecutionPayload, executionPayload]) + : executionPayload; + const { + account: fromAccount, + instance, + artifact, + } = await this.getFakeAccountDataFor(opts.from); + const txRequest = await fromAccount.createTxExecutionRequest( + finalExecutionPayload, + feeOptions.gasSettings, + executionOptions + ); + const contractOverrides = { + [opts.from.toString()]: { instance, artifact }, + }; + return this.pxe.simulateTx( + txRequest, + true /* simulatePublic */, + true, + true, + { + contracts: contractOverrides, + } + ); } -} \ No newline at end of file +} diff --git a/app/main.ts b/app/main.ts index bfc4f72..dc7f063 100644 --- a/app/main.ts +++ b/app/main.ts @@ -1,18 +1,16 @@ -import './style.css'; -import { - AztecAddress, - Fr, - type Wallet, - type AccountWallet, -} from '@aztec/aztec.js'; +import { AztecAddress } from '@aztec/aztec.js/addresses'; +import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts'; +import { Fr } from '@aztec/aztec.js/fields'; +import type { Wallet } from '@aztec/aztec.js/wallet'; import { EmbeddedWallet } from './embedded-wallet'; import { PrivateVotingContract } from './artifacts/PrivateVoting'; // DOM Elements const createAccountButton = document.querySelector('#create-account')!; -const connectTestAccountButton = - document.querySelector('#connect-test-account')!; +const connectTestAccountButton = document.querySelector( + '#connect-test-account' +)!; const voteForm = document.querySelector('.vote-form')!; const voteButton = document.querySelector('#vote-button')!; const voteInput = document.querySelector('#vote-input')!; @@ -21,7 +19,9 @@ const accountDisplay = const statusMessage = document.querySelector('#status-message')!; const voteResults = document.querySelector('#vote-results')!; -const testAccountNumber = document.querySelector('#test-account-number')!; +const testAccountNumber = document.querySelector( + '#test-account-number' +)!; // Local variables let wallet: EmbeddedWallet; @@ -39,17 +39,19 @@ document.addEventListener('DOMContentLoaded', async () => { // Initialize the PXE and the wallet displayStatusMessage('Connecting to node and initializing wallet...'); - wallet = new EmbeddedWallet(nodeUrl); - await wallet.initialize(); + wallet = await EmbeddedWallet.initialize(nodeUrl); // Register voting contract with wallet/PXE displayStatusMessage('Registering contracts...'); - await wallet.registerContract( + const instance = await getContractInstanceFromInstantiationParams( PrivateVotingContract.artifact, - AztecAddress.fromString(deployerAddress), - Fr.fromString(deploymentSalt), - [AztecAddress.fromString(deployerAddress)] + { + deployer: AztecAddress.fromString(deployerAddress), + salt: Fr.fromString(deploymentSalt), + constructorArgs: [AztecAddress.fromString(deployerAddress)], + } ); + await wallet.registerContract(instance, PrivateVotingContract.artifact); // Get existing account displayStatusMessage('Checking for existing account...'); @@ -59,7 +61,7 @@ document.addEventListener('DOMContentLoaded', async () => { // Refresh tally if account exists if (account) { displayStatusMessage('Updating vote tally...'); - await updateVoteTally(account); + await updateVoteTally(wallet, account); displayStatusMessage(''); } else { displayStatusMessage('Create a new account to cast a vote.'); @@ -85,7 +87,7 @@ createAccountButton.addEventListener('click', async (e) => { displayAccount(); displayStatusMessage(''); - await updateVoteTally(account); + await updateVoteTally(wallet, account); } catch (error) { console.error(error); displayError( @@ -110,7 +112,7 @@ connectTestAccountButton.addEventListener('click', async (e) => { const index = Number(testAccountNumber.value) - 1; const testAccount = await wallet.connectTestAccount(index); displayAccount(); - await updateVoteTally(testAccount); + await updateVoteTally(wallet, testAccount); } catch (error) { console.error(error); displayError( @@ -147,16 +149,18 @@ voteButton.addEventListener('click', async (e) => { // Prepare contract interaction const votingContract = await PrivateVotingContract.at( AztecAddress.fromString(contractAddress), - connectedAccount + wallet ); - const interaction = votingContract.methods.cast_vote(candidate); - // Send transaction - await wallet.sendTransaction(interaction); + // Send tx + await votingContract.methods + .cast_vote(candidate) + .send({ from: connectedAccount }) + .wait(); // Update tally displayStatusMessage('Updating vote tally...'); - await updateVoteTally(connectedAccount); + await updateVoteTally(wallet, connectedAccount); displayStatusMessage(''); } catch (error) { console.error(error); @@ -171,7 +175,7 @@ voteButton.addEventListener('click', async (e) => { }); // Update the tally -async function updateVoteTally(account: Wallet) { +async function updateVoteTally(wallet: Wallet, from: AztecAddress) { let results: { [key: number]: number } = {}; displayStatusMessage('Updating vote tally...'); @@ -179,13 +183,14 @@ async function updateVoteTally(account: Wallet) { // Prepare contract interaction const votingContract = await PrivateVotingContract.at( AztecAddress.fromString(contractAddress), - account + wallet ); await Promise.all( Array.from({ length: 5 }, async (_, i) => { - const interaction = votingContract.methods.get_vote(i + 1); - const value = await wallet.simulateTransaction(interaction); + const value = await votingContract.methods + .get_vote(i + 1) + .simulate({ from }); results[i + 1] = value; }) ); @@ -219,7 +224,7 @@ function displayAccount() { return; } - const address = connectedAccount.getAddress().toString(); + const address = connectedAccount.toString(); const content = `Account: ${address.slice(0, 6)}...${address.slice(-4)}`; accountDisplay.textContent = content; createAccountButton.style.display = 'none'; diff --git a/contracts/Nargo.toml b/contracts/Nargo.toml index d7c4edf..8b31b5f 100644 --- a/contracts/Nargo.toml +++ b/contracts/Nargo.toml @@ -3,6 +3,4 @@ name = "private_voting" type = "contract" [dependencies] -aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="v2.0.2", directory="noir-projects/aztec-nr/aztec" } -value_note = { git="https://github.com/AztecProtocol/aztec-packages/", tag="v2.0.2", directory="noir-projects/aztec-nr/value-note"} -easy_private_state = { git="https://github.com/AztecProtocol/aztec-packages/", tag="v2.0.2", directory="noir-projects/aztec-nr/easy-private-state"} +aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="v3.0.0-devnet.4", directory="noir-projects/aztec-nr/aztec" } diff --git a/contracts/src/main.nr b/contracts/src/main.nr index f99f495..300b4e8 100644 --- a/contracts/src/main.nr +++ b/contracts/src/main.nr @@ -1,13 +1,24 @@ use dep::aztec::macros::aztec; +/** + * WARNING: this is no-longer considered a good example of an Aztec contract, + * because it touches low-level functions and concepts that oughtn't be + * seen by a typical user. + * The syntax and user-experience of Aztec contracts has since improved, so you + * should seek alternative examples, please. + */ + #[aztec] pub contract PrivateVoting { - use dep::aztec::keys::getters::get_public_keys; - use dep::aztec::macros::{ - functions::{initializer, internal, private, public, utility}, - storage::storage, + use dep::aztec::{ + keys::getters::get_public_keys, + macros::{functions::{external, initializer, internal}, storage::storage}, + }; + use dep::aztec::protocol_types::{ + address::AztecAddress, + hash::poseidon2_hash, + traits::{Hash, ToField}, }; - use dep::aztec::protocol_types::{address::AztecAddress, traits::{Hash, ToField}}; use dep::aztec::state_vars::{Map, PublicImmutable, PublicMutable}; #[storage] @@ -18,27 +29,30 @@ pub contract PrivateVoting { active_at_block: PublicImmutable, // when people can start voting } - #[public] + #[external("public")] #[initializer] + // annotation to mark function as a constructor fn constructor(admin: AztecAddress) { storage.admin.write(admin); storage.vote_ended.write(false); storage.active_at_block.initialize(context.block_number()); } - #[private] + #[external("private")] + // annotation to mark function as private and expose private context fn cast_vote(candidate: Field) { - let msg_sender_npk_m_hash = get_public_keys(context.msg_sender()).npk_m.hash(); + let msg_sender_nullifier_public_key_message_hash = + get_public_keys(context.msg_sender().unwrap()).npk_m.hash(); - let secret = context.request_nsk_app(msg_sender_npk_m_hash); // get secret key of caller of function - let nullifier = std::hash::pedersen_hash([context.msg_sender().to_field(), secret]); // derive nullifier from sender and secret + let secret = context.request_nsk_app(msg_sender_nullifier_public_key_message_hash); // get secret key of caller of function + let nullifier = poseidon2_hash([context.msg_sender().unwrap().to_field(), secret]); // derive nullifier from sender and secret context.push_nullifier(nullifier); PrivateVoting::at(context.this_address()).add_to_tally_public(candidate).enqueue( &mut context, ); } - #[public] + #[external("public")] #[internal] fn add_to_tally_public(candidate: Field) { assert(storage.vote_ended.read() == false, "Vote has ended"); // assert that vote has not ended @@ -46,13 +60,12 @@ pub contract PrivateVoting { storage.tally.at(candidate).write(new_tally); } - #[public] + #[external("public")] fn end_vote() { - assert(storage.admin.read().eq(context.msg_sender()), "Only admin can end votes"); // assert that caller is admin + assert(storage.admin.read().eq(context.msg_sender().unwrap()), "Only admin can end votes"); // assert that caller is admin storage.vote_ended.write(true); } - - #[utility] + #[external("utility")] unconstrained fn get_vote(candidate: Field) -> Field { storage.tally.at(candidate).read() } diff --git a/package.json b/package.json index fd80a33..54c5e62 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,15 @@ "lint": "prettier --check ./src" }, "dependencies": { - "@aztec/accounts": "2.0.2", - "@aztec/aztec.js": "2.0.2", - "@aztec/constants": "2.0.2", - "@aztec/foundation": "2.0.2", - "@aztec/kv-store": "2.0.2", - "@aztec/noir-contracts.js": "2.0.2", - "@aztec/pxe": "2.0.2", - "@aztec/stdlib": "2.0.2" + "@aztec/accounts": "3.0.0-devnet.4", + "@aztec/aztec.js": "3.0.0-devnet.4", + "@aztec/constants": "3.0.0-devnet.4", + "@aztec/foundation": "3.0.0-devnet.4", + "@aztec/kv-store": "3.0.0-devnet.4", + "@aztec/noir-contracts.js": "3.0.0-devnet.4", + "@aztec/pxe": "3.0.0-devnet.4", + "@aztec/stdlib": "3.0.0-devnet.4", + "@aztec/test-wallet": "3.0.0-devnet.4" }, "devDependencies": { "@playwright/test": "1.52.0", @@ -45,7 +46,7 @@ "stream-browserify": "^3.0.0", "style-loader": "^3.3.4", "ts-loader": "^9.5.1", - "typescript": "^5.3.3", + "typescript": "^5.7.3", "util": "^0.12.5", "webpack": "^5.99.6", "webpack-cli": "^6.0.1", diff --git a/scripts/deploy.ts b/scripts/deploy.ts index 7e2bdc4..ebbf222 100644 --- a/scripts/deploy.ts +++ b/scripts/deploy.ts @@ -1,22 +1,22 @@ -import fs from 'fs'; -import path from 'path'; +import { AztecAddress } from '@aztec/aztec.js/addresses'; import { - AztecAddress, - createAztecNodeClient, DeployMethod, - Fr, getContractInstanceFromInstantiationParams, - PublicKeys, - type PXE, - SponsoredFeePaymentMethod, - type Wallet, -} from '@aztec/aztec.js'; -import { createPXEService, getPXEServiceConfig } from '@aztec/pxe/server'; -import { getEcdsaRAccount } from '@aztec/accounts/ecdsa'; +} from '@aztec/aztec.js/contracts'; +import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; +import { Fr } from '@aztec/aztec.js/fields'; +import { PublicKeys } from '@aztec/aztec.js/keys'; +import { createAztecNodeClient } from '@aztec/aztec.js/node'; +import type { DeployAccountOptions, Wallet } from '@aztec/aztec.js/wallet'; +import { type AztecNode } from '@aztec/aztec.js/node'; +import { SPONSORED_FPC_SALT } from '@aztec/constants'; import { createStore } from '@aztec/kv-store/lmdb'; -import { getDefaultInitializer } from '@aztec/stdlib/abi'; import { SponsoredFPCContractArtifact } from '@aztec/noir-contracts.js/SponsoredFPC'; -import { SPONSORED_FPC_SALT } from '@aztec/constants'; +import { getPXEConfig } from '@aztec/pxe/server'; +import { getDefaultInitializer } from '@aztec/stdlib/abi'; +import { TestWallet } from '@aztec/test-wallet/server'; +import fs from 'fs'; +import path from 'path'; // @ts-ignore import { PrivateVotingContract } from '../app/artifacts/PrivateVoting.ts'; @@ -26,28 +26,22 @@ const WRITE_ENV_FILE = process.env.WRITE_ENV_FILE === 'false' ? false : true; const PXE_STORE_DIR = path.join(import.meta.dirname, '.store'); -async function setupPXE() { - const aztecNode = createAztecNodeClient(AZTEC_NODE_URL); - +async function setupWallet(aztecNode: AztecNode) { fs.rmSync(PXE_STORE_DIR, { recursive: true, force: true }); const store = await createStore('pxe', { dataDirectory: PXE_STORE_DIR, - dataStoreMapSizeKB: 1e6, + dataStoreMapSizeKb: 1e6, }); - const config = getPXEServiceConfig(); + const config = getPXEConfig(); config.dataDirectory = 'pxe'; config.proverEnabled = PROVER_ENABLED; - const configWithContracts = { - ...config, - }; - const pxe = await createPXEService(aztecNode, configWithContracts, { + return await TestWallet.create(aztecNode, config, { store, useLogSuffix: true, }); - return pxe; } async function getSponsoredPFCContract() { @@ -61,39 +55,34 @@ async function getSponsoredPFCContract() { return instance; } -async function createAccount(pxe: PXE) { +async function createAccount(wallet: TestWallet) { const salt = Fr.random(); const secretKey = Fr.random(); const signingKey = Buffer.alloc(32, Fr.random().toBuffer()); - const ecdsaAccount = await getEcdsaRAccount(pxe, secretKey, signingKey, salt); + const accountManager = await wallet.createECDSARAccount( + secretKey, + salt, + signingKey + ); - const deployMethod = await ecdsaAccount.getDeployMethod(); + const deployMethod = await accountManager.getDeployMethod(); const sponsoredPFCContract = await getSponsoredPFCContract(); - const deployOpts = { + const deployOpts: DeployAccountOptions = { from: AztecAddress.ZERO, - contractAddressSalt: Fr.fromString(ecdsaAccount.salt.toString()), fee: { - paymentMethod: await ecdsaAccount.getSelfPaymentMethod( - new SponsoredFeePaymentMethod(sponsoredPFCContract.address) + paymentMethod: new SponsoredFeePaymentMethod( + sponsoredPFCContract.address ), }, - universalDeploy: true, skipClassPublication: true, skipInstancePublication: true, }; - const provenInteraction = await deployMethod.prove(deployOpts); - await provenInteraction.send().wait({ timeout: 120 }); - - await ecdsaAccount.register(); - const wallet = await ecdsaAccount.getWallet(); + await deployMethod.send(deployOpts).wait({ timeout: 120 }); - return { - wallet, - signingKey, - }; + return accountManager.address; } -async function deployContract(pxe: PXE, deployer: Wallet) { +async function deployContract(wallet: Wallet, deployer: AztecAddress) { const salt = Fr.random(); const contract = await getContractInstanceFromInstantiationParams( PrivateVotingContract.artifact, @@ -102,42 +91,40 @@ async function deployContract(pxe: PXE, deployer: Wallet) { constructorArtifact: getDefaultInitializer( PrivateVotingContract.artifact ), - constructorArgs: [deployer.getAddress().toField()], - deployer: deployer.getAddress(), + constructorArgs: [deployer.toField()], + deployer: deployer, salt, } ); const deployMethod = new DeployMethod( contract.publicKeys, - deployer, + wallet, PrivateVotingContract.artifact, (address: AztecAddress, wallet: Wallet) => PrivateVotingContract.at(address, wallet), - [deployer.getAddress().toField()], + [deployer.toField()], getDefaultInitializer(PrivateVotingContract.artifact)?.name ); const sponsoredPFCContract = await getSponsoredPFCContract(); - const provenInteraction = await deployMethod.prove({ - from: deployer.getAddress(), - contractAddressSalt: salt, - fee: { - paymentMethod: new SponsoredFeePaymentMethod( - sponsoredPFCContract.address - ), - }, - }); - await provenInteraction.send().wait({ timeout: 120 }); - await pxe.registerContract({ - instance: contract, - artifact: PrivateVotingContract.artifact, - }); + await deployMethod + .send({ + from: deployer, + contractAddressSalt: salt, + fee: { + paymentMethod: new SponsoredFeePaymentMethod( + sponsoredPFCContract.address + ), + }, + }) + .wait({ timeout: 120 }); + await wallet.registerContract(contract, PrivateVotingContract.artifact); return { contractAddress: contract.address.toString(), - deployerAddress: deployer.getAddress().toString(), + deployerAddress: deployer.toString(), deploymentSalt: salt.toString(), }; } @@ -164,32 +151,20 @@ async function writeEnvFile(deploymentInfo) { } async function createAccountAndDeployContract() { - const pxe = await setupPXE(); + const aztecNode = createAztecNodeClient(AZTEC_NODE_URL); + const wallet = await setupWallet(aztecNode); // Register the SponsoredFPC contract (for sponsored fee payments) - await pxe.registerContract({ - instance: await getSponsoredPFCContract(), - artifact: SponsoredFPCContractArtifact, - }); + await wallet.registerContract( + await getSponsoredPFCContract(), + SponsoredFPCContractArtifact + ); // Create a new account - const { wallet /* signingKey */ } = await createAccount(pxe); - - // // Save the wallet info - // const walletInfo = { - // address: wallet.getAddress().toString(), - // salt: wallet.salt.toString(), - // secretKey: wallet.getSecretKey().toString(), - // signingKey: Buffer.from(signingKey).toString('hex'), - // }; - // fs.writeFileSync( - // path.join(import.meta.dirname, '../wallet-info.json'), - // JSON.stringify(walletInfo, null, 2) - // ); - // console.log('\n\n\nWallet info saved to wallet-info.json\n\n\n'); + const accountAddress = await createAccount(wallet); // Deploy the contract - const deploymentInfo = await deployContract(pxe, wallet); + const deploymentInfo = await deployContract(wallet, accountAddress); // Save the deployment info to app/public if (WRITE_ENV_FILE) { @@ -205,4 +180,4 @@ createAccountAndDeployContract().catch((error) => { process.exit(1); }); -export { createAccountAndDeployContract }; \ No newline at end of file +export { createAccountAndDeployContract }; diff --git a/tests/e2e.spec.ts b/tests/e2e.spec.ts index 85a2b7e..3395e66 100644 --- a/tests/e2e.spec.ts +++ b/tests/e2e.spec.ts @@ -1,25 +1,40 @@ import { test, expect } from '@playwright/test'; -const proofTimeout = 1_200_000; +// Time take to generate a proof. +const proofTimeout = 250_000; -test.beforeAll(async ({ }, { config }) => { +test.beforeAll(async () => { // Make sure the node is running const nodeUrl = process.env.AZTEC_NODE_URL || 'http://localhost:8080'; - const nodeResp = await fetch(nodeUrl + "/status"); + const nodeResp = await fetch(nodeUrl + '/status'); if (!nodeResp.ok) { - throw new Error(`Failed to connect to node. This test assumes you have a Sandbox running at ${nodeUrl}.`); - } - - // Make sure the dev server is running - const devServerUrl = config.webServer.url; - const serverResp = await fetch(devServerUrl); - if (!serverResp.ok) { - throw new Error(`Failed to connect to app server at ${devServerUrl}.`); + throw new Error( + `Failed to connect to node. This test assumes you have a Sandbox running at ${nodeUrl}.` + ); } }); - test('create account and cast vote', async ({ page }, testInfo) => { + page.on('console', (msg) => { + const text = msg.text(); + if (msg.type() === 'error') { + console.error(text); + // NOTE: this block is speculative. We were too busy to test if it worked - if we get real errors + // distinguished from timeouts, then it worked. + // Fail immediately on JavaScript errors to avoid timeout + if ( + text.includes('Uncaught') || + text.includes('TypeError') || + text.includes('ReferenceError') || + text.includes('SyntaxError') || + text.includes('RangeError') + ) { + throw new Error(`JavaScript error detected: ${text}`); + } + } else { + console.log(text); + } + }); await page.goto('/'); await expect(page).toHaveTitle(/Private Voting/); @@ -36,9 +51,9 @@ test('create account and cast vote', async ({ page }, testInfo) => { // Select different account for each browser const testAccountNumber = { - 'chromium': 1, - 'firefox': 2, - 'webkit': 3, + chromium: 1, + firefox: 2, + webkit: 3, }[testInfo.project.name]; await selectTestAccount.selectOption(testAccountNumber.toString()); @@ -50,9 +65,9 @@ test('create account and cast vote', async ({ page }, testInfo) => { // Choose the candidate to vote for based on the browser used to run the test. // This is a hack to avoid race conditions when tests are run in parallel against the same network. const candidateId = { - 'chromium': 2, - 'firefox': 3, - 'webkit': 4, + chromium: 2, + firefox: 3, + webkit: 4, }[testInfo.project.name]; await expect(voteInput).toBeVisible(); @@ -61,7 +76,7 @@ test('create account and cast vote', async ({ page }, testInfo) => { await voteButton.click(); - // This will take some time to complete (Client IVC proof generation) + // This will take some time to complete (chonk proof generation) // Button is enabled when the transaction is complete await expect(voteButton).toBeEnabled({ enabled: true, @@ -69,5 +84,7 @@ test('create account and cast vote', async ({ page }, testInfo) => { }); // Verify vote results - await expect(voteResults).toHaveText(new RegExp(`Candidate ${candidateId}: 1 votes`)); + await expect(voteResults).toHaveText( + new RegExp(`Candidate ${candidateId}: 1 votes`) + ); }); diff --git a/tsconfig.json b/tsconfig.json index e5c1b26..dc1263c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,16 @@ { "compilerOptions": { - "target": "es2020", + "target": "ES2022", + "lib": ["ES2022", "DOM"], "outDir": "artifacts/build", "module": "ESNext", "moduleResolution": "Bundler", - "skipLibCheck": true + "skipLibCheck": true, + "strict": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true }, "include": [ "app/**/*.ts", diff --git a/yarn.lock b/yarn.lock index a4f11f6..c39ce17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,63 +2,632 @@ # yarn lockfile v1 -"@adraffy/ens-normalize@^1.10.1": - version "1.11.0" - resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz" - integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== +"@adraffy/ens-normalize@^1.11.0": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz#6c2d657d4b2dfb37f8ea811dcb3e60843d4ac24a" + integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== -"@aztec/accounts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-2.0.2.tgz#37986b54968324bc711211d471b81e006869627d" - integrity sha512-BZFQuRBCAJe+IZtlfASRk7Ae0x8B8decq+EhFvd258ShkVqw9uKoH4AKEQqQ3W1hJnJ/mnXRrpgt9Kdl/D67NA== - dependencies: - "@aztec/aztec.js" "2.0.2" - "@aztec/entrypoints" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/stdlib" "2.0.2" +"@aws-crypto/crc32@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" + integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/crc32c@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e" + integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/sha1-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4" + integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg== + dependencies: + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== + dependencies: + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" + integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== + dependencies: + tslib "^2.6.2" + +"@aws-crypto/util@5.2.0", "@aws-crypto/util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" + integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-s3@^3.892.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.925.0.tgz#34312374d7d99fccc1c137a335e64e7426c6e443" + integrity sha512-imAul+6pyJYH4cbxPz1OiFXxrKKTRqVzlT2e0M6zbPHmUcJsF5E+b+4qvHQChU8wFGtIWJHH/JChF2ibfTnXdA== + dependencies: + "@aws-crypto/sha1-browser" "5.2.0" + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/credential-provider-node" "3.925.0" + "@aws-sdk/middleware-bucket-endpoint" "3.922.0" + "@aws-sdk/middleware-expect-continue" "3.922.0" + "@aws-sdk/middleware-flexible-checksums" "3.922.0" + "@aws-sdk/middleware-host-header" "3.922.0" + "@aws-sdk/middleware-location-constraint" "3.922.0" + "@aws-sdk/middleware-logger" "3.922.0" + "@aws-sdk/middleware-recursion-detection" "3.922.0" + "@aws-sdk/middleware-sdk-s3" "3.922.0" + "@aws-sdk/middleware-ssec" "3.922.0" + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/region-config-resolver" "3.925.0" + "@aws-sdk/signature-v4-multi-region" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@aws-sdk/util-user-agent-browser" "3.922.0" + "@aws-sdk/util-user-agent-node" "3.922.0" + "@aws-sdk/xml-builder" "3.921.0" + "@smithy/config-resolver" "^4.4.2" + "@smithy/core" "^3.17.2" + "@smithy/eventstream-serde-browser" "^4.2.4" + "@smithy/eventstream-serde-config-resolver" "^4.3.4" + "@smithy/eventstream-serde-node" "^4.2.4" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/hash-blob-browser" "^4.2.5" + "@smithy/hash-node" "^4.2.4" + "@smithy/hash-stream-node" "^4.2.4" + "@smithy/invalid-dependency" "^4.2.4" + "@smithy/md5-js" "^4.2.4" + "@smithy/middleware-content-length" "^4.2.4" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-retry" "^4.4.6" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-body-length-node" "^4.2.1" + "@smithy/util-defaults-mode-browser" "^4.3.5" + "@smithy/util-defaults-mode-node" "^4.2.8" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + "@smithy/util-waiter" "^4.2.4" + "@smithy/uuid" "^1.1.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.925.0.tgz#740247496f5c0feea0f9333b67942319ccbbeebc" + integrity sha512-ixC9CyXe/mBo1X+bzOxIIzsdBYzM+klWoHUYzwnPMrXhpDrMjj8D24R/FPqrDnhoYYXiyS4BApRLpeymsFJq2Q== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/middleware-host-header" "3.922.0" + "@aws-sdk/middleware-logger" "3.922.0" + "@aws-sdk/middleware-recursion-detection" "3.922.0" + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/region-config-resolver" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@aws-sdk/util-user-agent-browser" "3.922.0" + "@aws-sdk/util-user-agent-node" "3.922.0" + "@smithy/config-resolver" "^4.4.2" + "@smithy/core" "^3.17.2" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/hash-node" "^4.2.4" + "@smithy/invalid-dependency" "^4.2.4" + "@smithy/middleware-content-length" "^4.2.4" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-retry" "^4.4.6" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-body-length-node" "^4.2.1" + "@smithy/util-defaults-mode-browser" "^4.3.5" + "@smithy/util-defaults-mode-node" "^4.2.8" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.922.0.tgz#6df3b04145202567a15e2b83cc83ef15590c828a" + integrity sha512-EvfP4cqJfpO3L2v5vkIlTkMesPtRwWlMfsaW6Tpfm7iYfBOuTi6jx60pMDMTyJNVfh6cGmXwh/kj1jQdR+w99Q== + dependencies: + "@aws-sdk/types" "3.922.0" + "@aws-sdk/xml-builder" "3.921.0" + "@smithy/core" "^3.17.2" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/signature-v4" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.922.0.tgz#c0f7a0ae77c4f9d1c6494aec4a149bbc74cc8578" + integrity sha512-WikGQpKkROJSK3D3E7odPjZ8tU7WJp5/TgGdRuZw3izsHUeH48xMv6IznafpRTmvHcjAbDQj4U3CJZNAzOK/OQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.922.0.tgz#d957bf8f2c0fb07a27eaee561e5bc94d6f86cb73" + integrity sha512-i72DgHMK7ydAEqdzU0Duqh60Q8W59EZmRJ73y0Y5oFmNOqnYsAI+UXyOoCsubp+Dkr6+yOwAn1gPt1XGE9Aowg== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-stream" "^4.5.5" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.925.0.tgz#9db91877bcb2bf544c4ef65246f5756fe21c4635" + integrity sha512-TOs/UkKWwXrSPolRTChpDUQjczw6KqbbanF0EzjUm3sp/AS1ThOQCKuTTdaOBZXkCIJdvRmZjF3adccE3rAoXg== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/credential-provider-env" "3.922.0" + "@aws-sdk/credential-provider-http" "3.922.0" + "@aws-sdk/credential-provider-process" "3.922.0" + "@aws-sdk/credential-provider-sso" "3.925.0" + "@aws-sdk/credential-provider-web-identity" "3.925.0" + "@aws-sdk/nested-clients" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@smithy/credential-provider-imds" "^4.2.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.925.0.tgz#3a17a57326e71dc4cd5f79821fdbfe47622e9a41" + integrity sha512-+T9mnnTY73MLkVxsk5RtzE4fv7GnMhR7iXhL/yTusf1zLfA09uxlA9VCz6tWxm5rHcO4ZN0x4hnqqDhM+DB5KQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.922.0" + "@aws-sdk/credential-provider-http" "3.922.0" + "@aws-sdk/credential-provider-ini" "3.925.0" + "@aws-sdk/credential-provider-process" "3.922.0" + "@aws-sdk/credential-provider-sso" "3.925.0" + "@aws-sdk/credential-provider-web-identity" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@smithy/credential-provider-imds" "^4.2.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.922.0.tgz#23f5b0923d9a9bb89dac3fa9aeb27c9eebf1a19c" + integrity sha512-1DZOYezT6okslpvMW7oA2q+y17CJd4fxjNFH0jtThfswdh9CtG62+wxenqO+NExttq0UMaKisrkZiVrYQBTShw== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.925.0.tgz#66bdc28b499385a270fb13c33691732067e3c03c" + integrity sha512-aZlUC6LRsOMDvIu0ifF62mTjL3KGzclWu5XBBN8eLDAYTdhqMxv3HyrqWoiHnGZnZGaVU+II+qsVoeBnGOwHow== + dependencies: + "@aws-sdk/client-sso" "3.925.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/token-providers" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.925.0.tgz#fc3669b56da1f9e965f6d189e8fb523051b0fae2" + integrity sha512-dR34s8Sfd1wJBzIuvRFO2FCnLmYD8iwPWrdXWI2ZypFt1EQR8jeQ20mnS+UOCoR5Z0tY6wJqEgTXKl4KuZ+DUg== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/nested-clients" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-bucket-endpoint@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.922.0.tgz#417efd18e8af948e694c5be751bde6d631138b3d" + integrity sha512-Dpr2YeOaLFqt3q1hocwBesynE3x8/dXZqXZRuzSX/9/VQcwYBFChHAm4mTAl4zuvArtDbLrwzWSxmOWYZGtq5w== + dependencies: + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-arn-parser" "3.893.0" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-config-provider" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-expect-continue@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.922.0.tgz#02f0b0402fcb8974765b3e7d20f43753bd05738c" + integrity sha512-xmnLWMtmHJHJBupSWMUEW1gyxuRIeQ1Ov2xa8Tqq77fPr4Ft2AluEwiDMaZIMHoAvpxWKEEt9Si59Li7GIA+bQ== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-flexible-checksums@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.922.0.tgz#41abb38c5baa8626a843aa57cfcb904a4d71427a" + integrity sha512-G363np7YcJhf+gBucskdv8cOTbs2TRwocEzRupuqDIooGDlLBlfJrvwehdgtWR8l53yjJR3zcHvGrVPTe2h8Nw== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@aws-crypto/crc32c" "5.2.0" + "@aws-crypto/util" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/is-array-buffer" "^4.2.0" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.922.0.tgz#f19621fd19764f7eb0a33795ce0f43402080e394" + integrity sha512-HPquFgBnq/KqKRVkiuCt97PmWbKtxQ5iUNLEc6FIviqOoZTmaYG3EDsIbuFBz9C4RHJU4FKLmHL2bL3FEId6AA== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.922.0.tgz#c455d40e3ab49014a1193fbcb2bf29885d345b7c" + integrity sha512-T4iqd7WQ2DDjCH/0s50mnhdoX+IJns83ZE+3zj9IDlpU0N2aq8R91IG890qTfYkUEdP9yRm0xir/CNed+v6Dew== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.922.0.tgz#3a43e2b7ec72b043751a7fd45f0514db77756be9" + integrity sha512-AkvYO6b80FBm5/kk2E636zNNcNgjztNNUxpqVx+huyGn9ZqGTzS4kLqW2hO6CBe5APzVtPCtiQsXL24nzuOlAg== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.922.0.tgz#cca89bd926ad05893f9b99b253fa50a6b6c7b829" + integrity sha512-TtSCEDonV/9R0VhVlCpxZbp/9sxQvTTRKzIf8LxW3uXpby6Wl8IxEciBJlxmSkoqxh542WRcko7NYODlvL/gDA== + dependencies: + "@aws-sdk/types" "3.922.0" + "@aws/lambda-invoke-store" "^0.1.1" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.922.0.tgz#11875f1b848070413815ca34f1b8e93a36fa351a" + integrity sha512-ygg8lME1oFAbsH42ed2wtGqfHLoT5irgx6VC4X98j79fV1qXEwwwbqMsAiMQ/HJehpjqAFRVsHox3MHLN48Z5A== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-arn-parser" "3.893.0" + "@smithy/core" "^3.17.2" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/signature-v4" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-config-provider" "^4.2.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-ssec@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.922.0.tgz#1c56b2619cdd604e97203148030f299980494008" + integrity sha512-eHvSJZTSRJO+/tjjGD6ocnPc8q9o3m26+qbwQTu/4V6yOJQ1q+xkDZNqwJQphL+CodYaQ7uljp8g1Ji/AN3D9w== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.922.0.tgz#b1e109ce3a0c30d44360bf0f707013a3a36d3f78" + integrity sha512-N4Qx/9KP3oVQBJOrSghhz8iZFtUC2NNeSZt88hpPhbqAEAtuX8aD8OzVcpnAtrwWqy82Yd2YTxlkqMGkgqnBsQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@smithy/core" "^3.17.2" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/nested-clients@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.925.0.tgz#4430987153a669564d7f72441a0e728e08636d54" + integrity sha512-Fc8QhH+1YzGQb5aWQUX6gRnKSzUZ9p3p/muqXIgYBL8RSd5O6hSPhDTyrOWE247zFlOjVlAlEnoTMJKarH0cIA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/middleware-host-header" "3.922.0" + "@aws-sdk/middleware-logger" "3.922.0" + "@aws-sdk/middleware-recursion-detection" "3.922.0" + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/region-config-resolver" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@aws-sdk/util-user-agent-browser" "3.922.0" + "@aws-sdk/util-user-agent-node" "3.922.0" + "@smithy/config-resolver" "^4.4.2" + "@smithy/core" "^3.17.2" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/hash-node" "^4.2.4" + "@smithy/invalid-dependency" "^4.2.4" + "@smithy/middleware-content-length" "^4.2.4" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-retry" "^4.4.6" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-body-length-node" "^4.2.1" + "@smithy/util-defaults-mode-browser" "^4.3.5" + "@smithy/util-defaults-mode-node" "^4.2.8" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.925.0.tgz#789fab5b277ec21753b908c78cee18bd70998475" + integrity sha512-FOthcdF9oDb1pfQBRCfWPZhJZT5wqpvdAS5aJzB1WDZ+6EuaAhLzLH/fW1slDunIqq1PSQGG3uSnVglVVOvPHQ== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/config-resolver" "^4.4.2" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.922.0.tgz#37e30499d805ac0cffbd14b448f7d2a58bbea132" + integrity sha512-mmsgEEL5pE+A7gFYiJMDBCLVciaXq4EFI5iAP7bPpnHvOplnNOYxVy2IreKMllGvrfjVyLnwxzZYlo5zZ65FWg== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/signature-v4" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.925.0": + version "3.925.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.925.0.tgz#c5858088c152ed518103270aa193728e85faee6d" + integrity sha512-F4Oibka1W5YYDeL+rGt/Hg3NLjOzrJdmuZOE0OFQt/U6dnJwYmYi2gFqduvZnZcD1agNm37mh7/GUq1zvKS6ig== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/nested-clients" "3.925.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/types@3.922.0", "@aws-sdk/types@^3.222.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.922.0.tgz#e92daf55272171caac8dba9d425786646466d935" + integrity sha512-eLA6XjVobAUAMivvM7DBL79mnHyrm+32TkXNWZua5mnxF+6kQCfblKKJvxMZLGosO53/Ex46ogim8IY5Nbqv2w== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.893.0": + version "3.893.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz#fcc9b792744b9da597662891c2422dda83881d8d" + integrity sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.922.0.tgz#817457d6a78ce366bdb7b201c638dba5ffdbfe60" + integrity sha512-4ZdQCSuNMY8HMlR1YN4MRDdXuKd+uQTeKIr5/pIM+g3TjInZoj8imvXudjcrFGA63UF3t92YVTkBq88mg58RXQ== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-endpoints" "^3.2.4" + tslib "^2.6.2" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.893.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz#5df15f24e1edbe12ff1fe8906f823b51cd53bae8" + integrity sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.922.0.tgz#734bbe74d34c3fbdb96aca80a151d3d7e7e87c30" + integrity sha512-qOJAERZ3Plj1st7M4Q5henl5FRpE30uLm6L9edZqZXGR6c7ry9jzexWamWVpQ4H4xVAVmiO9dIEBAfbq4mduOA== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + bowser "^2.11.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.922.0.tgz#52dd951b314a3e7097d181664a3f79a1e56921ce" + integrity sha512-NrPe/Rsr5kcGunkog0eBV+bY0inkRELsD2SacC4lQZvZiXf8VJ2Y7j+Yq1tB+h+FPLsdt3v9wItIvDf/laAm0Q== + dependencies: + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/xml-builder@3.921.0": + version "3.921.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.921.0.tgz#e4d4d21b09341648b598d720c602ee76d7a84594" + integrity sha512-LVHg0jgjyicKKvpNIEMXIMr1EBViESxcPkqfOlT+X1FkmUMTNZEEVF18tOJg4m4hV5vxtkWcqtr4IEeWa1C41Q== + dependencies: + "@smithy/types" "^4.8.1" + fast-xml-parser "5.2.5" + tslib "^2.6.2" + +"@aws/lambda-invoke-store@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz#2e67f17040b930bde00a79ffb484eb9e77472b06" + integrity sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA== + +"@aztec/accounts@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-3.0.0-devnet.4.tgz#446dd2005bdaa31b02e24f832b6ae11b6cc82894" + integrity sha512-Mun0652IQxpY27B7wqq66doWvnGggVnlfSl4Yb3LPGZiQe1XXYEt3DrjRK9Cz5kaXWMWvJWGjaggRpOfiEyGYg== + dependencies: + "@aztec/aztec.js" "3.0.0-devnet.4" + "@aztec/entrypoints" "3.0.0-devnet.4" + "@aztec/ethereum" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" tslib "^2.4.0" -"@aztec/aztec.js@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-2.0.2.tgz#12428a0b100ea22b06e36c477377631a98683bc1" - integrity sha512-BF6ua53EpERew9EMRONw8zuFRCTgqMk8WYI2rAJs/uMkYaQfkP5VFiZA69X3FYhnhHhYUf60sfGfCNXeNVTHDA== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/entrypoints" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/l1-artifacts" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/stdlib" "2.0.2" - axios "^1.8.2" +"@aztec/aztec.js@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-3.0.0-devnet.4.tgz#80a2b573cd36379cc1b5d41b2c38403250e9b41b" + integrity sha512-yEtPyXyWMXjep0Oyiwb4Q1qRnkVUA51r6cJ9hxevlHrLmZOzM0DFFV62ZjjHncdR9mTe8eryi9fJGbpT99lGvw== + dependencies: + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/entrypoints" "3.0.0-devnet.4" + "@aztec/ethereum" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/l1-artifacts" "3.0.0-devnet.4" + "@aztec/protocol-contracts" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" + axios "^1.12.0" tslib "^2.4.0" - viem "2.23.7" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + zod "^3.23.8" -"@aztec/bb-prover@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/bb-prover/-/bb-prover-2.0.2.tgz#3ba2c3b561c02218936e5da779c559bd339fd246" - integrity sha512-0pcdOAx6KlbWyRJcmYoz2Z768H3z4Ay18MYNPzvLLGL8gmglGN9dEFS8ZsPxmUVxvi2K3Tw3vmMM/onYuHnLkA== - dependencies: - "@aztec/bb.js" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/noir-noirc_abi" "2.0.2" - "@aztec/noir-protocol-circuits-types" "2.0.2" - "@aztec/noir-types" "2.0.2" - "@aztec/simulator" "2.0.2" - "@aztec/stdlib" "2.0.2" - "@aztec/telemetry-client" "2.0.2" - "@aztec/world-state" "2.0.2" +"@aztec/bb-prover@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/bb-prover/-/bb-prover-3.0.0-devnet.4.tgz#35c5afa3106dcbcb9180d6159f5b8a7ecd6c330c" + integrity sha512-+zKsNwchy/21yrk5D/N/fti/AULqXSmZq9mDSGMjrrTpLy5smSwzfvmcNLtYreHXHCsUWUqO9AT7fjpMK2UZ8g== + dependencies: + "@aztec/bb.js" "3.0.0-devnet.4" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/noir-noirc_abi" "3.0.0-devnet.4" + "@aztec/noir-protocol-circuits-types" "3.0.0-devnet.4" + "@aztec/noir-types" "3.0.0-devnet.4" + "@aztec/simulator" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" + "@aztec/telemetry-client" "3.0.0-devnet.4" + "@aztec/world-state" "3.0.0-devnet.4" commander "^12.1.0" pako "^2.1.0" source-map-support "^0.5.21" tslib "^2.4.0" -"@aztec/bb.js@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-2.0.2.tgz#ffc72a1926437243c45ff75c9c9be96feea094fa" - integrity sha512-pBQLGU3aHKBXRGdbxwIBRUxAoTOR8x5WcVTB+Z4Ea/pE0cxlOsEK2ZeiBODev26ChvY/asQ663ZyBvJJM4JbGw== +"@aztec/bb.js@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-3.0.0-devnet.4.tgz#2609df68510ca55d1770709329d7a8e4f5bd257a" + integrity sha512-WfB6NURwLe6FAI1fifzkVhBWLNWMkI/xHEi+rCKTowdp4GnjcqqubIYtOJyvYoOjDudfa2vImnoN/Bd5FDfqSA== dependencies: comlink "^4.4.1" commander "^12.1.0" @@ -68,66 +637,66 @@ pino "^9.5.0" tslib "^2.4.0" -"@aztec/blob-lib@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/blob-lib/-/blob-lib-2.0.2.tgz#fdd011dfab4de6ff7428166ff858ddf29c08653e" - integrity sha512-v5n2QmsaRDZpIOIhI0zcNF5SxdkzmEiX6EvuW5s2Dal279jAGQ+LzCOhB+Z0/Albc1/7D8fRKaRV4a3uWMSzuA== +"@aztec/blob-lib@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/blob-lib/-/blob-lib-3.0.0-devnet.4.tgz#7d3d6327033e2a8d9bd99065bc9f1ec6e27ee881" + integrity sha512-aOTXZw4OGFjlSWWEyZfD627ASmYtKd+PgBnwWTjT+LLqcPmB0Z1pIwCi8JG3hexGAXR/Uy5b8iS8SjihN05qyw== dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - c-kzg "4.0.0-alpha.1" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@crate-crypto/node-eth-kzg" "^0.10.0" tslib "^2.4.0" -"@aztec/builder@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/builder/-/builder-2.0.2.tgz#68a00be8de136c8eaf1dfc4a3f6739c92f13a055" - integrity sha512-92NLorOJ4NyVXJ2d3JzQvVB0PTVPu3yAWOyqkqt0Ybt11rFqGD6wGa/qg3+Yb7mRixrU9FCeTDnnyfU4Yr+TzA== +"@aztec/builder@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/builder/-/builder-3.0.0-devnet.4.tgz#0a895b0c535012c62dfd02f1e8b4608f2251df5d" + integrity sha512-dhZAFvptWf3kpaBbN3274co2eBWJaXKtwsvgGLipOXXxH7r68e3gsvIHWN5jMMuQWltOc5N/G3TPcUFr200Yog== dependencies: - "@aztec/foundation" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" commander "^12.1.0" -"@aztec/constants@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/constants/-/constants-2.0.2.tgz#e7c761d523327b06f5bc97992eeb10408378252f" - integrity sha512-fztICMy/1N9pBkpxAeaExEsX4buC1M03P4PbjSMkuw5UIk4z8fs01sF2kvHdSMngs3LA36AWcsCHXt2wfSJw4A== +"@aztec/constants@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/constants/-/constants-3.0.0-devnet.4.tgz#508f854bec2c696d3d4eb7005b98376e012c04c1" + integrity sha512-b5Q/jsgkPoz7k+Mp43Le3yqYmNAPuIFrHkzmp8pnUcrZuHUJNAHAw+wTo37XG2xS7L2A5aIYKzeS/sQfz4wNJQ== dependencies: tslib "^2.4.0" -"@aztec/entrypoints@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-2.0.2.tgz#e196f4283ef5a2fee29766e106bc01247b57c1e8" - integrity sha512-nj9Y94OB/VYBNlOvGGvGFBrXCmBFHtJppwmMg4zEHx9IKzmLZCyX0xQx9CfKFuEoW2dkmgqj5dwngP6cyAmNTw== +"@aztec/entrypoints@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-3.0.0-devnet.4.tgz#c724c337491ea71e9c904aae7d21fc1e8158ab00" + integrity sha512-H3Zgwjxcf8NZdO6n0EcomD7QQ2Xafxtq6IgTU+x1xEXKAhg30dCXZ8NQZs7kivTincMWuWiUC1JIVoefhr0cQA== dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/protocol-contracts" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" tslib "^2.4.0" -"@aztec/ethereum@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-2.0.2.tgz#05925c9c7d38584b6b6a81d9088a1f09890c50ce" - integrity sha512-3cIs9j+TzCacuJ0yZYaw6Ts8uAztaEEQfiOnwrmcyFdyYZrDYe52eBIWluzUO3MQBES0VBf0POSKFYIACuXhqA== +"@aztec/ethereum@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-3.0.0-devnet.4.tgz#83142c16764e59354c5eb8bfd36a5d653d49a1a5" + integrity sha512-dS/tMIAqyXcLeTi0NFKlp2A2hRxzOEvNN42TLWRMIdgV++7JaruT3locWY/zaKJKVyRIYH0NnzXHm9ry625+MQ== dependencies: - "@aztec/blob-lib" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/l1-artifacts" "2.0.2" + "@aztec/blob-lib" "3.0.0-devnet.4" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/l1-artifacts" "3.0.0-devnet.4" "@viem/anvil" "^0.0.10" dotenv "^16.0.3" lodash.chunk "^4.2.0" lodash.pickby "^4.5.0" tslib "^2.4.0" - viem "2.23.7" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" zod "^3.23.8" -"@aztec/foundation@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-2.0.2.tgz#bd606aeadfc03705466be1264d9b829bbd3c9ee5" - integrity sha512-A48UexNylbOdtx71T5st1UmcF0PGR+7DutHBd3cnkxT6zApiuWoCrhJmXtUp4ld7ZdskZMjgcJr4ACtwQPXdhg== +"@aztec/foundation@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-3.0.0-devnet.4.tgz#e6b7495ab4136bfaead11115a3c454d94ef310de" + integrity sha512-SqxeXB4Az6k6K9BHWQazqgBHZ3kZjnFwFtxfvgRsTTK13DbI/PbSHfaoA58YLYcdGgsQFlPiGIFLKpmcJmp6Lg== dependencies: - "@aztec/bb.js" "2.0.2" + "@aztec/bb.js" "3.0.0-devnet.4" "@koa/cors" "^5.0.0" "@noble/curves" "=1.7.0" bn.js "^5.2.1" @@ -137,7 +706,7 @@ koa "^2.16.1" koa-bodyparser "^4.4.0" koa-compress "^5.1.0" - koa-router "^12.0.0" + koa-router "^13.1.1" leveldown "^6.1.1" lodash.chunk "^4.2.0" lodash.clonedeepwith "^4.5.0" @@ -148,180 +717,180 @@ undici "^5.28.5" zod "^3.23.8" -"@aztec/key-store@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/key-store/-/key-store-2.0.2.tgz#b67ddc71ec504fd5b4169189037a0b1acbbf45b3" - integrity sha512-EFYRn3B9YVtWlwF6/WJ7rCkSOrKm1GcjW+W2Kk6Unof+4MYUuJQAuGlyrp3wWa3lmAFledNB4LltikjMFGp63Q== +"@aztec/key-store@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/key-store/-/key-store-3.0.0-devnet.4.tgz#97c33c2b559dbd8abd0efe26a6e68b0d602722ec" + integrity sha512-PleNttzcIjTk7EWIW1fOfRqOLWkfZdS+DEMTlXDSWG/fMNOEhblgZ24ar7LHOumnhNnDYeIiRmoQ6cmlIqyk0w== dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/kv-store" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/kv-store" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" tslib "^2.4.0" -"@aztec/kv-store@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/kv-store/-/kv-store-2.0.2.tgz#8d60bada461fc96a58b479b8366d1e69ff641384" - integrity sha512-6Yip1dNBKW/fG6tm9VhtMI84nXMJCVNSDm2AAW4QlN2n0seQU9XW2dTgdUAAPGjg7ujdmUzrHbYsGYl0ibXBpQ== +"@aztec/kv-store@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/kv-store/-/kv-store-3.0.0-devnet.4.tgz#64adf42ad25aa3bc99c9933c5c4b55795be0e539" + integrity sha512-HxhoBR5ru27PDePYEKVkGmufJrBM5rA7UPIwQfDZf1l22Aaa0Dn1kskMS1RS4J3um8YWh3RhonnM+vE7G8MCNA== dependencies: - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/native" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/ethereum" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/native" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" idb "^8.0.0" lmdb "^3.2.0" msgpackr "^1.11.2" ohash "^2.0.11" ordered-binary "^1.5.3" -"@aztec/l1-artifacts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-2.0.2.tgz#8598d4d7352d4cc1675e52602a0612fa998da8d7" - integrity sha512-CclFsNxN5kuvQZkY2ZD5ZHjHo+JdzSBvK4c5NuBWrrzSuoUv6D6b03ZXnSbcAI2yO0urE+u4g9jm0/ln7kum3Q== +"@aztec/l1-artifacts@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-3.0.0-devnet.4.tgz#9f8ebb2938e2288b947fbee3b6ee84b927c81d0a" + integrity sha512-Vsb2lo08E9jLiuEBsmdSLgpLTnrLQGcexNifn5aCwGewmO7jQ3zv+BJfPM2BnxmspBgGSN97ai79+m3ig/iesA== dependencies: tslib "^2.4.0" -"@aztec/merkle-tree@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/merkle-tree/-/merkle-tree-2.0.2.tgz#19f6a125db574c46870bec2846603fd3c3094ee4" - integrity sha512-USZbIPSbrA+qWHdxh5KiUrgfM6L0QUgGfez4HQhpPiVUZ1lXJ61xZSAM8YdsDFTT3XPWPYOLZD28XFlHr+35xA== +"@aztec/merkle-tree@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/merkle-tree/-/merkle-tree-3.0.0-devnet.4.tgz#bd484a4addd941ce2a5faf478dc7be246048facd" + integrity sha512-vxQJE9Yl4lluj6Yl8pJMWMdVHaqHFCvBPETntwAcnyzWBoN3fNEnb+Qu1UvseUhjsFpzhCEATNPWIUC4/3UbjA== dependencies: - "@aztec/foundation" "2.0.2" - "@aztec/kv-store" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/kv-store" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" sha256 "^0.2.0" tslib "^2.4.0" -"@aztec/native@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/native/-/native-2.0.2.tgz#5cbbdbcddf2de6245e2bd2ca80f7de4090259fad" - integrity sha512-BSSGrbcRiIR25koPBccXF4L54O143VgpNJfMVIyC9swcd1dncPB/27QnhsFCW8le1fXuwOxLbMIj7IlHnjFP8w== +"@aztec/native@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/native/-/native-3.0.0-devnet.4.tgz#ccc604079d5f2f831faa139f1090fa6f6b70ea49" + integrity sha512-nEN2EVb281yeuswCJyhU9Xga/BBUVVqMpyug4OmPmSptR3+WAbGcYmWY9IjeV7gdYxfBye5zOsfW+khenrzTmg== dependencies: - "@aztec/foundation" "2.0.2" - bindings "^1.5.0" + "@aztec/foundation" "3.0.0-devnet.4" msgpackr "^1.11.2" -"@aztec/noir-acvm_js@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-acvm_js/-/noir-acvm_js-2.0.2.tgz#12a61fd2368e9fd63a35e4e3f5c9fc7f9d745cf4" - integrity sha512-EF9iEYopRS9mKoirj7Pwtcvv2tEOSyQIbbnwNat9pIB+F1uYLnGFU5cAnQQJQ18qCtsU0t9jLptnXFmokfMRdw== +"@aztec/noir-acvm_js@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/noir-acvm_js/-/noir-acvm_js-3.0.0-devnet.4.tgz#a6fbb89a8980fe7dc3f3029ab13144f4db750155" + integrity sha512-S0ZxTpDc1wPsZWR9A1W3g9yaJMm6SkybPKvcNIL1PoEb4+FYaCgQ6EftVhxQsZwYmx+FwmlovRSA69Dq0nK41w== -"@aztec/noir-contracts.js@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-2.0.2.tgz#773585a56e707d9ac0c6d1fefd40896cc0f63fc8" - integrity sha512-Lw4IgnCIgQNFbL0pmP52CtEikTXWyIiOJc6Ji5MLCjd405Js54OtEuy/I7hcaVhQmswD7/EeDG63hfP0omepsQ== +"@aztec/noir-contracts.js@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-3.0.0-devnet.4.tgz#326c1f2a8c5bf8d23b3026c7cb5dcd36453c466a" + integrity sha512-D1L40qOVWK0yXLygjp4Soy8Jy3XnOpZnYshKQTCCnw2px+9ypZJVLR2bA5YBG9DzdWe5l5KKOIR253mROsywBw== dependencies: - "@aztec/aztec.js" "2.0.2" + "@aztec/aztec.js" "3.0.0-devnet.4" tslib "^2.4.0" -"@aztec/noir-noir_codegen@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-noir_codegen/-/noir-noir_codegen-2.0.2.tgz#0ef2ac024074092924e40f2fce3321d1657b45e2" - integrity sha512-2FP85t3VlLvsI+edoAbX+1zR+SEnCO9wzbHNv5sbexA2A3FVDZGRbGhyHRIQfciubfQvqj8CNVZnsCeSmVa81A== +"@aztec/noir-noir_codegen@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/noir-noir_codegen/-/noir-noir_codegen-3.0.0-devnet.4.tgz#91a5ca565e9eb7ebb7676346b51e845cdef7e26d" + integrity sha512-GjtciIjK0ma8R54bdZYgcWwK5qJ3vsgXvZSJ0dsjtiqJyBm0YcgV99wUd0s/D8SurZRrgceFve1pRozRbyCWkQ== dependencies: - "@aztec/noir-types" "2.0.2" - glob "^11.0.2" + "@aztec/noir-types" "3.0.0-devnet.4" + glob "^11.0.3" ts-command-line-args "^2.5.1" -"@aztec/noir-noirc_abi@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-noirc_abi/-/noir-noirc_abi-2.0.2.tgz#86c7fdf6a920bca87558bb07ee81bcbc17d5a392" - integrity sha512-5WCQyaPGGsGslB35OylhbKUc0SUqpy9WxoVZhyDzpiB/zJ2qbTKsLNP50SQeD1vSth1qZgbIeRP1fjss/knoMQ== - dependencies: - "@aztec/noir-types" "2.0.2" - -"@aztec/noir-protocol-circuits-types@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-2.0.2.tgz#444b40125489a4ff83d7452fd8f4df24b2dbde8f" - integrity sha512-qtN5B0LckRiWlPLcJwiNChv65CsVZ2LRNtSfIsBYk7GkDdtYPRau8eDydPN5ObzEXc++2Tq4566cLjMbZPnecQ== - dependencies: - "@aztec/blob-lib" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/noir-acvm_js" "2.0.2" - "@aztec/noir-noir_codegen" "2.0.2" - "@aztec/noir-noirc_abi" "2.0.2" - "@aztec/noir-types" "2.0.2" - "@aztec/stdlib" "2.0.2" +"@aztec/noir-noirc_abi@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/noir-noirc_abi/-/noir-noirc_abi-3.0.0-devnet.4.tgz#918ef5925bbf3bfd7cc5a09e8b809c153ee10e2e" + integrity sha512-N9ogacgV3sMXGjGD3p5dAM7/pShJr+anfiAX07/T3lix16jek5+qbI6Rr6vtqrqGtGs4cFo2YzrJ/5uVFl/ZAA== + dependencies: + "@aztec/noir-types" "3.0.0-devnet.4" + +"@aztec/noir-protocol-circuits-types@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-3.0.0-devnet.4.tgz#40574779f00884517acdcc4f14c430726bb57acd" + integrity sha512-fIv0sRK86CRON15diQVWrEDyCfyXgSGgNVajHiTVvl7/8up+13L0ogoohTarvbiVMz8GsWZR1I++cag0VO6npQ== + dependencies: + "@aztec/blob-lib" "3.0.0-devnet.4" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/noir-acvm_js" "3.0.0-devnet.4" + "@aztec/noir-noir_codegen" "3.0.0-devnet.4" + "@aztec/noir-noirc_abi" "3.0.0-devnet.4" + "@aztec/noir-types" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" change-case "^5.4.4" tslib "^2.4.0" -"@aztec/noir-types@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-types/-/noir-types-2.0.2.tgz#ab997738183dd2aea2a6b4ecc915db85516d858c" - integrity sha512-eZoOaYVAcC34/xb42TglCESdBzBl2+Pc+dh9vQqrhsBsgFeD5CkYiYZ9JhwtWU0pxjdqz7b4fP1Z8QdeWxh/zA== +"@aztec/noir-types@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/noir-types/-/noir-types-3.0.0-devnet.4.tgz#8fae04e06d7b08b83182e89b6e88612a3677148d" + integrity sha512-mBU9q/TUGnwjDWv1Xq8Qeb/Jwz1LqE4KugVTbKrYgfLkpVW6rp4njTzEn0W3WmZFBxEpdxtOVfbRGTHE0kNbAw== -"@aztec/protocol-contracts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-2.0.2.tgz#c5ebdbd68b9a54e488710c00f82659960aaffdd6" - integrity sha512-FTwvPLug3Eae9Y+olYB+ssvyzeXe7n247JS1dADjoKEwc3PC/tGlfn9vSzQtPswTrorFXVjE9DdIjMKZokV1Kg== +"@aztec/protocol-contracts@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-3.0.0-devnet.4.tgz#532a76c0fc86e7c76f3c0bcfe5dd9441d4138137" + integrity sha512-sShHVMBDq09KKJTMONtZ3EncMSpvDNZpCbFkUd2/Wvbgus3BaNyZ569rFfTUAZSy6oZfZTU/bYU8bKh3YHqSmw== dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" lodash.chunk "^4.2.0" lodash.omit "^4.5.0" tslib "^2.4.0" -"@aztec/pxe@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/pxe/-/pxe-2.0.2.tgz#7011d36a8e04b9495e51d9816b8f6ff45ecd03f3" - integrity sha512-kcGZHJPAjJqqjRnoATuqMTZLvAW6Ik9L6TvvbhdSIm0emeeSaV2ZYJ6WDMplY1us8BpmPVheFdQaI90WJAF/QQ== - dependencies: - "@aztec/bb-prover" "2.0.2" - "@aztec/bb.js" "2.0.2" - "@aztec/builder" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/key-store" "2.0.2" - "@aztec/kv-store" "2.0.2" - "@aztec/noir-protocol-circuits-types" "2.0.2" - "@aztec/noir-types" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/simulator" "2.0.2" - "@aztec/stdlib" "2.0.2" - json-stringify-deterministic "1.0.12" +"@aztec/pxe@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/pxe/-/pxe-3.0.0-devnet.4.tgz#9acc71a8c3688a0bfd062a7cc71461ae5e585ed3" + integrity sha512-8CB8kHNsI9+5ZychIbWe9zoBbjnv+c/2Dr2hquaQ9vDam8oJ8VRw5dpY7F+AH7z+N4ZMYiZrtNPNJ++FErqJAg== + dependencies: + "@aztec/bb-prover" "3.0.0-devnet.4" + "@aztec/bb.js" "3.0.0-devnet.4" + "@aztec/builder" "3.0.0-devnet.4" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/ethereum" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/key-store" "3.0.0-devnet.4" + "@aztec/kv-store" "3.0.0-devnet.4" + "@aztec/noir-protocol-circuits-types" "3.0.0-devnet.4" + "@aztec/noir-types" "3.0.0-devnet.4" + "@aztec/protocol-contracts" "3.0.0-devnet.4" + "@aztec/simulator" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" koa "^2.16.1" - koa-router "^12.0.0" + koa-router "^13.1.1" lodash.omit "^4.5.0" sha3 "^2.1.4" tslib "^2.4.0" - viem "2.23.7" - -"@aztec/simulator@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/simulator/-/simulator-2.0.2.tgz#2b7a3da2f46189599ac591da843294e3ef5c426b" - integrity sha512-LE01H5ryiEu84C3xYBieji5TXSam9AzU10w9shx+wIKR7+/aJ4426CaXrDssT/zTBiHrCr+BOAIX8FQiT3KCdg== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/noir-acvm_js" "2.0.2" - "@aztec/noir-noirc_abi" "2.0.2" - "@aztec/noir-protocol-circuits-types" "2.0.2" - "@aztec/noir-types" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/stdlib" "2.0.2" - "@aztec/telemetry-client" "2.0.2" - "@aztec/world-state" "2.0.2" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + +"@aztec/simulator@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/simulator/-/simulator-3.0.0-devnet.4.tgz#22eb8aec017d58202bba45f5f0835ae3dadd408f" + integrity sha512-aE7Kfqzw4l8P18izJBwcLyYo7C3IEe0c5rgFNwmN9LeVpjW2okNSdWqd8mRkYJ2ASHZ8HzqGTPkgr8G3+0LoOg== + dependencies: + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/native" "3.0.0-devnet.4" + "@aztec/noir-acvm_js" "3.0.0-devnet.4" + "@aztec/noir-noirc_abi" "3.0.0-devnet.4" + "@aztec/noir-protocol-circuits-types" "3.0.0-devnet.4" + "@aztec/noir-types" "3.0.0-devnet.4" + "@aztec/protocol-contracts" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" + "@aztec/telemetry-client" "3.0.0-devnet.4" + "@aztec/world-state" "3.0.0-devnet.4" lodash.clonedeep "^4.5.0" lodash.merge "^4.6.2" tslib "^2.4.0" -"@aztec/stdlib@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/stdlib/-/stdlib-2.0.2.tgz#b3114a0b139e7d0057cb81532e95e9c03695ca69" - integrity sha512-nsOZJwz2v+rzHUrGE2e6a+qRerK5EYaqX8IqJOngi6e5Uq1oTFhsthgYV45H2jM5aNYsf2WgU69zlFKgODXCXQ== - dependencies: - "@aztec/bb.js" "2.0.2" - "@aztec/blob-lib" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/l1-artifacts" "2.0.2" - "@aztec/noir-noirc_abi" "2.0.2" +"@aztec/stdlib@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/stdlib/-/stdlib-3.0.0-devnet.4.tgz#9c796af08d40ed7626cd70e645fece0c4328c0fb" + integrity sha512-xIbP1Xu741gfLn9fEpa9nL40Vb9QhTE9qFEJAtITWTLyWYIe5KJrhDqmBoMmzCnTU0m5EbOE0pdckubobwTKJw== + dependencies: + "@aws-sdk/client-s3" "^3.892.0" + "@aztec/bb.js" "3.0.0-devnet.4" + "@aztec/blob-lib" "3.0.0-devnet.4" + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/ethereum" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/l1-artifacts" "3.0.0-devnet.4" + "@aztec/noir-noirc_abi" "3.0.0-devnet.4" "@google-cloud/storage" "^7.15.0" - axios "^1.9.0" + axios "^1.12.0" json-stringify-deterministic "1.0.12" lodash.chunk "^4.2.0" lodash.isequal "^4.5.0" @@ -330,23 +899,23 @@ msgpackr "^1.11.2" pako "^2.1.0" tslib "^2.4.0" - viem "2.23.7" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" zod "^3.23.8" -"@aztec/telemetry-client@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/telemetry-client/-/telemetry-client-2.0.2.tgz#38a5858d7608ade219004489316fdfe4e8254154" - integrity sha512-qvMjCsger+Pd61iyxqeCw3nhRjDTTftPHwWY7up7C433apD3f7OGRx33N/TDOIlvmD976SNi2lIemeRvcrtEiQ== +"@aztec/telemetry-client@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/telemetry-client/-/telemetry-client-3.0.0-devnet.4.tgz#a27c56a5fdb0a76b49b87e0e04c8c583a013ea4a" + integrity sha512-147RawEoWwB86s1mHyeWl/t8QRXGirHcDfL11SG3Ofznokbi2Wpm9ZGpZ9mGCBCir97svIHBijZIJ1wvAyPbHA== dependencies: - "@aztec/foundation" "2.0.2" - "@aztec/stdlib" "2.0.2" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" "@opentelemetry/api" "^1.9.0" "@opentelemetry/api-logs" "^0.55.0" "@opentelemetry/core" "^1.28.0" "@opentelemetry/exporter-logs-otlp-http" "^0.55.0" "@opentelemetry/exporter-metrics-otlp-http" "^0.55.0" "@opentelemetry/exporter-trace-otlp-http" "^0.55.0" - "@opentelemetry/host-metrics" "^0.35.4" + "@opentelemetry/host-metrics" "^0.36.2" "@opentelemetry/otlp-exporter-base" "^0.55.0" "@opentelemetry/resource-detector-gcp" "^0.32.0" "@opentelemetry/resources" "^1.28.0" @@ -355,24 +924,79 @@ "@opentelemetry/sdk-trace-node" "^1.28.0" "@opentelemetry/semantic-conventions" "^1.28.0" prom-client "^15.1.3" - viem "2.23.7" - -"@aztec/world-state@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/world-state/-/world-state-2.0.2.tgz#c9fe6e92e4ae68eb840d3be7753c5d368dbc7994" - integrity sha512-cIrnRgxCPZ33mlluOkBROrqcGvzXvaP64UEYNCTYyA3KznPZXNRUjLxNXvNNoPpu5p5eeitskaI0I59UpRm2RA== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/kv-store" "2.0.2" - "@aztec/merkle-tree" "2.0.2" - "@aztec/native" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/stdlib" "2.0.2" - "@aztec/telemetry-client" "2.0.2" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + +"@aztec/test-wallet@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/test-wallet/-/test-wallet-3.0.0-devnet.4.tgz#c9ed50bdb4842c66b475f5f483b29023d4a6795c" + integrity sha512-aPkAFnhpNJ1gza0Fs/NYhcexqOWiQKayBhr56cDoIaczyrhfZnWyTuFHvU6cdTHxz1CmMqnMyqnMiH/mjIGn4w== + dependencies: + "@aztec/accounts" "3.0.0-devnet.4" + "@aztec/aztec.js" "3.0.0-devnet.4" + "@aztec/entrypoints" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/noir-contracts.js" "3.0.0-devnet.4" + "@aztec/pxe" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" + +"@aztec/world-state@3.0.0-devnet.4": + version "3.0.0-devnet.4" + resolved "https://registry.yarnpkg.com/@aztec/world-state/-/world-state-3.0.0-devnet.4.tgz#8222b48c62c9abc01a5876ccf4aaae78c7e64565" + integrity sha512-8+sSEdAM6RG17D9SiuKHsqsxiv2fjZy0JD6HEChVtFqSnkttfyoNbzOE0i6ltDq0jzMUMReZzPkeyE3cZ2j26g== + dependencies: + "@aztec/constants" "3.0.0-devnet.4" + "@aztec/foundation" "3.0.0-devnet.4" + "@aztec/kv-store" "3.0.0-devnet.4" + "@aztec/merkle-tree" "3.0.0-devnet.4" + "@aztec/native" "3.0.0-devnet.4" + "@aztec/protocol-contracts" "3.0.0-devnet.4" + "@aztec/stdlib" "3.0.0-devnet.4" + "@aztec/telemetry-client" "3.0.0-devnet.4" tslib "^2.4.0" zod "^3.23.8" +"@crate-crypto/node-eth-kzg-darwin-arm64@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-darwin-arm64/-/node-eth-kzg-darwin-arm64-0.10.0.tgz#bdc363b21d91b54bccfb5df513527cfaddcb3f60" + integrity sha512-cKhqkrRdnWhgPycHkcdwfu/w41PuCvAERkX5yYDR3cSYR4h87Gn4t/infE6UNsPDBCN7yYV42YmZfQDfEt2xrw== + +"@crate-crypto/node-eth-kzg-darwin-x64@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-darwin-x64/-/node-eth-kzg-darwin-x64-0.10.0.tgz#f036979451f05e1b15f48aa6c4b4734824526db0" + integrity sha512-8fn4+UBP01ZBxVARTZvxPBGrmcUbYFM/b5z0wZkEevQ9Sz5GYk8hursgpqbhekj+xTCxmwa9pPkzDbtG6oZGQg== + +"@crate-crypto/node-eth-kzg-linux-arm64-gnu@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-linux-arm64-gnu/-/node-eth-kzg-linux-arm64-gnu-0.10.0.tgz#f08670152db67b4b56302a0e7c545e3ce3339dcc" + integrity sha512-euuqBTDLOpI9wNx0jO7AD24BdiCs9sz8cBybsdGJvyZ8QLUIezTnA/aXcrZBzsA5ZOrHYjaWS2NJpgDdAjLLuQ== + +"@crate-crypto/node-eth-kzg-linux-x64-gnu@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-linux-x64-gnu/-/node-eth-kzg-linux-x64-gnu-0.10.0.tgz#4beea66c650cbc62b6605f1e20c7e77a7cd73ecd" + integrity sha512-b4klE/jp98PBZ7PWuFE1OscWBILSS8jP+JMbIJ+qE7y42s/6ImWH5bWmVdFOfh6u0o95cb9hCS0xIECM80SqBg== + +"@crate-crypto/node-eth-kzg-win32-arm64-msvc@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-win32-arm64-msvc/-/node-eth-kzg-win32-arm64-msvc-0.10.0.tgz#9da2998eb80ae240441ac3ef099aff916efadd25" + integrity sha512-tFKv02TG/JYsD4gvV0gTvjLqd09/4g/B37fCPXIuEFzq5LgIuWHu37hhQ6K8eIfoXZOTY3wqqkY1jTXYhs2sTA== + +"@crate-crypto/node-eth-kzg-win32-x64-msvc@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-win32-x64-msvc/-/node-eth-kzg-win32-x64-msvc-0.10.0.tgz#13c07c99dc8b4070d7b32d0063ad744bf9af6470" + integrity sha512-mYieW1mBesbLFRB2j4LdodpCkwIxZ8ZHZzzwV+MXqapI61B2SbH+FyMYQ5lJYqQeMHCY0ojq5ScW1zZj1uNGjA== + +"@crate-crypto/node-eth-kzg@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg/-/node-eth-kzg-0.10.0.tgz#69167c4ab5dd2858afa70ef7added99f6097c560" + integrity sha512-sGDPH1nW2EhJzjzHyINvTQwDNGRzdq/2vVzFwwrmFOHtIBaRjXGqo7wKj/JoJoNjuRSGeXz/EmaahRq0pgxzqw== + optionalDependencies: + "@crate-crypto/node-eth-kzg-darwin-arm64" "0.10.0" + "@crate-crypto/node-eth-kzg-darwin-x64" "0.10.0" + "@crate-crypto/node-eth-kzg-linux-arm64-gnu" "0.10.0" + "@crate-crypto/node-eth-kzg-linux-x64-gnu" "0.10.0" + "@crate-crypto/node-eth-kzg-win32-arm64-msvc" "0.10.0" + "@crate-crypto/node-eth-kzg-win32-x64-msvc" "0.10.0" + "@discoveryjs/json-ext@^0.6.1": version "0.6.3" resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz" @@ -588,12 +1212,17 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== -"@noble/curves@1.8.1": - version "1.8.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz" - integrity sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ== +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + +"@noble/curves@1.9.1", "@noble/curves@~1.9.0": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== dependencies: - "@noble/hashes" "1.7.1" + "@noble/hashes" "1.8.0" "@noble/curves@=1.7.0": version "1.7.0" @@ -602,36 +1231,12 @@ dependencies: "@noble/hashes" "1.6.0" -"@noble/curves@^1.6.0", "@noble/curves@~1.9.0": - version "1.9.1" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz" - integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/curves@~1.8.1": - version "1.8.2" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz" - integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== - dependencies: - "@noble/hashes" "1.7.2" - "@noble/hashes@1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== -"@noble/hashes@1.7.1": - version "1.7.1" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz" - integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== - -"@noble/hashes@1.7.2", "@noble/hashes@~1.7.1": - version "1.7.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz" - integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== - -"@noble/hashes@1.8.0", "@noble/hashes@^1.5.0", "@noble/hashes@~1.8.0": +"@noble/hashes@1.8.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0": version "1.8.0" resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== @@ -700,10 +1305,10 @@ "@opentelemetry/resources" "1.28.0" "@opentelemetry/sdk-trace-base" "1.28.0" -"@opentelemetry/host-metrics@^0.35.4": - version "0.35.5" - resolved "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.35.5.tgz" - integrity sha512-Zf9Cjl7H6JalspnK5KD1+LLKSVecSinouVctNmUxRy+WP+20KwHq+qg4hADllkEmJ99MZByLLmEmzrr7s92V6g== +"@opentelemetry/host-metrics@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/host-metrics/-/host-metrics-0.36.2.tgz#c609ca3564c824b99fb3f6440835fadbd8a855f6" + integrity sha512-eMdea86cfIqx3cdFpcKU3StrjqFkQDIVp7NANVnVWO8O6hDw/DBwGwu4Gi1wJCuoQ2JVwKNWQxUTSRheB6O29Q== dependencies: systeminformation "5.23.8" @@ -898,45 +1503,528 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": +"@scure/base@~1.2.5": version "1.2.6" resolved "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz" integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== -"@scure/bip32@1.6.2": - version "1.6.2" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz" - integrity sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw== - dependencies: - "@noble/curves" "~1.8.1" - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.2" - -"@scure/bip32@^1.5.0": +"@scure/bip32@1.7.0", "@scure/bip32@^1.7.0": version "1.7.0" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== dependencies: "@noble/curves" "~1.9.0" "@noble/hashes" "~1.8.0" "@scure/base" "~1.2.5" -"@scure/bip39@1.5.4": - version "1.5.4" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz" - integrity sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA== - dependencies: - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.4" - -"@scure/bip39@^1.4.0": +"@scure/bip39@1.6.0", "@scure/bip39@^1.6.0": version "1.6.0" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== dependencies: "@noble/hashes" "~1.8.0" "@scure/base" "~1.2.5" +"@smithy/abort-controller@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.2.4.tgz#8031d32aea69c714eae49c1f43ce0ea60481d2d3" + integrity sha512-Z4DUr/AkgyFf1bOThW2HwzREagee0sB5ycl+hDiSZOfRLW8ZgrOjDi6g8mHH19yyU5E2A/64W3z6SMIf5XiUSQ== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader-native@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz#380266951d746b522b4ab2b16bfea6b451147b41" + integrity sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ== + dependencies: + "@smithy/util-base64" "^4.3.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz#776fec5eaa5ab5fa70d0d0174b7402420b24559c" + integrity sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.4.2.tgz#0a8017f5691cbb7505e4dbcfc5db5a41321ed4d7" + integrity sha512-4Jys0ni2tB2VZzgslbEgszZyMdTkPOFGA8g+So/NjR8oy6Qwaq4eSwsrRI+NMtb0Dq4kqCzGUu/nGUx7OM/xfw== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-config-provider" "^4.2.0" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + tslib "^2.6.2" + +"@smithy/core@^3.17.2": + version "3.17.2" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.17.2.tgz#bd27762dfd9f61e60b2789a20fa0dfd647827e98" + integrity sha512-n3g4Nl1Te+qGPDbNFAYf+smkRVB+JhFsGy9uJXXZQEufoP4u0r+WLh6KvTDolCswaagysDc/afS1yvb2jnj1gQ== + dependencies: + "@smithy/middleware-serde" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + "@smithy/uuid" "^1.1.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.4.tgz#eb2ab999136c97d942e69638e6126a3c4d8cf79d" + integrity sha512-YVNMjhdz2pVto5bRdux7GMs0x1m0Afz3OcQy/4Yf9DH4fWOtroGH7uLvs7ZmDyoBJzLdegtIPpXrpJOZWvUXdw== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.4.tgz#f9cc680b156d3fac4cc631a8b0159f5e87205143" + integrity sha512-aV8blR9RBDKrOlZVgjOdmOibTC2sBXNiT7WA558b4MPdsLTV6sbyc1WIE9QiIuYMJjYtnPLciefoqSW8Gi+MZQ== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^4.8.1" + "@smithy/util-hex-encoding" "^4.2.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.4.tgz#6aa94f14dd4d3376cb3389a0f6f245994e9e97c7" + integrity sha512-d5T7ZS3J/r8P/PDjgmCcutmNxnSRvPH1U6iHeXjzI50sMr78GLmFcrczLw33Ap92oEKqa4CLrkAPeSSOqvGdUA== + dependencies: + "@smithy/eventstream-serde-universal" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.4.tgz#6ddd88c57274a6fe72e11bfd5ac858977573dc46" + integrity sha512-lxfDT0UuSc1HqltOGsTEAlZ6H29gpfDSdEPTapD5G63RbnYToZ+ezjzdonCCH90j5tRRCw3aLXVbiZaBW3VRVg== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/eventstream-serde-node@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.4.tgz#61934c44c511bec5b07cfbbf59a2282806cd2ff8" + integrity sha512-TPhiGByWnYyzcpU/K3pO5V7QgtXYpE0NaJPEZBCa1Y5jlw5SjqzMSbFiLb+ZkJhqoQc0ImGyVINqnq1ze0ZRcQ== + dependencies: + "@smithy/eventstream-serde-universal" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.4.tgz#7c19762047b429d53af4664dc1168482706b4ee7" + integrity sha512-GNI/IXaY/XBB1SkGBFmbW033uWA0tj085eCxYih0eccUe/PFR7+UBQv9HNDk2fD9TJu7UVsCWsH99TkpEPSOzQ== + dependencies: + "@smithy/eventstream-codec" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^5.3.5": + version "5.3.5" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.5.tgz#5cfea38d9a1519741c7147fea10a4a064de03f66" + integrity sha512-mg83SM3FLI8Sa2ooTJbsh5MFfyMTyNRwxqpKHmE0ICRIa66Aodv80DMsTQI02xBLVJ0hckwqTRr5IGAbbWuFLQ== + dependencies: + "@smithy/protocol-http" "^5.3.4" + "@smithy/querystring-builder" "^4.2.4" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.5.tgz#c82e032747b72811f735c2c1f0ed0c1aeb4de910" + integrity sha512-kCdgjD2J50qAqycYx0imbkA9tPtyQr1i5GwbK/EOUkpBmJGSkJe4mRJm+0F65TUSvvui1HZ5FFGFCND7l8/3WQ== + dependencies: + "@smithy/chunked-blob-reader" "^5.2.0" + "@smithy/chunked-blob-reader-native" "^4.2.1" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/hash-node@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.2.4.tgz#45bd19999625166825eb29aafb007819de031894" + integrity sha512-kKU0gVhx/ppVMntvUOZE7WRMFW86HuaxLwvqileBEjL7PoILI8/djoILw3gPQloGVE6O0oOzqafxeNi2KbnUJw== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.4.tgz#553fa9a8fe567b0018cf99be3dafb920bc241a7f" + integrity sha512-amuh2IJiyRfO5MV0X/YFlZMD6banjvjAwKdeJiYGUbId608x+oSNwv3vlyW2Gt6AGAgl3EYAuyYLGRX/xU8npQ== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.2.4.tgz#ff957d711b72f432803fdee1e247f0dd4c98251d" + integrity sha512-z6aDLGiHzsMhbS2MjetlIWopWz//K+mCoPXjW6aLr0mypF+Y7qdEh5TyJ20Onf9FbWHiWl4eC+rITdizpnXqOw== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/is-array-buffer@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz#b0f874c43887d3ad44f472a0f3f961bcce0550c2" + integrity sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.4.tgz#e012464383ffde0bd423d38ef9b5caf720ee90eb" + integrity sha512-h7kzNWZuMe5bPnZwKxhVbY1gan5+TZ2c9JcVTHCygB14buVGOZxLl+oGfpY2p2Xm48SFqEWdghpvbBdmaz3ncQ== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.2.4.tgz#8b625cb264c13c54440ecae59a3e6b1996dfd7b5" + integrity sha512-hJRZuFS9UsElX4DJSJfoX4M1qXRH+VFiLMUnhsWvtOOUWRNvvOfDaUSdlNbjwv1IkpVjj/Rd/O59Jl3nhAcxow== + dependencies: + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^4.3.6": + version "4.3.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.6.tgz#dce57120e72ffeb2d45f1d09d424a9bed1571a21" + integrity sha512-PXehXofGMFpDqr933rxD8RGOcZ0QBAWtuzTgYRAHAL2BnKawHDEdf/TnGpcmfPJGwonhginaaeJIKluEojiF/w== + dependencies: + "@smithy/core" "^3.17.2" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-middleware" "^4.2.4" + tslib "^2.6.2" + +"@smithy/middleware-retry@^4.4.6": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.4.6.tgz#b3c781b42b8f1ab22ee71358c0e81303cb00d737" + integrity sha512-OhLx131znrEDxZPAvH/OYufR9d1nB2CQADyYFN4C3V/NQS7Mg4V6uvxHC/Dr96ZQW8IlHJTJ+vAhKt6oxWRndA== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/service-error-classification" "^4.2.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/uuid" "^1.1.0" + tslib "^2.6.2" + +"@smithy/middleware-serde@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.2.4.tgz#43da8ac40e2bcdd30e705a6047a3a667ce44433c" + integrity sha512-jUr3x2CDhV15TOX2/Uoz4gfgeqLrRoTQbYAuhLS7lcVKNev7FeYSJ1ebEfjk+l9kbb7k7LfzIR/irgxys5ZTOg== + dependencies: + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/middleware-stack@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.2.4.tgz#9c833c3c8f2ddda1e2e31c9315ffa31f0f0aa85d" + integrity sha512-Gy3TKCOnm9JwpFooldwAboazw+EFYlC+Bb+1QBsSi5xI0W5lX81j/P5+CXvD/9ZjtYKRgxq+kkqd/KOHflzvgA== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/node-config-provider@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.3.4.tgz#9e41d45167568dbd2e1bc2c24a25cb26c3fd847f" + integrity sha512-3X3w7qzmo4XNNdPKNS4nbJcGSwiEMsNsRSunMA92S4DJLLIrH5g1AyuOA2XKM9PAPi8mIWfqC+fnfKNsI4KvHw== + dependencies: + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/node-http-handler@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.4.4.tgz#e0ccaae333960df7e9387e9487554b98674b7720" + integrity sha512-VXHGfzCXLZeKnFp6QXjAdy+U8JF9etfpUXD1FAbzY1GzsFJiDQRQIt2CnMUvUdz3/YaHNqT3RphVWMUpXTIODA== + dependencies: + "@smithy/abort-controller" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/querystring-builder" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/property-provider@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.2.4.tgz#ea36ed8f1e282060aaf5cd220f2b428682d52775" + integrity sha512-g2DHo08IhxV5GdY3Cpt/jr0mkTlAD39EJKN27Jb5N8Fb5qt8KG39wVKTXiTRCmHHou7lbXR8nKVU14/aRUf86w== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/protocol-http@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.3.4.tgz#2773de28d0b7e8b0ab83e94673fee0966fc8c68c" + integrity sha512-3sfFd2MAzVt0Q/klOmjFi3oIkxczHs0avbwrfn1aBqtc23WqQSmjvk77MBw9WkEQcwbOYIX5/2z4ULj8DuxSsw== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/querystring-builder@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.2.4.tgz#9f57301a895bb986cf7740edd70a91df335e6109" + integrity sha512-KQ1gFXXC+WsbPFnk7pzskzOpn4s+KheWgO3dzkIEmnb6NskAIGp/dGdbKisTPJdtov28qNDohQrgDUKzXZBLig== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-uri-escape" "^4.2.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.2.4.tgz#c0cc9b13855e9fc45a0c75ae26482eab6891a25e" + integrity sha512-aHb5cqXZocdzEkZ/CvhVjdw5l4r1aU/9iMEyoKzH4eXMowT6M0YjBpp7W/+XjkBnY8Xh0kVd55GKjnPKlCwinQ== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/service-error-classification@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.2.4.tgz#acace7208270c8a9c4f2218092866b4d650d4719" + integrity sha512-fdWuhEx4+jHLGeew9/IvqVU/fxT/ot70tpRGuOLxE3HzZOyKeTQfYeV1oaBXpzi93WOk668hjMuuagJ2/Qs7ng== + dependencies: + "@smithy/types" "^4.8.1" + +"@smithy/shared-ini-file-loader@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.4.tgz#ba0707daba05d7705ae120abdc27dbfa5b5b9049" + integrity sha512-y5ozxeQ9omVjbnJo9dtTsdXj9BEvGx2X8xvRgKnV+/7wLBuYJQL6dOa/qMY6omyHi7yjt1OA97jZLoVRYi8lxA== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/signature-v4@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.4.tgz#d2233c39ce0b02041a11c5cfd210f3e61982931a" + integrity sha512-ScDCpasxH7w1HXHYbtk3jcivjvdA1VICyAdgvVqKhKKwxi+MTwZEqFw0minE+oZ7F07oF25xh4FGJxgqgShz0A== + dependencies: + "@smithy/is-array-buffer" "^4.2.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-hex-encoding" "^4.2.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-uri-escape" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^4.9.2": + version "4.9.2" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.9.2.tgz#6f9d916da362de7ac8e685112e3f68a9eba56b94" + integrity sha512-gZU4uAFcdrSi3io8U99Qs/FvVdRxPvIMToi+MFfsy/DN9UqtknJ1ais+2M9yR8e0ASQpNmFYEKeIKVcMjQg3rg== + dependencies: + "@smithy/core" "^3.17.2" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-stream" "^4.5.5" + tslib "^2.6.2" + +"@smithy/types@^4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.8.1.tgz#0ecad4e329340c8844e38a18c7608d84cc1c853c" + integrity sha512-N0Zn0OT1zc+NA+UVfkYqQzviRh5ucWwO7mBV3TmHHprMnfcJNfhlPicDkBHi0ewbh+y3evR6cNAW0Raxvb01NA== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.4.tgz#36336ea90529ff00de473a2c82d1487d87a588b1" + integrity sha512-w/N/Iw0/PTwJ36PDqU9PzAwVElo4qXxCC0eCTlUtIz/Z5V/2j/cViMHi0hPukSBHp4DVwvUlUhLgCzqSJ6plrg== + dependencies: + "@smithy/querystring-parser" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-base64@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.0.tgz#5e287b528793aa7363877c1a02cd880d2e76241d" + integrity sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ== + dependencies: + "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz#04e9fc51ee7a3e7f648a4b4bcdf96c350cfa4d61" + integrity sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz#79c8a5d18e010cce6c42d5cbaf6c1958523e6fec" + integrity sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-buffer-from@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz#7abd12c4991b546e7cee24d1e8b4bfaa35c68a9d" + integrity sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew== + dependencies: + "@smithy/is-array-buffer" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz#2e4722937f8feda4dcb09672c59925a4e6286cfc" + integrity sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^4.3.5": + version "4.3.5" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.5.tgz#c74f357b048d20c95aa636fa79d33bcfa799e2d0" + integrity sha512-GwaGjv/QLuL/QHQaqhf/maM7+MnRFQQs7Bsl6FlaeK6lm6U7mV5AAnVabw68cIoMl5FQFyKK62u7RWRzWL25OQ== + dependencies: + "@smithy/property-provider" "^4.2.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^4.2.8": + version "4.2.8" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.8.tgz#3a52ae1a064b85b019aa2ccbe9b61a91e6cc605f" + integrity sha512-gIoTf9V/nFSIZ0TtgDNLd+Ws59AJvijmMDYrOozoMHPJaG9cMRdqNO50jZTlbM6ydzQYY8L/mQ4tKSw/TB+s6g== + dependencies: + "@smithy/config-resolver" "^4.4.2" + "@smithy/credential-provider-imds" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-endpoints@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.2.4.tgz#d68a4692a55b14f2060de75715bd4664b93a4353" + integrity sha512-f+nBDhgYRCmUEDKEQb6q0aCcOTXRDqH5wWaFHJxt4anB4pKHlgGoYP3xtioKXH64e37ANUkzWf6p4Mnv1M5/Vg== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz#1c22ea3d1e2c3a81ff81c0a4f9c056a175068a7b" + integrity sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.2.4.tgz#d66d6b67c4c90be7bf0659f57000122b1a6bbf82" + integrity sha512-fKGQAPAn8sgV0plRikRVo6g6aR0KyKvgzNrPuM74RZKy/wWVzx3BMk+ZWEueyN3L5v5EDg+P582mKU+sH5OAsg== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-retry@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.2.4.tgz#1f466d3bc5b5f114994ac2298e859815f3a8deec" + integrity sha512-yQncJmj4dtv/isTXxRb4AamZHy4QFr4ew8GxS6XLWt7sCIxkPxPzINWd7WLISEFPsIan14zrKgvyAF+/yzfwoA== + dependencies: + "@smithy/service-error-classification" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-stream@^4.5.5": + version "4.5.5" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.5.5.tgz#a3fd73775c65dd23370d021b8818914a2c44f28e" + integrity sha512-7M5aVFjT+HPilPOKbOmQfCIPchZe4DSBc1wf1+NvHvSoFTiFtauZzT+onZvCj70xhXd0AEmYnZYmdJIuwxOo4w== + dependencies: + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-hex-encoding" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz#096a4cec537d108ac24a68a9c60bee73fc7e3a9e" + integrity sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-utf8@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.0.tgz#8b19d1514f621c44a3a68151f3d43e51087fed9d" + integrity sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw== + dependencies: + "@smithy/util-buffer-from" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.2.4.tgz#a28b7835aacd82ae2d10da5af5bf21b3c21b34ac" + integrity sha512-roKXtXIC6fopFvVOju8VYHtguc/jAcMlK8IlDOHsrQn0ayMkHynjm/D2DCMRf7MJFXzjHhlzg2edr3QPEakchQ== + dependencies: + "@smithy/abort-controller" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/uuid@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@smithy/uuid/-/uuid-1.1.0.tgz#9fd09d3f91375eab94f478858123387df1cda987" + integrity sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw== + dependencies: + tslib "^2.6.2" + "@tootallnate/once@2": version "2.0.0" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" @@ -1302,10 +2390,15 @@ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abitype@1.0.8, abitype@^1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz" - integrity sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg== +abitype@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" + integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== + +abitype@^1.0.9: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.1.tgz#b50ed400f8bfca5452eb4033445c309d3e1117c8" + integrity sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q== abort-controller@^3.0.0: version "3.0.0" @@ -1481,13 +2574,13 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axios@^1.8.2, axios@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz" - integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg== +axios@^1.12.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== dependencies: follow-redirects "^1.15.6" - form-data "^4.0.0" + form-data "^4.0.4" proxy-from-env "^1.1.0" base64-js@^1.3.0, base64-js@^1.3.1: @@ -1510,13 +2603,6 @@ binary-extensions@^2.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bintrees@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz" @@ -1563,6 +2649,11 @@ boolbase@^1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +bowser@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.12.1.tgz#f9ad78d7aebc472feb63dd9635e3ce2337e0e2c1" + integrity sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw== + braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" @@ -1676,14 +2767,6 @@ bytes@3.1.2, bytes@^3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -c-kzg@4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.npmjs.org/c-kzg/-/c-kzg-4.0.0-alpha.1.tgz" - integrity sha512-I8S9+c6OEaF6mD5OQJ/PylPk8C3TENQqvMomzV4u+NyOTdVOwF/VFj/z2o5OOPt930qkms0AbzXZ+Qu4qQCYxg== - dependencies: - bindings "^1.5.0" - node-addon-api "^5.0.0" - cache-content-type@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz" @@ -2074,13 +3157,20 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.3.2: version "4.4.1" resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" +debug@^4.4.1: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" @@ -2541,6 +3631,13 @@ fast-uri@^3.0.1: resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== +fast-xml-parser@5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz#4809fdfb1310494e341098c25cb1341a01a9144a" + integrity sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ== + dependencies: + strnum "^2.1.0" + fast-xml-parser@^4.4.1: version "4.5.3" resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz" @@ -2560,11 +3657,6 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fill-range@^7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" @@ -2636,14 +3728,15 @@ form-data@^2.5.0: mime-types "^2.1.35" safe-buffer "^5.2.1" -form-data@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz" - integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" forwarded@0.2.0: @@ -2737,7 +3830,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^11.0.2: +glob@^11.0.3: version "11.0.3" resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== @@ -3229,10 +4322,10 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isows@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz" - integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== +isows@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== jackspeak@^4.1.1: version "4.1.1" @@ -3343,16 +4436,15 @@ koa-is-json@^1.0.0: resolved "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz" integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== -koa-router@^12.0.0: - version "12.0.1" - resolved "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz" - integrity sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w== +koa-router@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-13.1.1.tgz#7b7d08b1aba82c4cc50ad71164b0d6d33d368784" + integrity sha512-3GxRi7CxEgsfGhdFf4OW4OLv0DFdyNl2drcOCtoezi+LDSnkg0mhr1Iq5Q25R4FJt3Gw6dcAKrcpaCJ7WJfhYg== dependencies: - debug "^4.3.4" + debug "^4.4.1" http-errors "^2.0.0" koa-compose "^4.1.0" - methods "^1.1.2" - path-to-regexp "^6.2.1" + path-to-regexp "^6.3.0" koa@^2.16.1: version "2.16.1" @@ -3549,7 +4641,7 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -methods@^1.1.2, methods@~1.1.2: +methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== @@ -3701,11 +4793,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-addon-api@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz" - integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== - node-addon-api@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz" @@ -3850,17 +4937,18 @@ ordered-binary@^1.5.3: resolved "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz" integrity sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA== -ox@0.6.7: - version "0.6.7" - resolved "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz" - integrity sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA== - dependencies: - "@adraffy/ens-normalize" "^1.10.1" - "@noble/curves" "^1.6.0" - "@noble/hashes" "^1.5.0" - "@scure/bip32" "^1.5.0" - "@scure/bip39" "^1.4.0" - abitype "^1.0.6" +ox@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.6.tgz#5cf02523b6db364c10ee7f293ff1e664e0e1eab7" + integrity sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.0.9" eventemitter3 "5.0.1" p-limit@^2.2.0: @@ -3974,9 +5062,9 @@ path-to-regexp@0.1.12: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== -path-to-regexp@^6.2.1: +path-to-regexp@^6.3.0: version "6.3.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== pbkdf2@^3.1.2: @@ -4794,6 +5882,11 @@ strnum@^1.1.1: resolved "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz" integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== +strnum@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.1.1.tgz#cf2a6e0cf903728b8b2c4b971b7e36b4e82d46ab" + integrity sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw== + stubs@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" @@ -4949,7 +6042,7 @@ ts-loader@^9.5.1: semver "^7.3.4" source-map "^0.7.4" -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -4967,10 +6060,10 @@ type-is@^1.6.16, type-is@^1.6.18, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typescript@^5.3.3: - version "5.8.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== +typescript@^5.7.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== typical@^4.0.0: version "4.0.0" @@ -5048,19 +6141,19 @@ vary@^1.1.2, vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -viem@2.23.7: - version "2.23.7" - resolved "https://registry.npmjs.org/viem/-/viem-2.23.7.tgz" - integrity sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A== +"viem@npm:@spalladino/viem@2.38.2-eip7594.0": + version "2.38.2-eip7594.0" + resolved "https://registry.yarnpkg.com/@spalladino/viem/-/viem-2.38.2-eip7594.0.tgz#d875366821c5fb07b8ed6f52610c21e0e3a761cd" + integrity sha512-1gwcB0wxqUoSuzbwTafhqLOeNPWOaIKkSUUvzgsg5gBDOXDxA8tPJWUXBFFdr640maizWRjTbP9GLuLzgMeSuQ== 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" - isows "1.0.6" - ox "0.6.7" - ws "8.18.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.1.0" + isows "1.0.7" + ox "0.9.6" + ws "8.18.3" watchpack@^2.4.1: version "2.4.4" @@ -5274,10 +6367,10 @@ wrappy@1: resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@8.18.0: - version "8.18.0" - resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== +ws@8.18.3: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== ws@^8.13.0, ws@^8.18.0: version "8.18.2"