diff --git a/.agents/skills/build-jsdoc/SKILL.md b/.agents/skills/build-jsdoc/SKILL.md index 7f82ca05..07f48b85 100644 --- a/.agents/skills/build-jsdoc/SKILL.md +++ b/.agents/skills/build-jsdoc/SKILL.md @@ -49,12 +49,13 @@ the canonical tree, and `AGENTS.md` resolves to `CLAUDE.md`. ## Install and Build -Use the repository-pinned Bun version from `packageManager` (`bun@1.3.12`): +Use the repository-pinned pnpm version from `packageManager` (`pnpm@11.1.1`), activated through +corepack: ```sh -bun install --frozen-lockfile -bun run --filter @morpho-org/market-making-bot jsdoc:check -bun run --filter @morpho-org/market-making-bot jsdoc:build +pnpm install --frozen-lockfile +pnpm --filter @morpho-org/market-making-bot run jsdoc:check +pnpm --filter @morpho-org/market-making-bot run jsdoc:build ``` - Coverage command: `jsdoc:check` @@ -134,13 +135,13 @@ URL, default runtime environment, raw provider response, or generated source-map explicit documented return type. Do not disable warnings-as-errors. 3. If TypeDoc warns about a private implementation alias, keep the alias private and avoid exposing it through an inferred public signature; prefer an explicit exported boundary type. -4. If installation changes unrelated lockfile entries, restore them and reinstall with Bun 1.3.12. +4. If installation changes unrelated lockfile entries, restore them and reinstall with pnpm 11.1.1. 5. If generated HTML is staged, unstage and delete it; only source, config, script, dependency, and lockfile changes belong in the PR. ## Verification Checklist -- [ ] Pinned Bun install succeeds with the lockfile frozen. +- [ ] Pinned pnpm install succeeds with the lockfile frozen. - [ ] AST coverage prints the exhaustive public declaration inventory and exits zero. - [ ] TypeDoc exits zero with warnings-as-errors enabled. - [ ] `bots/market-making/build/jsdoc/index.html` exists and is non-empty. diff --git a/.claude/commands/babysit-pr.md b/.claude/commands/babysit-pr.md index 97d8b34c..82239eaa 100644 --- a/.claude/commands/babysit-pr.md +++ b/.claude/commands/babysit-pr.md @@ -438,10 +438,10 @@ For **CI failures**: After all comments are addressed, run validation on affected packages: ```bash -bun run --filter typecheck -bun lint +pnpm --filter run typecheck +pnpm lint bun test -bun format +pnpm format ``` Fix any issues found. diff --git a/.claude/commands/check-dependency-vulnerability.md b/.claude/commands/check-dependency-vulnerability.md index f3840d88..2a40ad8e 100644 --- a/.claude/commands/check-dependency-vulnerability.md +++ b/.claude/commands/check-dependency-vulnerability.md @@ -109,17 +109,26 @@ DO NOT just check package.json specifiers. Semver ranges like `^15.0.5` can reso compatible version. Use deterministic package manager commands to find the ACTUAL installed version for EACH package in -your checklist. This repo uses bun as its package manager — `bun.lock` is the authoritative source -of installed versions. +your checklist. This repo uses pnpm as its package manager — `pnpm-lock.yaml` is the authoritative +source of installed versions. ```bash -# bun pm ls — show installed packages and their resolved versions across the workspace -bun pm ls --all | grep +# pnpm why — show which workspace projects pull a package, and at which resolved version. +# This is the most direct answer for "is in this repo, and at what version?" +pnpm why -r --depth 0 -# Inspect bun.lock directly for the resolved version entries -grep -A 2 "\"@" bun.lock +# pnpm list — the full resolved tree across every workspace project +pnpm list -r --depth Infinity | grep + +# Inspect pnpm-lock.yaml directly. Entries in the `packages:` section are keyed `name@version`, +# so anchoring on two leading spaces matches the resolved version and not a dependency mention. +grep -n "^ @" pnpm-lock.yaml ``` +Note that pnpm records peer-dependency variations, so one package can legitimately appear at the +same version several times with different peer suffixes (for example +`viem@2.47.17(typescript@6.0.2)(zod@3.25.76)`). Those are the same install, not a version conflict. + If the project also has `node_modules` populated, you can confirm by reading the package's own `package.json`: @@ -132,9 +141,10 @@ cat node_modules//package.json | grep '"version"' You MUST show the exact command output used to determine the installed version. For example: ``` -Command: bun pm ls --all | grep next +Command: pnpm why next -r --depth 0 Output: -└── next@15.5.5 +next@15.5.5 +└── @morpho-org/some-bot@0.1.0 (dependencies) Installed version determined: 15.5.5 ``` @@ -194,38 +204,37 @@ If `grep` or direct file search was used, you MUST also include: - The exact line numbers where vulnerable versions were found - The raw line content from those locations -If `bun pm ls`, lockfile inspection, or similar package manager commands were used, you MUST +If `pnpm why`, `pnpm list`, lockfile inspection, or similar package manager commands were used, you MUST provide: - The exact commands executed (copy-pasteable) - A note that the user can run these commands themselves to verify -Example (using `bun pm ls`): +Example (using `pnpm why`): ``` Package: viem -Command: bun pm ls --all | grep viem +Command: pnpm why viem -r --depth 0 Evidence: └── viem@2.20.0 Version line: 2.20.x Safe version for 2.20.x: 2.21.0 Comparison: 2.20.0 < 2.21.0 Result: VULNERABLE -To verify, run: bun pm ls --all | grep viem +To verify, run: pnpm why viem -r --depth 0 ``` -Example (using grep on `bun.lock`): +Example (using grep on `pnpm-lock.yaml`): ``` Package: viem -Command: grep -n "\"viem@" bun.lock +Command: grep -n "^ viem@" pnpm-lock.yaml Files searched: -- /path/to/project/bun.lock +- /path/to/project/pnpm-lock.yaml Evidence found: -- bun.lock:1542: "viem@2.20.0": -- bun.lock:1543: resolution: ... -- bun.lock:1544: version: 2.20.0 +- pnpm-lock.yaml:1547: viem@2.20.0: +- pnpm-lock.yaml:1548: resolution: {integrity: sha512-...} Version determined from line 1544: 2.20.0 Version line: 2.20.x diff --git a/.claude/commands/execute-issue.md b/.claude/commands/execute-issue.md index 356f0791..beb8d2b8 100644 --- a/.claude/commands/execute-issue.md +++ b/.claude/commands/execute-issue.md @@ -71,7 +71,7 @@ Execute the implementation plan for Linear issue {{issue_id}}: - **Post-implementation agents:** After implementing, review the agent team (`.claude/agents/`) and invoke any agents whose trigger conditions match the changes (e.g., `documentor` for architectural changes). - - Run `bun lint` and `bun run --filter typecheck` to ensure code quality + - Run `pnpm lint` and `pnpm --filter run typecheck` to ensure code quality - **Pre-push review:** After lint and typecheck pass, invoke the `reviewer` agent to validate all changes against `docs/CONVENTIONS.md`. If the reviewer reports must-fix issues, address them before pushing. If only suggestions are reported, note them but proceed with the push. diff --git a/.claude/commands/railway.md b/.claude/commands/railway.md index c9ab4dfd..65aeaa40 100644 --- a/.claude/commands/railway.md +++ b/.claude/commands/railway.md @@ -24,7 +24,7 @@ and redeploys that bot's services. Secrets come from the bot's `.env.local`. ```bash set -a; source bots//.env.local; set +a - bun run --filter @morpho-org/ deploy:railway + pnpm --filter @morpho-org/ run deploy:railway ``` 3. Success = the script prints `SUCCESS` for each service. Then verify with `logs`. diff --git a/.claude/commands/retro.md b/.claude/commands/retro.md index cde3efcf..d4889b82 100644 --- a/.claude/commands/retro.md +++ b/.claude/commands/retro.md @@ -191,7 +191,7 @@ Use reference-style markdown links for all PR and TIB references (at the bottom 3. Run formatting: ```bash - bun format + pnpm format ``` 4. Verify the document: diff --git a/.claude/commands/review.md b/.claude/commands/review.md index f79b4776..8761e668 100644 --- a/.claude/commands/review.md +++ b/.claude/commands/review.md @@ -1,6 +1,6 @@ # review -Reviews a GitHub Pull Request with expertise in TypeScript, viem, bun workspaces, and Morpho +Reviews a GitHub Pull Request with expertise in TypeScript, viem, pnpm workspaces, and Morpho protocol best practices. ## Usage @@ -18,7 +18,7 @@ protocol best practices. ## Prompt You are an expert code reviewer specializing in TypeScript, viem (no wagmi — bots have no React -surface), bun-based monorepos, and Morpho protocol code paths. +surface), pnpm-based monorepos, and Morpho protocol code paths. Review the provided PR thoroughly and interactively guide the user through each finding. @@ -116,7 +116,7 @@ Review the provided PR thoroughly and interactively guide the user through each 5. **Use Context7 MCP**: When reviewing implementation details, use the Context7 MCP tools to verify against official documentation for: - viem (contract interactions, encoding, decoding, transports) - - bun (workspaces, test runner, lockfile semantics) + - pnpm (workspaces, catalog, lockfile semantics) and bun (test runner, runtime) 6. **TIB Consideration**: Check if the PR introduces changes that warrant a Technical Intent Brief (TIB) (see `docs/GUIDANCE.md`). Flag as "Minor" severity if the PR: @@ -194,7 +194,7 @@ Review the provided PR thoroughly and interactively guide the user through each `--sandbox danger-full-access`, `git push --force`)? Flag any escalation of tool access or sandbox permissions. - **Evaluation completeness**: For review-type commands or checklists, are there gaps in - coverage given the codebase's stack (viem, multi-chain, bun, oxlint)? + coverage given the codebase's stack (viem, multi-chain, pnpm, bun, oxlint)? - **Cross-reference accuracy**: If the file references other files (TIBs, CONVENTIONS.md sections, other commands), verify those references are valid and up to date. diff --git a/.cursor/worktrees.json b/.cursor/worktrees.json index d1789a64..bf9e730d 100644 --- a/.cursor/worktrees.json +++ b/.cursor/worktrees.json @@ -1,3 +1,3 @@ { - "setup-worktree": ["bun install"] + "setup-worktree": ["pnpm install"] } diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index bcd5c76f..a94c9966 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -1,5 +1,5 @@ name: 'Setup' -description: 'Sets up the repository (Bun + Node) and builds dist-emitting workspace packages' +description: 'Sets up the repository (pnpm + Node + Bun) and builds dist-emitting workspace packages' inputs: install: description: 'Whether to install dependencies' @@ -16,23 +16,37 @@ inputs: runs: using: 'composite' steps: - - name: Set up Bun - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 - with: - bun-version: 1.3.12 + # pnpm owns installs, workspace resolution, and script running. The version comes from + # package.json#packageManager, so it is not repeated here. + # + # Upstream now scopes `action-setup` to pnpm v10 and older and points v11+ at its successor, + # `pnpm/setup`. We stay on `action-setup` regardless: the org's GitHub Actions allowlist permits + # `pnpm/action-setup@*` and not `pnpm/setup@*`, so the successor fails every job at the Setup + # step with "is not allowed in morpho-org/morpho-bots". `action-setup` installs pnpm 11.1.1 here + # correctly. Moving to `pnpm/setup` — worth doing, since it verifies pnpm's release binary + # against GitHub's published digest rather than bootstrapping through an `npm ci` of `@pnpm/exe` + # — needs an org admin to allowlist it first. + - name: Set up pnpm + uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v4.4.0 - name: Install Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version-file: .nvmrc + # bun remains the runtime and the test runner; pnpm only manages dependencies and tasks. + - name: Set up Bun + uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 + with: + bun-version: 1.3.12 + - name: Install dependencies if: ${{ inputs.install == 'true' }} shell: bash run: | - bun install ${{ inputs.frozen-lockfile == 'true' && '--frozen-lockfile' || '' }} + pnpm install ${{ inputs.frozen-lockfile == 'true' && '--frozen-lockfile' || '' }} - name: Build @repo/contracts if: ${{ inputs.build-contracts == 'true' }} shell: bash - run: bun run --filter @repo/contracts build + run: pnpm --filter @repo/contracts run build diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index e0b92771..7434207e 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -19,10 +19,10 @@ jobs: uses: ./.github/actions/setup - name: Run lint - run: bun lint + run: pnpm lint - name: Run format check - run: bun format:check + run: pnpm format:check Typecheck: runs-on: ubuntu-latest @@ -32,7 +32,7 @@ jobs: uses: ./.github/actions/setup - name: Run typecheck - run: bun run --filter '*' typecheck + run: pnpm -r run typecheck Test: runs-on: ubuntu-latest @@ -69,4 +69,4 @@ jobs: uses: ./.github/actions/setup - name: Check for unused code and dependencies - run: bun knip + run: pnpm knip diff --git a/.github/workflows/deploy-bot.yml b/.github/workflows/deploy-bot.yml index 3f37d762..17453f90 100644 --- a/.github/workflows/deploy-bot.yml +++ b/.github/workflows/deploy-bot.yml @@ -73,4 +73,4 @@ jobs: crossed-books) pkg='@morpho-org/midnight-crossed-books' ;; *) echo "Unknown bot: $BOT" >&2; exit 1 ;; esac - bun run --filter "$pkg" deploy:railway + pnpm --filter "$pkg" run deploy:railway diff --git a/.husky/pre-commit b/.husky/pre-commit index c354c84f..dc569cf7 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,5 @@ #!/usr/bin/env sh set -e -bun lint-staged -bun knip +pnpm lint-staged +pnpm knip diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 020434cb..f12ee9e6 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -18,7 +18,7 @@ ] }, "ignorePatterns": [ - "bun.lock", + "pnpm-lock.yaml", "**/dist/**", "**/build/**", "**/coverage/**", diff --git a/.oxlintrc.json b/.oxlintrc.json index 19a7f47c..35306732 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -30,7 +30,7 @@ "**/build", "**/coverage", "**/generated", - "bun.lock", + "pnpm-lock.yaml", "**/*.cjs", "**/*.mjs", "**/*.js" diff --git a/CLAUDE.md b/CLAUDE.md index f5c1d773..baea86c0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,12 +27,12 @@ Agent conventions: - **Test verification**: After writing or modifying tests, run them, then temporarily break one assertion to confirm the test actually fails. Revert after confirming. This guards against tests that pass vacuously. -- **Format**: Run `bun format` directly in the validation suite (see Self-Verification) — do not - run `bun format:check` first, just auto-format. +- **Format**: Run `pnpm format` directly in the validation suite (see Self-Verification) — do not + run `pnpm format:check` first, just auto-format. - **JSDoc public surface**: Every externally facing function and public method changed in TypeScript requires substantive JSDoc covering its applicable parameters, return value, failures, and side effects. Before completion, follow `.agents/skills/build-jsdoc/SKILL.md` and run - `bun run --filter @morpho-org/market-making-bot jsdoc:build`; `.claude/skills` must be the real + `pnpm --filter @morpho-org/market-making-bot run jsdoc:build`; `.claude/skills` must be the real symlink `../.agents/skills`, and independent checks must continue to run concurrently through `Promise.all` where possible. - **Utility isolation**: Utility functions must live in a different file from every file containing @@ -76,7 +76,7 @@ your expectation, THEN claim success. ### During development Running lint or typecheck mid-implementation is fine — use your judgment. For tricky changes, a -quick `bun run --filter typecheck` or `bun lint` can help you course-correct early. But +quick `pnpm --filter run typecheck` or `pnpm lint` can help you course-correct early. But **do not force the full validation suite after every change**. Focus on writing code. ### Before committing or when the user says "validate" @@ -84,10 +84,10 @@ quick `bun run --filter typecheck` or `bun lint` can help you course-corre Run the full suite once the user confirms they're happy with the code (or when preparing to commit/push): -1. **Type safety**: Run `bun run --filter typecheck` — zero errors required. -2. **Lint**: Run `bun lint` from the repo root — zero warnings policy. Lint is a workspace-level +1. **Type safety**: Run `pnpm --filter run typecheck` — zero errors required. +2. **Lint**: Run `pnpm lint` from the repo root — zero warnings policy. Lint is a workspace-level concern; oxlint walks the whole tree and per-package `lint` scripts are deliberately omitted. -3. **Format**: Run `bun format` — auto-fixes formatting in place. +3. **Format**: Run `pnpm format` — auto-fixes formatting in place. 4. **Existing tests**: Run `bun test` — all must pass. **Escalation rule**: After 3 failed fix attempts for the same issue, STOP. Tell the user what you @@ -147,7 +147,7 @@ These files provide important background information about dependencies and rela ## Architecture Overview -This is a **bun workspaces monorepo** housing off-chain Morpho curator bots: +This is a **pnpm workspaces monorepo** housing off-chain Morpho curator bots: - `/bots/` — individual bot apps, one per bot. Each is a **standalone long-running TypeScript program**: `main()` in `src/index.ts` loads config from the environment (fail-loud). The @@ -185,9 +185,10 @@ transparent JSON-Lines wire contract) was tried for ~a week and reverted — see which supersedes the now-historical [TIB-2026-07-13-bot-architecture](./docs/decisions/TIB-2026-07-13-bot-architecture.md). -**Key technologies**: bun 1.3.12 (runtime + package manager + workspace task runner), Node.js -24.14.1, TypeScript 6.0, viem for Web3, oxlint + oxfmt for lint/format, knip for dead-code -detection, bun's built-in test runner. +**Key technologies**: pnpm 11.1.1 (package manager + workspace resolution + version catalog + task +runner; lifecycle scripts are default-denied via `allowBuilds` in `pnpm-workspace.yaml`), bun 1.3.12 +(runtime + test runner), Node.js 24.14.1, TypeScript 6.0, viem for Web3, oxlint + oxfmt for +lint/format, knip for dead-code detection. **Node.js requirement**: `24.14.1` (see `.nvmrc`). diff --git a/README.md b/README.md index d99243e6..b9d03420 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Off-chain Morpho curator bots — reallocators, liquidation monitors, and similar — and the shared packages they consume. -This is a [bun workspaces](https://bun.com/docs/install/workspaces) monorepo: +This is a [pnpm workspaces](https://pnpm.io/workspaces) monorepo: - `bots/` — individual bot apps (one per bot); each keeps its own `docs/` - `packages/` — shared libraries (`@repo/bot-kit`, `@repo/swaps`, `@repo/contracts`, @@ -12,18 +12,22 @@ This is a [bun workspaces](https://bun.com/docs/install/workspaces) monorepo: ## Getting started ```sh -nvm use # Node 24.14.1 (see .nvmrc) -bun install +nvm use # Node 24.14.1 (see .nvmrc) +corepack enable pnpm # pnpm 11.1.1, pinned by package.json#packageManager +pnpm install ``` +`pnpm` denies dependency lifecycle scripts by default — see `allowBuilds` in +`pnpm-workspace.yaml`. An install that needs a new one fails loudly rather than running it. + ## Daily commands ```sh -bun run lint # oxlint, repo-wide -bun run lint:fix # oxlint with --fix -bun format # oxfmt, repo-wide -bun run knip # dead-code detection -bun test # bun's built-in test runner +pnpm run lint # oxlint, repo-wide +pnpm run lint:fix # oxlint with --fix +pnpm format # oxfmt, repo-wide +pnpm run knip # dead-code detection +bun test # bun's built-in test runner ``` ## Pointers diff --git a/bots/blue-liquidation/Dockerfile b/bots/blue-liquidation/Dockerfile index 1d7bdd80..6d969723 100644 --- a/bots/blue-liquidation/Dockerfile +++ b/bots/blue-liquidation/Dockerfile @@ -1,18 +1,37 @@ # syntax=docker/dockerfile:1 -# Bun-workspace image for the blue-liquidation bot. The build context MUST be the repo root so the +# pnpm-workspace image for the blue-liquidation bot. The build context MUST be the repo root so the # workspace packages (packages/*) resolve — docker-compose.yml sets `context: ../..` and the Railway # deploy runs `railway up` from the repo root. Borrower discovery polls the Morpho GraphQL API, so # there is no indexer/database sidecar to build. -FROM oven/bun:1.3.12-slim +# +# pnpm owns installs, but bun is still the runtime, so this image carries both. The base is Node +# because pnpm is activated through corepack, which the oven/bun images do not provide; bun comes in +# as a single copied binary. Both pnpm and bun must stay on PATH in the FINAL image: `start` fires +# `prestart`, which shells out to `pnpm -r run build` to compile @repo/contracts' gitignored dist/. +FROM node:24.14.1-slim +COPY --from=oven/bun:1.3.12-slim /usr/local/bin/bun /usr/local/bin/bun +ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + +# The container's environment holds a funded liquidator EOA key, so nothing here may run as root — +# the previous oven/bun base ended with `USER bun`, and the node images define `node` (uid 1000) but +# do not switch to it. Corepack's pnpm shim lands in /usr/local/bin, which only root may write, so +# enable it before dropping privileges; every layer after `USER node` is unprivileged. +RUN corepack enable pnpm +RUN mkdir -p /repo && chown node:node /repo WORKDIR /repo +USER node + +# Manifests first, so the install layer is cached. `corepack install` pre-fetches the pnpm version +# pinned in package.json#packageManager, so no download happens at container start. +COPY --chown=node:node package.json pnpm-workspace.yaml pnpm-lock.yaml bunfig.toml ./ +RUN corepack install -# Manifests + workspace members first, so `bun install` is layer-cached. All members' package.json are -# needed for bun to resolve the `workspace:*` links. -COPY package.json bun.lock bunfig.toml ./ -COPY packages ./packages -COPY bots ./bots -RUN bun install --frozen-lockfile +# All members' package.json are needed for pnpm to resolve the `workspace:*` links. +COPY --chown=node:node packages ./packages +COPY --chown=node:node bots ./bots +RUN pnpm install --frozen-lockfile -# Run the bot from its package dir (`start` builds workspaces via `prestart`, then runs src/index.ts). +# Run the bot from its package dir (`start` builds workspaces via `prestart`, then runs src/index.ts; +# the bot's own bunfig.toml preload compiles its soltag `sol``` lens templates at startup). WORKDIR /repo/bots/blue-liquidation CMD ["bun", "run", "start"] diff --git a/bots/blue-liquidation/README.md b/bots/blue-liquidation/README.md index 6bc19130..9a0e788e 100644 --- a/bots/blue-liquidation/README.md +++ b/bots/blue-liquidation/README.md @@ -19,12 +19,12 @@ position (none exist while the market is healthy), `RPC_URL_8453`, and ## Prerequisites -- **bun** `1.3.12`, **Node** `24.14.1` (`.nvmrc`). +- **pnpm** `11.1.1` (via corepack), **bun** `1.3.12`, **Node** `24.14.1` (`.nvmrc`). - A chain RPC that both reads and _relays_ transactions — **not** `rpc.morpho.dev/realtime`, which acknowledges sends but never broadcasts them. - A **funded EOA** (native gas) — the liquidator and the recipient of the end-of-exec token sweeps. - The generic **Executor** singleton deployed on each chain the bot runs on - (`bun run --filter @repo/contracts deploy:executor`). The bot derives its CREATE2 address and + (`pnpm --filter @repo/contracts run deploy:executor`). The bot derives its CREATE2 address and refuses to start if it holds no code. - At least one enabled **swap venue** — a `ZEROX_API_KEY` / `ONEINCH_API_KEY` / `LIFI_API_KEY`, or `ENABLE_LIFI=true` (LiFi routes keyless; its key only raises rate limits). A venue-less deployment @@ -86,7 +86,7 @@ export CHAIN_ID=8453 export RPC_URL=https://… export LIQUIDATOR_PRIVATE_KEY=0x… export ZEROX_API_KEY=… # or ENABLE_LIFI=true, or ALLOW_DETECTION_ONLY=true -bun run --filter @morpho-org/blue-liquidation start +pnpm --filter @morpho-org/blue-liquidation run start ``` `prestart` builds the workspace packages (soltag-compiles `@repo/contracts` and materializes the ABI). @@ -106,7 +106,7 @@ Brings up one bot per chain (`bot-base`, `bot-robinhood`) — nothing else. `RPC locally because Compose defaults Robinhood to its public RPC. Robinhood defaults to detection-only (`ALLOW_DETECTION_ONLY_4663` defaults true) and takes chainId-suffixed venue inputs (`ZEROX_API_KEY_4663` etc.) so arming Base never silently arms it. The build context is the repo -root so the bun workspace resolves. +root so the pnpm workspace resolves. ## Deploying to Railway @@ -121,7 +121,7 @@ export RPC_URL_4663=https://… export LIQUIDATOR_PRIVATE_KEY=0x… export ZEROX_API_KEY=… # venue inputs; per-chain via ZEROX_API_KEY_ etc. export ALLOW_DETECTION_ONLY_4663=true # required while Robinhood has no venue -bun run --filter @morpho-org/blue-liquidation deploy:railway +pnpm --filter @morpho-org/blue-liquidation run deploy:railway # Optional: ENABLE_LIFI[_], ONEINCH_API_KEY[_] / LIFI_API_KEY[_], # RAILWAY_ENVIRONMENT (defaults to production). ``` @@ -258,7 +258,7 @@ the nonce from `getTransactionCount('pending')`. - `bun test` — unit tests for the math, LIF, seize-exact planner (incl. the underflow-safety sweep), the id derivation, GraphQL discovery (parsing, pagination, retry semantics), config (incl. venue inference and the zero-venue gate), eligibility, quoting, venues, the queue, and the exec encoder. -- **Live read-path probe** — `bun run --filter @morpho-org/blue-liquidation probe:lens` (needs +- **Live read-path probe** — `pnpm --filter @morpho-org/blue-liquidation run probe:lens` (needs `RPC_URL`, no anvil) runs the deployless lens against a sample of real Base borrowers, prints a valid/hasDebt/healthy/liquidatable breakdown + a decoded sample, and — if it finds a live-liquidatable position — emits a ready-to-paste `FIXTURE` for the fork suite. Run it any time to confirm the read diff --git a/bots/blue-liquidation/docker-compose.yml b/bots/blue-liquidation/docker-compose.yml index 3f527cc4..018333d0 100644 --- a/bots/blue-liquidation/docker-compose.yml +++ b/bots/blue-liquidation/docker-compose.yml @@ -1,6 +1,6 @@ # Runs the per-chain blue-liquidation bots. Borrower candidates come from the Morpho GraphQL API # (MORPHO_API_URL, public by default), so there is no indexer or database to run. The bots' build -# context is the repo root so the bun workspace (packages/*) resolves — see Dockerfile. Set the +# context is the repo root so the pnpm workspace (packages/*) resolves — see Dockerfile. Set the # chainId-suffixed RPCs (RPC_URL_8453, RPC_URL_4663) and a LIQUIDATOR_PRIVATE_KEY. services: bot-base: diff --git a/bots/blue-liquidation/package.json b/bots/blue-liquidation/package.json index 15f9c8d3..a13fe1b1 100644 --- a/bots/blue-liquidation/package.json +++ b/bots/blue-liquidation/package.json @@ -7,7 +7,7 @@ "scripts": { "deploy:railway": "bun run scripts/deploy-railway.ts", "probe:lens": "bun run scripts/probe-live-lens.ts", - "prestart": "bun run --parallel --workspaces --if-present build", + "prestart": "pnpm -r --parallel --if-present run build", "start": "bun src/index.ts", "typecheck": "soltag && tsc --noEmit" }, diff --git a/bots/blue-liquidation/scripts/deploy-railway.ts b/bots/blue-liquidation/scripts/deploy-railway.ts index 02f2e6c4..ea488e64 100644 --- a/bots/blue-liquidation/scripts/deploy-railway.ts +++ b/bots/blue-liquidation/scripts/deploy-railway.ts @@ -19,7 +19,7 @@ * fails loud at startup otherwise. Remove it (rerun with venues) once the chain should route. * * RAILWAY_PROJECT_ID=… RPC_URL_8453=… RPC_URL_4663=… LIQUIDATOR_PRIVATE_KEY=0x… \ - * ALLOW_DETECTION_ONLY_4663=true bun run --filter @morpho-org/blue-liquidation deploy:railway + * ALLOW_DETECTION_ONLY_4663=true pnpm --filter @morpho-org/blue-liquidation run deploy:railway * * The build context MUST be the repo root so the bun workspace (packages/*) resolves — the script * runs `railway up` with cwd set to the repo root (mirrors the Dockerfile header + compose context). @@ -433,7 +433,7 @@ console.log(' ENABLE_LIFI=true keyless). A detection-only chain (ALLOW_DETEC console.log(' discovers + logs liquidatable positions but skips every liquidation — rerun this') console.log(' script with venue inputs once it should route.') console.log(' 2. Each bot needs a funded key + a real RPC before it can broadcast; Robinhood also') -console.log(' needs the Executor deployed (bun run --filter @repo/contracts deploy:executor).') +console.log(' needs the Executor deployed (pnpm --filter @repo/contracts run deploy:executor).') console.log( ' 3. One-time after this migration: delete the legacy Postgres + rindexer services (and' ) diff --git a/bots/blue-liquidation/src/index.ts b/bots/blue-liquidation/src/index.ts index d60eb276..c4f98f24 100644 --- a/bots/blue-liquidation/src/index.ts +++ b/bots/blue-liquidation/src/index.ts @@ -86,7 +86,7 @@ async function main() { client, config.executooorAddress, 'EXECUTOOOR_ADDRESS', - 'deploy it with `bun run --filter @repo/contracts deploy:executor`' + 'deploy it with `pnpm --filter @repo/contracts run deploy:executor`' ) await assertContractDeployed(client, config.morpho, 'Morpho singleton') diff --git a/bots/market-making/README.md b/bots/market-making/README.md index e846bb57..7d44b273 100644 --- a/bots/market-making/README.md +++ b/bots/market-making/README.md @@ -37,10 +37,10 @@ its `github-pages` environment for deployment status. ## Run ```sh -bun run --filter @morpho-org/market-making-bot start -- setup-check +pnpm --filter @morpho-org/market-making-bot run start -- setup-check # Address-only setup inspection: MAKER_PRIVATE_KEY may be omitted. -bun run --filter @morpho-org/market-making-bot start -- --readonly setup-check +pnpm --filter @morpho-org/market-making-bot run start -- --readonly setup-check # Explicit signer sources (root options precede the command). bun run --filter @morpho-org/market-making-bot start -- --private-key '' setup-check @@ -62,49 +62,49 @@ place secrets in argv, where process listings and shell history may expose them. ```sh # Repeat read-only readiness checks every minute until SIGINT/SIGTERM. -bun run --filter @morpho-org/market-making-bot start -- setup-check --monitor +pnpm --filter @morpho-org/market-making-bot run start -- setup-check --monitor # Emit compact JSON Lines for automation instead of the default human-readable output. -bun run --filter @morpho-org/market-making-bot start -- --json setup-check +pnpm --filter @morpho-org/market-making-bot run start -- --json setup-check # One live position-bootstrap cycle. -bun run --filter @morpho-org/market-making-bot start -- bootstrap +pnpm --filter @morpho-org/market-making-bot run start -- bootstrap # One address-only cycle that logs desired make operations without submitting them. -bun run --filter @morpho-org/market-making-bot start -- --readonly bootstrap +pnpm --filter @morpho-org/market-making-bot run start -- --readonly bootstrap # Repeat bootstrap every minute; SIGINT/SIGTERM drains the current cycle and removes owned offers. -bun run --filter @morpho-org/market-making-bot start -- bootstrap --monitor +pnpm --filter @morpho-org/market-making-bot run start -- bootstrap --monitor # Stream full safe diagnostics and emit publication/cancellation hashes as soon as submitted. -bun run --filter @morpho-org/market-making-bot start -- bootstrap --monitor --verbose +pnpm --filter @morpho-org/market-making-bot run start -- bootstrap --monitor --verbose # Exercise the complete monitor and cleanup lifecycle without signing or submitting. -bun run --filter @morpho-org/market-making-bot start -- --readonly bootstrap --monitor +pnpm --filter @morpho-org/market-making-bot run start -- --readonly bootstrap --monitor # Validate and continuously render ladder decisions without loading a private key or submitting. -bun run --filter @morpho-org/market-making-bot start -- ladder --monitor --verbose --readonly +pnpm --filter @morpho-org/market-making-bot run start -- ladder --monitor --verbose --readonly # Sign, broadcast, and confirm one ladder reconciliation cycle. -bun run --filter @morpho-org/market-making-bot start -- ladder +pnpm --filter @morpho-org/market-making-bot run start -- ladder # Continuously reconcile the live ladder and remove owned offers on SIGINT/SIGTERM. -bun run --filter @morpho-org/market-making-bot start -- ladder --monitor --verbose +pnpm --filter @morpho-org/market-making-bot run start -- ladder --monitor --verbose # Run setup checks, bootstrap, and ladder monitoring together until SIGINT/SIGTERM. -bun run --filter @morpho-org/market-making-bot start -- start --verbose +pnpm --filter @morpho-org/market-making-bot run start -- start --verbose # Exercise the same combined lifecycle without signing or submitting transactions. -bun run --filter @morpho-org/market-making-bot start -- --readonly start --verbose +pnpm --filter @morpho-org/market-making-bot run start -- --readonly start --verbose # Cancel every active offer group for the configured maker. -bun run --filter @morpho-org/market-making-bot start -- invalidate +pnpm --filter @morpho-org/market-making-bot run start -- invalidate # Cancel one explicit offer group, even when it has not been indexed by the API. -bun run --filter @morpho-org/market-making-bot start -- invalidate 0x<64-hex-characters> +pnpm --filter @morpho-org/market-making-bot run start -- invalidate 0x<64-hex-characters> # Preview the active groups that maker-wide invalidation would cancel. -bun run --filter @morpho-org/market-making-bot start -- invalidate --readonly +pnpm --filter @morpho-org/market-making-bot run start -- invalidate --readonly ``` Success exits zero and writes human-readable output to standard output. Add the root `--json` flag for @@ -235,13 +235,13 @@ Run the exact read-only monitor command first to inspect whether current cash/cr produces a lower side, a higher side, or both: ```sh -bun run --filter @morpho-org/market-making-bot start -- ladder --monitor --verbose --readonly +pnpm --filter @morpho-org/market-making-bot run start -- ladder --monitor --verbose --readonly ``` Version output remains available: ```sh -bun run --filter @morpho-org/market-making-bot start -- --version +pnpm --filter @morpho-org/market-making-bot run start -- --version ``` ## Deploy @@ -318,13 +318,13 @@ example filename. ```sh # Explicit file; relative paths resolve from the invocation working directory. -bun run --filter @morpho-org/market-making-bot start -- --config ./market-making.yml setup-check +pnpm --filter @morpho-org/market-making-bot run start -- --config ./market-making.yml setup-check # Default discovery in the current working directory. -bun run --filter @morpho-org/market-making-bot start -- setup-check +pnpm --filter @morpho-org/market-making-bot run start -- setup-check # Address-only mode works with either configuration source. -bun run --filter @morpho-org/market-making-bot start -- --readonly setup-check +pnpm --filter @morpho-org/market-making-bot run start -- --readonly setup-check ``` ### Environment variables diff --git a/bots/market-making/docs/architecture.md b/bots/market-making/docs/architecture.md index dfabe178..4b0c8e95 100644 --- a/bots/market-making/docs/architecture.md +++ b/bots/market-making/docs/architecture.md @@ -150,9 +150,9 @@ Run package-focused checks with: ```sh bun test bots/market-making/test -bun run --filter @morpho-org/market-making-bot test:e2e -bun run --filter @morpho-org/market-making-bot typecheck -bun run --filter @morpho-org/market-making-bot jsdoc:build +pnpm --filter @morpho-org/market-making-bot run test:e2e +pnpm --filter @morpho-org/market-making-bot run typecheck +pnpm --filter @morpho-org/market-making-bot run jsdoc:build ``` Before committing or when performing full validation, follow the repository-level validation suite diff --git a/bots/market-making/package.json b/bots/market-making/package.json index b2ef1433..b2f9a03e 100644 --- a/bots/market-making/package.json +++ b/bots/market-making/package.json @@ -20,7 +20,7 @@ "test:e2e": "bun test test/e2e", "typecheck": "tsc --noEmit", "jsdoc:check": "bun scripts/check-jsdoc.ts", - "jsdoc:build": "bun run jsdoc:check && typedoc --options typedoc.json" + "jsdoc:build": "pnpm run jsdoc:check && typedoc --options typedoc.json" }, "dependencies": { "@aws-sdk/client-kms": "3.1101.0", diff --git a/bots/market-making/scripts/playground-smoke-suite.test.mjs b/bots/market-making/scripts/playground-smoke-suite.test.mjs index 09783211..613cde4b 100644 --- a/bots/market-making/scripts/playground-smoke-suite.test.mjs +++ b/bots/market-making/scripts/playground-smoke-suite.test.mjs @@ -126,7 +126,7 @@ test('the declared root lint path effectively checks only the playground smoke m 'oxlint --config bots/market-making/scripts/playground-smoke.oxlintrc.json bots/market-making/scripts/playground-smoke*.mjs' ) assert.match(rootPackage.scripts.lint, /bun run lint:playground-smoke/) - assert.match(workflow, /- name: Run lint\n run: bun lint/) + assert.match(workflow, /- name: Run lint\n run: pnpm lint/) }) test('the scoped playground smoke lint config accepts clean source and rejects an injected unused import', async () => { diff --git a/bots/midnight-crossed-books/Dockerfile b/bots/midnight-crossed-books/Dockerfile index 3fe01072..bf0bce41 100644 --- a/bots/midnight-crossed-books/Dockerfile +++ b/bots/midnight-crossed-books/Dockerfile @@ -1,9 +1,33 @@ # syntax=docker/dockerfile:1 -FROM oven/bun:1.3.12-slim +# pnpm-workspace image for the midnight-crossed-books bot. The build context MUST be the repo root so +# the workspace packages (packages/*) resolve — docker-compose.yml sets `context: ../..`. +# +# pnpm owns installs, but bun is still the runtime, so this image carries both. The base is Node +# because pnpm is activated through corepack, which the oven/bun images do not provide; bun comes in +# as a single copied binary. Both pnpm and bun must stay on PATH in the FINAL image: `start` fires +# `prestart`, which runs `generate:api` and then `pnpm -r run build` for @repo/contracts' dist/. +FROM node:24.14.1-slim +COPY --from=oven/bun:1.3.12-slim /usr/local/bin/bun /usr/local/bin/bun +ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + +# The container's environment holds a funded EOA key, so nothing here may run as root — the previous +# oven/bun base ended with `USER bun`, and the node images define `node` (uid 1000) but do not switch +# to it. Corepack's pnpm shim lands in /usr/local/bin, which only root may write, so enable it before +# dropping privileges; every layer after `USER node` is unprivileged. +RUN corepack enable pnpm +RUN mkdir -p /repo && chown node:node /repo WORKDIR /repo -COPY package.json bun.lock bunfig.toml ./ -COPY packages ./packages -COPY bots ./bots -RUN bun install --frozen-lockfile +USER node + +# Manifests first, so the install layer is cached. `corepack install` pre-fetches the pnpm version +# pinned in package.json#packageManager, so no download happens at container start. +COPY --chown=node:node package.json pnpm-workspace.yaml pnpm-lock.yaml bunfig.toml ./ +RUN corepack install + +# All members' package.json are needed for pnpm to resolve the `workspace:*` links. +COPY --chown=node:node packages ./packages +COPY --chown=node:node bots ./bots +RUN pnpm install --frozen-lockfile + WORKDIR /repo/bots/midnight-crossed-books CMD ["bun", "run", "start"] diff --git a/bots/midnight-crossed-books/README.md b/bots/midnight-crossed-books/README.md index 2fb2773f..d0253a12 100644 --- a/bots/midnight-crossed-books/README.md +++ b/bots/midnight-crossed-books/README.md @@ -27,9 +27,9 @@ The upstream schemas are checked in so builds never depend on network access: Regenerate types after updating either schema: ```sh -bun run --filter @morpho-org/midnight-crossed-books generate:api -bun format -bun run --filter @morpho-org/midnight-crossed-books typecheck +pnpm --filter @morpho-org/midnight-crossed-books run generate:api +pnpm format +pnpm --filter @morpho-org/midnight-crossed-books run typecheck ``` The generated files live under each infrastructure adapter's `generated/` directory and are not edited by hand. @@ -52,14 +52,14 @@ The generated files live under each infrastructure adapter's `generated/` direct ```sh RPC_URL=https://… DEPLOYER_PRIVATE_KEY=0x… \ MIDNIGHT_ADDRESS=0xAdedD8ab6dE832766Fedf0FaC4992E5C4D3EA18A \ -bun run --filter @repo/contracts deploy:crossed-books-resolver +pnpm --filter @repo/contracts run deploy:crossed-books-resolver ``` ## Run ```sh CHAIN_ID=8453 RPC_URL=https://… RESOLVER_PRIVATE_KEY=0x… \ -bun run --filter @morpho-org/midnight-crossed-books start +pnpm --filter @morpho-org/midnight-crossed-books run start ``` The signer policy pins chain, resolver, `resolve` selector, zero ETH value, calldata, gas, and fee ceilings. The pending queue manages nonces and replacement. Every transaction is simulated byte-for-byte before submission. @@ -72,7 +72,7 @@ Railway: ```sh RAILWAY_PROJECT_ID=… RAILWAY_ENVIRONMENT=staging \ RPC_URL=https://… RESOLVER_PRIVATE_KEY=0x… \ -bun run --filter @morpho-org/midnight-crossed-books deploy:railway +pnpm --filter @morpho-org/midnight-crossed-books run deploy:railway ``` CI subsequently runs the same command with `DEPLOY_ONLY=true`, so GitHub holds only a diff --git a/bots/midnight-crossed-books/package.json b/bots/midnight-crossed-books/package.json index d296814f..d9d47745 100644 --- a/bots/midnight-crossed-books/package.json +++ b/bots/midnight-crossed-books/package.json @@ -5,9 +5,9 @@ "license": "Apache-2.0", "type": "module", "scripts": { - "prestart": "bun run generate:api && bun run --parallel --workspaces --if-present build", + "prestart": "pnpm run generate:api && pnpm -r --parallel --if-present run build", "start": "bun src/index.ts", - "typecheck": "bun run generate:api && tsc --noEmit", + "typecheck": "pnpm run generate:api && tsc --noEmit", "deploy:railway": "bun run scripts/deploy-railway.ts", "generate:api": "openapi-typescript morpho-api.json -o src/infrastructure/morpho-api/generated/morpho-api.types.ts && openapi-typescript router-api.json -o src/infrastructure/router-api/generated/router-api.types.ts" }, diff --git a/bots/midnight-crossed-books/src/bootstrap.ts b/bots/midnight-crossed-books/src/bootstrap.ts index 60eb26bc..017579d3 100644 --- a/bots/midnight-crossed-books/src/bootstrap.ts +++ b/bots/midnight-crossed-books/src/bootstrap.ts @@ -64,7 +64,7 @@ export async function createApplication(environment: Record=16.8", "react-dom": ">=16.8" } }, "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww=="], - - "@tanstack/store": ["@tanstack/store@0.7.7", "", {}, "sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ=="], - - "@tanstack/table-core": ["@tanstack/table-core@8.21.3", "", {}, "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg=="], - - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - - "@types/bun": ["@types/bun@1.3.13", "", { "dependencies": { "bun-types": "1.3.13" } }, "sha512-9fqXWk5YIHGGnUau9TEi+qdlTYDAnOj+xLCmSTwXfAIqXr2x4tytJb43E9uCvt09zJURKXwAtkoH4nLQfzeTXw=="], - - "@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], - - "@types/lodash": ["@types/lodash@4.17.24", "", {}, "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ=="], - - "@types/lodash-es": ["@types/lodash-es@4.17.12", "", { "dependencies": { "@types/lodash": "*" } }, "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ=="], - - "@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="], - - "@types/react": ["@types/react@19.2.18", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w=="], - - "@types/react-dom": ["@types/react-dom@19.2.4", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw=="], - - "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - - "abitype": ["abitype@1.2.3", "", { "peerDependencies": { "typescript": ">=5.0.4", "zod": "^3.22.0 || ^4.0.0" }, "optionalPeers": ["typescript", "zod"] }, "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg=="], - - "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - - "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], - - "ansi-escapes": ["ansi-escapes@7.3.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg=="], - - "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - - "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "asn1js": ["asn1js@3.0.6", "", { "dependencies": { "pvtsutils": "^1.3.6", "pvutils": "^1.1.3", "tslib": "^2.8.1" } }, "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA=="], - - "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], - - "bowser": ["bowser@2.14.1", "", {}, "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="], - - "brace-expansion": ["brace-expansion@5.0.8", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg=="], - - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - - "bun-types": ["bun-types@1.3.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA=="], - - "change-case": ["change-case@5.4.4", "", {}, "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w=="], - - "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], - - "cli-truncate": ["cli-truncate@5.2.0", "", { "dependencies": { "slice-ansi": "^8.0.0", "string-width": "^8.2.0" } }, "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw=="], - - "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], - - "command-exists": ["command-exists@1.2.9", "", {}, "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="], - - "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], - - "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - - "date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="], - - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - - "decode-formdata": ["decode-formdata@0.9.0", "", {}, "sha512-q5uwOjR3Um5YD+ZWPOF/1sGHVW9A5rCrRwITQChRXlmPkxDFBqCm4jNTIVdGHNH9OnR+V9MoZVgRhsFb+ARbUw=="], - - "devalue": ["devalue@5.9.0", "", {}, "sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A=="], - - "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], - - "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - - "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="], - - "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], - - "ethereum-cryptography": ["ethereum-cryptography@3.2.0", "", { "dependencies": { "@noble/ciphers": "1.3.0", "@noble/curves": "1.9.0", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0" } }, "sha512-Urr5YVsalH+Jo0sYkTkv1MyI9bLYZwW8BENZCeE1QYaTHETEYx0Nv/SVsWkSqpYrzweg6d8KMY1wTjH/1m/BIg=="], - - "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], - - "evm-maths": ["evm-maths@7.0.1", "", {}, "sha512-rMFIq/xfsNpR1JGkXPnLP1iXLBCtVr1N4tErzdEcKJoqREpKOZswCwNSljN/Sf1QZjv+KGCamh4E4FQcVaJekA=="], - - "executooor-viem": ["executooor-viem@1.3.3", "", { "peerDependencies": { "evm-maths": "^7.0.0", "viem": "^2.0.0" } }, "sha512-8npMgRIDerwxeyWonqsTSrw28CIU4EDUz2JSXRz5hEIF6pxNbRls6uS2wR2lf74J2fxAgtF6+Ltin5/bMlFiyw=="], - - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - - "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], - - "fd-package-json": ["fd-package-json@2.0.0", "", { "dependencies": { "walk-up-path": "^4.0.0" } }, "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ=="], - - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - - "follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], - - "formatly": ["formatly@0.3.0", "", { "dependencies": { "fd-package-json": "^2.0.0" }, "bin": { "formatly": "bin/index.mjs" } }, "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w=="], - - "get-east-asian-width": ["get-east-asian-width@1.5.0", "", {}, "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA=="], - - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], - - "index-to-position": ["index-to-position@1.2.0", "", {}, "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw=="], - - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - - "isows": ["isows@1.0.7", "", { "peerDependencies": { "ws": "*" } }, "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg=="], - - "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - - "js-levenshtein": ["js-levenshtein@1.1.6", "", {}, "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g=="], - - "js-md5": ["js-md5@0.8.3", "", {}, "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ=="], - - "js-sha3": ["js-sha3@0.8.0", "", {}, "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="], - - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "js-yaml": ["js-yaml@4.2.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw=="], - - "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - - "knip": ["knip@5.88.1", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.5.2", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "peerDependencies": { "@types/node": ">=18", "typescript": ">=5.0.4 <7" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-tpy5o7zu1MjawVkLPuahymVJekYY3kYjvzcoInhIchgePxTlo+api90tBv2KfhAIe5uXh+mez1tAfmbv8/TiZg=="], - - "linkify-it": ["linkify-it@5.0.2", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q=="], - - "lint-staged": ["lint-staged@16.4.0", "", { "dependencies": { "commander": "^14.0.3", "listr2": "^9.0.5", "picomatch": "^4.0.3", "string-argv": "^0.3.2", "tinyexec": "^1.0.4", "yaml": "^2.8.2" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw=="], - - "listr2": ["listr2@9.0.5", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g=="], - - "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], - - "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], - - "loglayer": ["loglayer@9.3.0", "", { "dependencies": { "@loglayer/context-manager": "2.2.0", "@loglayer/log-level-manager": "2.2.0", "@loglayer/plugin": "3.2.0", "@loglayer/shared": "4.3.0", "@loglayer/transport": "3.2.0" } }, "sha512-xiZFMbUCcy8mC+/uV0EzkZV6nbo3qweQjKKQSGkcrug2VpOHudzcoWR0DOl9edr8oS+BwyEjimpG3sF2CW8sww=="], - - "lunr": ["lunr@2.3.9", "", {}, "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="], - - "markdown-it": ["markdown-it@14.3.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.5.0", "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw=="], - - "mdurl": ["mdurl@2.1.0", "", {}, "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg=="], - - "memorystream": ["memorystream@0.3.1", "", {}, "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw=="], - - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - - "minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="], - - "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - - "onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], - - "openapi-fetch": ["openapi-fetch@0.17.0", "", { "dependencies": { "openapi-typescript-helpers": "^0.1.0" } }, "sha512-PsbZR1wAPcG91eEthKhN+Zn92FMHxv+/faECIwjXdxfTODGSGegYv0sc1Olz+HYPvKOuoXfp+0pA2XVt2cI0Ig=="], - - "openapi-typescript": ["openapi-typescript@7.13.0", "", { "dependencies": { "@redocly/openapi-core": "^1.34.6", "ansi-colors": "^4.1.3", "change-case": "^5.4.4", "parse-json": "^8.3.0", "supports-color": "^10.2.2", "yargs-parser": "^21.1.1" }, "peerDependencies": { "typescript": "^5.x" }, "bin": { "openapi-typescript": "bin/cli.js" } }, "sha512-EFP392gcqXS7ntPvbhBzbF8TyBA+baIYEm791Hy5YkjDYKTnk/Tn5OQeKm5BIZvJihpp8Zzr4hzx0Irde1LNGQ=="], - - "openapi-typescript-helpers": ["openapi-typescript-helpers@0.1.0", "", {}, "sha512-OKTGPthhivLw/fHz6c3OPtg72vi86qaMlqbJuVJ23qOvQ+53uw1n7HdmkJFibloF7QEjDrDkzJiOJuockM/ljw=="], - - "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], - - "ox": ["ox@0.14.15", "", { "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.2.3", "eventemitter3": "5.0.1" }, "peerDependencies": { "typescript": ">=5.4.0" }, "optionalPeers": ["typescript"] }, "sha512-3TubCmbKen/cuZQzX0qDbOS5lojjdSZ90lqKxWIDWd5siuJ0IJBaTXMYs8eMPLcraqnOwGZazz3apHPGiRCkGQ=="], - - "oxc-resolver": ["oxc-resolver@11.19.1", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.19.1", "@oxc-resolver/binding-android-arm64": "11.19.1", "@oxc-resolver/binding-darwin-arm64": "11.19.1", "@oxc-resolver/binding-darwin-x64": "11.19.1", "@oxc-resolver/binding-freebsd-x64": "11.19.1", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.19.1", "@oxc-resolver/binding-linux-arm-musleabihf": "11.19.1", "@oxc-resolver/binding-linux-arm64-gnu": "11.19.1", "@oxc-resolver/binding-linux-arm64-musl": "11.19.1", "@oxc-resolver/binding-linux-ppc64-gnu": "11.19.1", "@oxc-resolver/binding-linux-riscv64-gnu": "11.19.1", "@oxc-resolver/binding-linux-riscv64-musl": "11.19.1", "@oxc-resolver/binding-linux-s390x-gnu": "11.19.1", "@oxc-resolver/binding-linux-x64-gnu": "11.19.1", "@oxc-resolver/binding-linux-x64-musl": "11.19.1", "@oxc-resolver/binding-openharmony-arm64": "11.19.1", "@oxc-resolver/binding-wasm32-wasi": "11.19.1", "@oxc-resolver/binding-win32-arm64-msvc": "11.19.1", "@oxc-resolver/binding-win32-ia32-msvc": "11.19.1", "@oxc-resolver/binding-win32-x64-msvc": "11.19.1" } }, "sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg=="], - - "oxfmt": ["oxfmt@0.36.0", "", { "dependencies": { "tinypool": "2.1.0" }, "optionalDependencies": { "@oxfmt/binding-android-arm-eabi": "0.36.0", "@oxfmt/binding-android-arm64": "0.36.0", "@oxfmt/binding-darwin-arm64": "0.36.0", "@oxfmt/binding-darwin-x64": "0.36.0", "@oxfmt/binding-freebsd-x64": "0.36.0", "@oxfmt/binding-linux-arm-gnueabihf": "0.36.0", "@oxfmt/binding-linux-arm-musleabihf": "0.36.0", "@oxfmt/binding-linux-arm64-gnu": "0.36.0", "@oxfmt/binding-linux-arm64-musl": "0.36.0", "@oxfmt/binding-linux-ppc64-gnu": "0.36.0", "@oxfmt/binding-linux-riscv64-gnu": "0.36.0", "@oxfmt/binding-linux-riscv64-musl": "0.36.0", "@oxfmt/binding-linux-s390x-gnu": "0.36.0", "@oxfmt/binding-linux-x64-gnu": "0.36.0", "@oxfmt/binding-linux-x64-musl": "0.36.0", "@oxfmt/binding-openharmony-arm64": "0.36.0", "@oxfmt/binding-win32-arm64-msvc": "0.36.0", "@oxfmt/binding-win32-ia32-msvc": "0.36.0", "@oxfmt/binding-win32-x64-msvc": "0.36.0" }, "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-/ejJ+KoSW6J9bcNT9a9UtJSJNWhJ3yOLSBLbkoFHJs/8CZjmaZVZAJe4YgO1KMJlKpNQasrn/G9JQUEZI3p0EQ=="], - - "oxlint": ["oxlint@1.61.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.61.0", "@oxlint/binding-android-arm64": "1.61.0", "@oxlint/binding-darwin-arm64": "1.61.0", "@oxlint/binding-darwin-x64": "1.61.0", "@oxlint/binding-freebsd-x64": "1.61.0", "@oxlint/binding-linux-arm-gnueabihf": "1.61.0", "@oxlint/binding-linux-arm-musleabihf": "1.61.0", "@oxlint/binding-linux-arm64-gnu": "1.61.0", "@oxlint/binding-linux-arm64-musl": "1.61.0", "@oxlint/binding-linux-ppc64-gnu": "1.61.0", "@oxlint/binding-linux-riscv64-gnu": "1.61.0", "@oxlint/binding-linux-riscv64-musl": "1.61.0", "@oxlint/binding-linux-s390x-gnu": "1.61.0", "@oxlint/binding-linux-x64-gnu": "1.61.0", "@oxlint/binding-linux-x64-musl": "1.61.0", "@oxlint/binding-openharmony-arm64": "1.61.0", "@oxlint/binding-win32-arm64-msvc": "1.61.0", "@oxlint/binding-win32-ia32-msvc": "1.61.0", "@oxlint/binding-win32-x64-msvc": "1.61.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.18.0" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-ZC0ALuhDZ6ivOFG+sy0D0pEDN49EvsId98zVlmYdkcXHsEM14m/qTNUEsUpiFiCVbpIxYtVBmmLE87nsbUHohQ=="], - - "oxlint-tsgolint": ["oxlint-tsgolint@0.22.1", "", { "optionalDependencies": { "@oxlint-tsgolint/darwin-arm64": "0.22.1", "@oxlint-tsgolint/darwin-x64": "0.22.1", "@oxlint-tsgolint/linux-arm64": "0.22.1", "@oxlint-tsgolint/linux-x64": "0.22.1", "@oxlint-tsgolint/win32-arm64": "0.22.1", "@oxlint-tsgolint/win32-x64": "0.22.1" }, "bin": { "tsgolint": "bin/tsgolint.js" } }, "sha512-YUSGSLUnoolsu8gxISEDio3q1rtsCozwfOzASUn3DT2mR2EeQ93uEEnen7s+6LpF+lyTQFln1pQfqwBh/fsVEg=="], - - "parse-json": ["parse-json@8.3.0", "", { "dependencies": { "@babel/code-frame": "^7.26.2", "index-to-position": "^1.1.0", "type-fest": "^4.39.1" } }, "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ=="], - - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - - "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], - - "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="], - - "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="], - - "pvtsutils": ["pvtsutils@1.3.6", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg=="], - - "pvutils": ["pvutils@1.1.5", "", {}, "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA=="], - - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - - "react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - - "react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], - - "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - - "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], - - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - - "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], - - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - - "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - - "semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], - - "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - - "slice-ansi": ["slice-ansi@8.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "is-fullwidth-code-point": "^5.1.0" } }, "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg=="], - - "smol-toml": ["smol-toml@1.6.1", "", {}, "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg=="], - - "solc": ["solc@0.8.35", "", { "dependencies": { "command-exists": "^1.2.8", "commander": "^8.1.0", "follow-redirects": "^1.12.1", "js-sha3": "0.8.0", "memorystream": "^0.3.1", "semver": "^5.5.0", "tmp": "0.0.33" }, "bin": { "solcjs": "solc.js" } }, "sha512-OaP/4zyoKRo2CjqZDxbtkeRlEo6MxP4FLCxntw1Agf9OSoecmwYKoFBSB34UcSKBFBucrTh3Mb0nRoJou62ibw=="], - - "soltag": ["soltag@0.0.17", "", { "dependencies": { "unplugin": "^3.0.0" }, "peerDependencies": { "solc": "^0.8.0", "typescript": ">=5.0", "viem": "^2.0.0" }, "optionalPeers": ["typescript"], "bin": { "soltag": "dist/cli.js" } }, "sha512-CX7kxblz4O4cac/610lascNMIgakgXIBJNBecVxBPgeaa2l97YV5uHP1kdLzR1dI3BL8dr3BeEykY+RiX6ZgEg=="], - - "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], - - "string-width": ["string-width@8.2.1", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA=="], - - "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - - "strip-json-comments": ["strip-json-comments@5.0.3", "", {}, "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw=="], - - "supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], - - "tinyexec": ["tinyexec@1.1.1", "", {}, "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg=="], - - "tinypool": ["tinypool@2.1.0", "", {}, "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw=="], - - "tmp": ["tmp@0.0.33", "", { "dependencies": { "os-tmpdir": "~1.0.2" } }, "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="], - - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - - "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], - - "typedoc": ["typedoc@0.28.20", "", { "dependencies": { "@gerrit0/mini-shiki": "^3.23.0", "lunr": "^2.3.9", "markdown-it": "^14.3.0", "minimatch": "^10.2.5", "yaml": "^2.9.0" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-uSKqkh8Cr48vllnEy+jdaAgOeR6Y+QCBW7usgUsKj7gJEfR7stw9U/fE49LBnj2tPRKPY0c0EBJSWe9Appmplg=="], - - "typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="], - - "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], - - "unbash": ["unbash@2.2.0", "", {}, "sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w=="], - - "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="], - - "unplugin": ["unplugin@3.0.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg=="], - - "uri-js-replace": ["uri-js-replace@1.0.1", "", {}, "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g=="], - - "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], - - "uuid": ["uuid@11.1.1", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ=="], - - "valibot": ["valibot@1.4.1", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-klCmFTz2jeDluy9RwX+F884TCiogtdBJ/YaxSx1EOBYXa3NXNWj8kR1jjN8rzluwojJVWWaHJ4r1U5LfICnM3g=="], - - "viem": ["viem@2.47.17", "", { "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", "@scure/bip32": "1.7.0", "@scure/bip39": "1.6.0", "abitype": "1.2.3", "isows": "1.0.7", "ox": "0.14.15", "ws": "8.18.3" }, "peerDependencies": { "typescript": ">=5.0.4" }, "optionalPeers": ["typescript"] }, "sha512-yNUKw6b1nd1i96GcJPqp096w5VVjUky/6PLT8UeUsEArzhD9YRrC0QJ50o8YEF7xA6M0FK8e6u5tAMyBLLl7tw=="], - - "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], - - "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], - - "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], - - "ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], - - "yaml": ["yaml@2.8.3", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg=="], - - "yaml-ast-parser": ["yaml-ast-parser@0.0.43", "", {}, "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A=="], - - "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - - "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - - "@ethereumjs/util/@noble/curves": ["@noble/curves@2.2.0", "", { "dependencies": { "@noble/hashes": "2.2.0" } }, "sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ=="], - - "@ethereumjs/util/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - - "@morpho-org/blue-sdk/@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - - "@morpho-org/morpho-sdk/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - - "@redocly/openapi-core/colorette": ["colorette@1.4.0", "", {}, "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="], - - "@redocly/openapi-core/minimatch": ["minimatch@5.1.9", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw=="], - - "ethereum-cryptography/@noble/curves": ["@noble/curves@1.9.0", "", { "dependencies": { "@noble/hashes": "1.8.0" } }, "sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg=="], - - "knip/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - - "log-update/slice-ansi": ["slice-ansi@7.1.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w=="], - - "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], - - "ox/eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="], - - "solc/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], - - "typedoc/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], - - "wrap-ansi/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - - "@redocly/openapi-core/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], - - "@redocly/openapi-core/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - } -} diff --git a/bunfig.toml b/bunfig.toml index 8114b12d..d7a00e63 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -1,5 +1,4 @@ -[install] -minimumReleaseAge = 259200 +# bun remains the runtime + test runner; pnpm owns installs (see pnpm-workspace.yaml). # Compile the liquidation bots' soltag `sol``` lens templates during `bun test` (each plugin # self-scopes to its own bot's files, so both can be preloaded — other workspaces are untouched). diff --git a/docs/decisions/TIB-2026-07-20-migrate-to-pnpm.md b/docs/decisions/TIB-2026-07-20-migrate-to-pnpm.md new file mode 100644 index 00000000..df94597f --- /dev/null +++ b/docs/decisions/TIB-2026-07-20-migrate-to-pnpm.md @@ -0,0 +1,235 @@ +# TIB-2026-07-20: Migrate to pnpm and remove bun from the toolchain + +| Field | Value | +| ---------- | ---------- | +| **Status** | Proposed | +| **Date** | 2026-07-20 | +| **Author** | @cashd | +| **Scope** | Repo-wide | + +--- + +## Context + +A recent npm supply-chain attack prompted a team-wide decision (Slack, `#curators`, 2026-07-17) to +standardize package management on pnpm across repos. The deciding property is pnpm's +"no by default" policy on dependency lifecycle scripts (pnpm v11 `strictDepBuilds`): a compromised +transitive dependency cannot run arbitrary code at install time unless explicitly allowed. bun has +no equivalent default-deny posture. The migration began as a package-manager swap with bun retained +as runtime and test runner, but the split toolchain (pnpm installs, bun everything else) left the +bun binary in every image and CI job for marginal benefit — so the scope expanded, in the same +branch, to remove bun entirely. The `morpho-apps` monorepo already runs pnpm + vitest, so mirroring +it also removes cross-repo tooling divergence. + +## Goals / Non-Goals + +**Goals** + +- Move installs, workspace resolution, the version catalog, and script running to **pnpm 11.1.1**, + mirroring the `morpho-apps` setup. +- Default-deny dependency lifecycle scripts and carry over the existing install-hardening posture + (minimum release age, exact saves, store integrity). +- Remove bun entirely: tests run on **vitest**, production bots run bundled JS on **Node**, and no + image or CI job carries the bun binary. +- Keep CI, Dockerfiles, and deploy flows producing the same artifacts and behavior. + +**Non-Goals** + +- Upgrading dependencies as part of the migration (beyond what the toolchain swap itself requires). + Versions are pinned to what the old `bun.lock` resolved; bumps are separate, deliberate changes. +- Changing bot behavior, architecture, or the soltag `sol\`\`` authoring pattern — only how it is + transformed at build/test time changes. + +## Current Solution + +bun 1.3.12 was package manager, workspace resolver, task runner, test runner, and runtime: +`bun install` against `bun.lock`, the version catalog in `package.json#workspaces.catalog`, +install hardening (`minimumReleaseAge` 259200 s etc.) in `bunfig.toml`, `bun test` with soltag +transform preloads (`bunfig.toml` `[test]`/`preload`), automatic `.env` loading, and bots running +TypeScript directly via `bun src/index.ts` from `oven/bun` base images. bun runs dependency +lifecycle scripts by default. + +## Proposed Solution + +Adopt pnpm 11.1.1 (pinned via `package.json#packageManager`, activated through corepack) for +everything install- and workspace-shaped, and replace bun's remaining roles with vitest (tests), +esbuild (bundling), and Node (runtime): + +### Package management + +- **Workspace + catalog**: the version catalog moves from `package.json#workspaces.catalog` to + `pnpm-workspace.yaml`, alongside install hardening: `engineStrict`, `saveExact`, + `verifyStoreIntegrity`, `preferOffline`, `minimumReleaseAge: 4320` minutes (carried over from + bunfig's 259200 s), `minimumReleaseAgeExclude: @morpho-org/*`, and `allowBuilds` opting in + **esbuild only** — the sole dependency that needs a lifecycle script; any future allowance is a + deliberate, reviewable addition. +- **Lockfile**: `bun.lock` deleted; `pnpm-lock.yaml` generated. `bunfig.toml` deleted. +- **Pinned oxlint**: `oxlint` is pinned to `1.61.0` in the catalog — the version the old + `bun.lock` had resolved. Fresh resolution of `^1.46.0` pulled `1.74.0`, which introduced new + lint failures and requires `oxlint-tsgolint >= 0.24`; both get bumped together deliberately + later. +- **Script idiom**: `bun run --filter X cmd` becomes `pnpm --filter X run cmd` across package + scripts, docs, and agent commands. + +### Tests: `bun:test` → vitest 4.1.2 + +- All 79 test files move from `bun:test` to vitest — a drop-in for `describe`/`it`/`expect`, with + mechanical renames: `mock()` → `vi.fn()`, `spyOn` → `vi.spyOn`, + `mock.restore()` → `vi.restoreAllMocks()`. +- The bun test preloads for the soltag `sol\`\``transform are deleted; tests use soltag's`/vite`adapter in per-bot`vitest.config.ts`, and a root `vitest.config.ts` lists the five test-bearing + workspace projects. +- bun auto-loaded `.env` files; the fork suite's env (`RPC_URL_8453` from `.env.test.local`) now + loads explicitly via vite's `loadEnv` in the bot config. +- The port surfaced one real bug class: `expect(...).rejects` assertions were floating promises + under bun's typings — 9 sites are now `await`ed, caught by oxlint's `no-floating-promises` once + vitest's typings applied. + +### Runtime: direct TS execution → esbuild bundle + Node + +- Bots no longer run TypeScript directly. Each bot gains `scripts/build.ts` — an esbuild bundle + with the soltag esbuild `onLoad` transform, the same pattern `@repo/contracts` already used — + producing `dist/`; production is plain `node dist/src/index.js`. +- Operator scripts that import `sol\`\`` sources (`probe-live-lens`, +`seed-liquidatable-positions`) are bundled as extra entrypoints and run from `dist/`; pure-CLI + scripts run via tsx. +- `@repo/contracts` `scripts/build.ts` moves from `Bun.build` to esbuild with the same plugin. +- **Bun API shims**: `Bun.env` → `process.env` (42 sites); `Bun.spawn`/`Bun.sleep` in fork + harnesses → `node:child_process` `spawn` + `node:timers/promises`; bun's `$` shell in + `deploy-railway` scripts → execa's `$` (quiet + throw by default; stdin secrets via + `$({ input })`); bun's global `confirm()` → a `node:readline/promises` prompt; + `import.meta.dir` → `dirname(fileURLToPath(import.meta.url))`. + +### Dependencies, Docker, CI + +- **Deps**: +vitest 4.1.2, +vite 7.3.6, +tsx 4.21.0, +esbuild 0.28.1, +execa 9.6.0, + +@types/node 24.7.0; −@types/bun. tsconfig `types` changes `["bun"]` → `["node"]`. +- **Docker**: bot images build from `node:24.14.1-slim` only — no bun binary. All dists are built + at image build (`pnpm -r --if-present run build`) and `CMD` is `node dist/src/index.js`; no + runtime transform or container-start build. +- **CI**: the setup action becomes `pnpm/action-setup` (version read from `packageManager`) + + `setup-node`, installing with `pnpm install --frozen-lockfile`; `setup-bun` is removed and unit + tests run `pnpm test`. + +## Considered Alternatives + +### Alternative 1: Stay on bun and mitigate lifecycle-script risk manually + +bun 1.3.x has no default-deny lifecycle-script mechanism, so mitigation would rest on release-age +delay alone. + +**Why rejected:** Leaves the install-time code-execution vector open, and diverges from the +team-wide standard decided in `#curators`. + +### Alternative 2: pnpm for installs, bun retained as runtime + test runner + +The migration's original scope: pnpm covers the install-time attack surface while `bun test`, +`bun src/index.ts`, and the soltag preloads stay untouched. + +**Why rejected:** A split toolchain keeps the bun binary in every image and CI job, keeps +`bunfig.toml` alive solely for test preloads, and diverges from `morpho-apps`' vitest stack. The +bun-only surfaces (test API, `Bun.*` APIs, direct TS execution) all had straightforward Node +equivalents, so removing bun completes the single-toolchain decision at modest porting cost. + +## Assumptions & Constraints + +- pnpm's `allowBuilds` stays minimal (esbuild only); any addition must be an explicit, reviewed + entry. +- The oxlint pin at `1.61.0` is temporary; the coordinated `oxlint` + `oxlint-tsgolint` bump is a + known follow-up. +- Docker images and `.nvmrc` stay in sync on Node 24.14.1. +- soltag's `/vite` adapter and its esbuild `onLoad` transform produce equivalent output — the fork + suite and bundled operator scripts exercise this. + +## Security + +This migration is itself a security measure: pnpm v11's default-deny on dependency lifecycle +scripts (`strictDepBuilds` + a one-entry `allowBuilds` for esbuild) closes the install-time +arbitrary-code vector exploited in the recent npm supply-chain attack. `minimumReleaseAge` +(4320 min, excluding `@morpho-org/*`) adds a publication-delay buffer against freshly compromised +releases, and `verifyStoreIntegrity` + `saveExact` harden resolution. Removing bun entirely also +shrinks the shipped image surface to a single runtime (Node) with no second toolchain to patch. + +## Future Considerations + +- Bump `oxlint` to 1.74.x together with `oxlint-tsgolint >= 0.24` and fix the new lint findings. + +## Addendum A (2026-08-05) — landing the migration against a grown repo + +The decision is unchanged. This records how it is applied, since the original branch sat unmerged +for two weeks and the repo moved ~190 commits underneath it. + +**Landed as two PRs, not one.** PR 1 does the package-manager swap only, leaving bun as runtime and +test runner, so it touches no test file and closes the install-time vector on its own. PR 2 removes +bun. This mirrors the original branch's own commit split. + +**Four workspaces did not exist when this TIB was drafted**: `bots/market-making`, +`bots/midnight-crossed-books`, `bots/kill-switch`, and `@repo/{offers,monitoring,logging,observability}`. +Test files grew 79 -> 136 and `Bun.env` sites 42 -> 59. PR 2 must also port bun surfaces the original +branch never encountered: `Bun.serve`, `Bun.which`, `Bun.file`, `Bun.argv`, `import.meta.main`, and +`import type { Subprocess | Server } from 'bun'`. + +**`strictDepBuilds: true` was missing from the original `pnpm-workspace.yaml`.** Without it an +un-opted-in lifecycle script is a warning, not an install failure — which would have left the +deciding security property of this TIB advisory only. It is now set explicitly. + +**`allowBuilds` starts empty, not `{esbuild: true}`.** Evidence: no package in the current dependency +tree declares `preinstall`, `install`, or `postinstall`, and `esbuild` is absent from the tree +entirely. esbuild becomes the first and only entry in PR 2, where it is introduced. + +**`enablePrePostScripts: true` is required and was never mentioned.** pnpm does not run npm-style +pre/post scripts by default. `prestart` is load-bearing: it builds `@repo/contracts`' gitignored +`dist/` for the liquidators and runs `generate:api` for `midnight-crossed-books`. Without this +setting the bots cannot resolve their own workspace dependency at container start. + +**PR 1's Docker intermediate state uses a Node base with a copied bun binary.** Keeping +`FROM oven/bun` was not viable: pnpm is activated through corepack, which those images do not +provide, and `bun install --frozen-lockfile` is not a fallback once `bun.lock` is deleted. Both pnpm +and bun must remain on PATH in the _final_ image for PR 1, because `start` fires `prestart`, which +shells out to pnpm. PR 2 drops the bun binary and switches `CMD` to `node dist/src/index.js`. + +**Catalog entries are pinned to what `bun.lock` had resolved.** Regenerating the lockfile re-resolves +every caret range, which contradicts this TIB's non-goal of riding dependency upgrades along. +`@internationalized/date`, `@types/bun`, `date-fns`, and — most importantly — `solc` all drifted +upward and are now pinned exactly. `solc` matters beyond parity: it determines the compiled bytecode +of the soltag `sol```lens templates and the Executor, so a silent bump would invalidate the recorded +explorer-verification settings (0.8.35, optimizer runs=200). Remaining drift is confined to +dev-tooling transitives within their declared ranges; the only runtime-reachable one is `valibot`1.4.1 -> 1.4.2 (patch, via`@morpho-org/viem-dlc`). + +**pnpm settings live in `pnpm-workspace.yaml`, not `.npmrc`.** The tracked `.npmrc` stays empty so +configuration does not drift across two files. + +**CI stays on `pnpm/action-setup`, blocked from its successor by the org allowlist.** Upstream now +scopes `action-setup` to pnpm v10 and older and points v11+ at `pnpm/setup`; `packageManager` pins +`pnpm@11.1.1`. The successor is the better fit on this TIB's own terms — v2 downloads pnpm's +self-contained release binary and verifies it against the SHA-256 digest GitHub publishes for the +asset, where `action-setup` bootstraps through an `npm ci` of `@pnpm/exe`, and removing an +npm-registry artifact from the path that installs the package manager is exactly the threat model +here. It cannot be adopted yet: `morpho-org`'s Actions allowlist permits `pnpm/action-setup@*` and +not `pnpm/setup@*`, so switching fails every job at the Setup step. `action-setup` installs pnpm +11.1.1 correctly in the meantime, and CI is green on it. **Follow-up:** have an org admin add +`pnpm/setup@*` to the allowlist, then switch. + +**The images must not run as root.** `oven/bun` ends with `USER bun`, so the pre-migration images ran +every layer and the bot process unprivileged. The official `node` images define a `node` user (uid 1000) but do not switch to it, so the base swap would silently have promoted a process holding a +funded EOA key to root. Each Dockerfile now runs `corepack enable` as root — its shim lands in +`/usr/local/bin` — then `chown`s `/repo`, drops to `USER node`, and does every install, build, and +`CMD` from there. + +**`Bun.env` -> `process.env` retires a documented convention** (`docs/CONVENTIONS.md`), so that edit +lands in PR 2 alongside the code change rather than ahead of it. + +## References + +- Slack `#curators` decision thread, 2026-07-17 — team-wide pnpm standardization. +- `morpho-apps` monorepo — the pnpm + vitest setup this mirrors. +- [TIB-2026-04-16-bootstrap-curator-bots](./TIB-2026-04-16-bootstrap-curator-bots.md) — the + original bun-first tooling stack this amends. + + diff --git a/package.json b/package.json index 1e122b0f..d2411dc7 100644 --- a/package.json +++ b/package.json @@ -1,46 +1,8 @@ { "name": "@morpho-org/morpho-bots", "private": true, - "workspaces": { - "packages": [ - "bots/*", - "packages/*" - ], - "catalog": { - "@internationalized/date": "^3.11.0", - "@tanstack/react-form": "1.20.0", - "@tanstack/react-table": "8.21.3", - "@morpho-org/midnight-sdk": "1.3.0", - "@morpho-org/morpho-ts": "2.8.0", - "@morpho-org/viem-dlc": "0.0.11", - "@types/bun": "^1.3.0", - "@types/lodash-es": "^4.17.12", - "@types/react": "19.2.18", - "@types/react-dom": "19.2.4", - "date-fns": "^4.1.0", - "executooor-viem": "^1.3.3", - "husky": "^9.1.5", - "knip": "^5.86.0", - "lint-staged": "^16.1.2", - "lodash-es": "^4.18.0", - "loglayer": "9.3.0", - "@loglayer/transport-betterstack": "2.2.0", - "openapi-fetch": "0.17.0", - "openapi-typescript": "^7.13.0", - "react": "19.2.8", - "react-dom": "19.2.8", - "oxfmt": "^0.36.0", - "oxlint": "^1.46.0", - "oxlint-tsgolint": "^0.22.1", - "solc": "^0.8.35", - "soltag": "^0.0.17", - "typescript": "6.0.2", - "viem": "2.47.17", - "zod": "3.25.76" - } - }, "scripts": { - "build": "bun run --filter @repo/contracts build", + "build": "pnpm --filter @repo/contracts run build", "format": "oxfmt", "format:check": "oxfmt --check", "knip": "knip", @@ -66,5 +28,5 @@ "engines": { "node": "^24.14.1" }, - "packageManager": "bun@1.3.12" + "packageManager": "pnpm@11.1.1" } diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 6bf07657..3ac49b31 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -13,11 +13,11 @@ "scripts": { "generate": "bun run scripts/codegen.ts && oxfmt src/abis.ts src/contracts.ts", "build": "soltag && bun run scripts/build.ts && tsc -p tsconfig.build.json --emitDeclarationOnly", - "deploy:executor": "bun run build && bun run scripts/deploy-executor.ts", + "deploy:executor": "pnpm run build && bun run scripts/deploy-executor.ts", "typecheck": "soltag && tsc --noEmit", "format:sol": "forge fmt", "format:sol:check": "forge fmt --check", - "deploy:crossed-books-resolver": "bun run build && bun run scripts/deploy-crossed-books-resolver.ts" + "deploy:crossed-books-resolver": "pnpm run build && bun run scripts/deploy-crossed-books-resolver.ts" }, "devDependencies": { "@repo/typescript-config": "workspace:*", diff --git a/packages/contracts/scripts/codegen.ts b/packages/contracts/scripts/codegen.ts index 961e030b..25461c73 100644 --- a/packages/contracts/scripts/codegen.ts +++ b/packages/contracts/scripts/codegen.ts @@ -7,7 +7,7 @@ * Interfaces export only `.abi` (they have no bytecode). Top-level contracts export the WHOLE * soltag object (abi + bytecode + deployless factory), since a caller may want more than the ABI. * - * Run via `bun run --filter @repo/contracts generate` after adding/renaming/removing a `.sol` file. + * Run via `pnpm --filter @repo/contracts run generate` after adding/renaming/removing a `.sol` file. * The output is checked in — we don't run codegen on every build. */ import { readdirSync, writeFileSync } from 'node:fs' @@ -21,7 +21,7 @@ const INTERFACES_DIR = resolve(SOLIDITY_DIR, 'interfaces') /** Renders a generated `src/*.ts` module (header + soltag import + body). */ function render(sourceGlob: string, body: string): string { return `// AUTO-GENERATED by scripts/codegen.ts from solidity/${sourceGlob}. -// Run \`bun run --filter @repo/contracts generate\` after adding, renaming, or removing a .sol file. +// Run \`pnpm --filter @repo/contracts run generate\` after adding, renaming, or removing a .sol file. // Do not edit by hand — your changes will be overwritten. import { sol, solFile } from 'soltag' diff --git a/packages/contracts/scripts/deploy-executor.ts b/packages/contracts/scripts/deploy-executor.ts index 0c4545bd..5bba2475 100644 --- a/packages/contracts/scripts/deploy-executor.ts +++ b/packages/contracts/scripts/deploy-executor.ts @@ -7,7 +7,7 @@ * * Run once per chain: * - * RPC_URL=… DEPLOYER_PRIVATE_KEY=… bun run --filter @repo/contracts deploy:executor + * RPC_URL=… DEPLOYER_PRIVATE_KEY=… pnpm --filter @repo/contracts run deploy:executor * * Idempotent: a no-op (exit 0) if the deterministic address already holds code. */ diff --git a/packages/contracts/src/abis.ts b/packages/contracts/src/abis.ts index 64812509..0af4e308 100644 --- a/packages/contracts/src/abis.ts +++ b/packages/contracts/src/abis.ts @@ -1,5 +1,5 @@ // AUTO-GENERATED by scripts/codegen.ts from solidity/interfaces/*.sol. -// Run `bun run --filter @repo/contracts generate` after adding, renaming, or removing a .sol file. +// Run `pnpm --filter @repo/contracts run generate` after adding, renaming, or removing a .sol file. // Do not edit by hand — your changes will be overwritten. import { sol, solFile } from 'soltag' diff --git a/packages/contracts/src/contracts.ts b/packages/contracts/src/contracts.ts index 692c7989..77de2e4b 100644 --- a/packages/contracts/src/contracts.ts +++ b/packages/contracts/src/contracts.ts @@ -1,5 +1,5 @@ // AUTO-GENERATED by scripts/codegen.ts from solidity/*.sol. -// Run `bun run --filter @repo/contracts generate` after adding, renaming, or removing a .sol file. +// Run `pnpm --filter @repo/contracts run generate` after adding, renaming, or removing a .sol file. // Do not edit by hand — your changes will be overwritten. import { sol, solFile } from 'soltag' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..ec1fcc80 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3443 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +catalogs: + default: + '@internationalized/date': + specifier: 3.12.1 + version: 3.12.1 + '@loglayer/transport-betterstack': + specifier: 2.2.0 + version: 2.2.0 + '@morpho-org/midnight-sdk': + specifier: 1.3.0 + version: 1.3.0 + '@morpho-org/morpho-ts': + specifier: 2.8.0 + version: 2.8.0 + '@morpho-org/viem-dlc': + specifier: 0.0.11 + version: 0.0.11 + '@tanstack/react-form': + specifier: 1.20.0 + version: 1.20.0 + '@tanstack/react-table': + specifier: 8.21.3 + version: 8.21.3 + '@types/bun': + specifier: 1.3.13 + version: 1.3.13 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/react': + specifier: 19.2.18 + version: 19.2.18 + '@types/react-dom': + specifier: 19.2.4 + version: 19.2.4 + date-fns: + specifier: 4.1.0 + version: 4.1.0 + executooor-viem: + specifier: ^1.3.3 + version: 1.3.3 + husky: + specifier: ^9.1.5 + version: 9.1.7 + knip: + specifier: ^5.86.0 + version: 5.88.1 + lint-staged: + specifier: ^16.1.2 + version: 16.4.0 + lodash-es: + specifier: ^4.18.0 + version: 4.18.1 + loglayer: + specifier: 9.3.0 + version: 9.3.0 + openapi-fetch: + specifier: 0.17.0 + version: 0.17.0 + openapi-typescript: + specifier: ^7.13.0 + version: 7.13.0 + oxfmt: + specifier: ^0.36.0 + version: 0.36.0 + oxlint: + specifier: 1.61.0 + version: 1.61.0 + oxlint-tsgolint: + specifier: ^0.22.1 + version: 0.22.1 + react: + specifier: 19.2.8 + version: 19.2.8 + react-dom: + specifier: 19.2.8 + version: 19.2.8 + solc: + specifier: 0.8.35 + version: 0.8.35 + soltag: + specifier: ^0.0.17 + version: 0.0.17 + typescript: + specifier: 6.0.2 + version: 6.0.2 + viem: + specifier: 2.47.17 + version: 2.47.17 + zod: + specifier: 3.25.76 + version: 3.25.76 + +importers: + + .: + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:packages/typescript-config + esbuild: + specifier: 0.25.12 + version: 0.25.12 + husky: + specifier: 'catalog:' + version: 9.1.7 + knip: + specifier: 'catalog:' + version: 5.88.1(@types/node@25.8.0)(typescript@6.0.2) + lint-staged: + specifier: 'catalog:' + version: 16.4.0 + oxfmt: + specifier: 'catalog:' + version: 0.36.0 + oxlint: + specifier: 'catalog:' + version: 1.61.0(oxlint-tsgolint@0.22.1) + oxlint-tsgolint: + specifier: 'catalog:' + version: 0.22.1 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + bots/blue-liquidation: + dependencies: + '@repo/bot-kit': + specifier: workspace:* + version: link:../../packages/bot-kit + '@repo/contracts': + specifier: workspace:* + version: link:../../packages/contracts + '@repo/swaps': + specifier: workspace:* + version: link:../../packages/swaps + '@repo/utils': + specifier: workspace:* + version: link:../../packages/utils + executooor-viem: + specifier: 'catalog:' + version: 1.3.3(evm-maths@7.0.1)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + solc: + specifier: 'catalog:' + version: 0.8.35 + soltag: + specifier: 'catalog:' + version: 0.0.17(esbuild@0.25.12)(solc@0.8.35)(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + bots/market-making: + dependencies: + '@aws-sdk/client-kms': + specifier: 3.1101.0 + version: 3.1101.0 + '@ethereumjs/wallet': + specifier: ^10.0.0 + version: 10.0.0 + '@morpho-org/midnight-sdk': + specifier: 'catalog:' + version: 1.3.0(@morpho-org/morpho-ts@2.8.0)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + '@morpho-org/morpho-sdk': + specifier: 5.4.1 + version: 5.4.1(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + '@morpho-org/morpho-ts': + specifier: 'catalog:' + version: 2.8.0 + '@noble/curves': + specifier: 1.9.1 + version: 1.9.1 + '@repo/bot-kit': + specifier: workspace:* + version: link:../../packages/bot-kit + '@repo/logging': + specifier: workspace:* + version: link:../../packages/logging + '@repo/monitoring': + specifier: workspace:* + version: link:../../packages/monitoring + '@repo/observability': + specifier: workspace:* + version: link:../../packages/observability + '@repo/offers': + specifier: workspace:* + version: link:../../packages/offers + '@repo/utils': + specifier: workspace:* + version: link:../../packages/utils + '@tanstack/react-form': + specifier: 'catalog:' + version: 1.20.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanstack/react-table': + specifier: 'catalog:' + version: 8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + asn1js: + specifier: 3.0.6 + version: 3.0.6 + commander: + specifier: ^14.0.3 + version: 14.0.3 + react: + specifier: 'catalog:' + version: 19.2.8 + react-dom: + specifier: 'catalog:' + version: 19.2.8(react@19.2.8) + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + yaml: + specifier: 2.8.3 + version: 2.8.3 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + '@types/react': + specifier: 'catalog:' + version: 19.2.18 + '@types/react-dom': + specifier: 'catalog:' + version: 19.2.4(@types/react@19.2.18) + typedoc: + specifier: 0.28.20 + version: 0.28.20(typescript@6.0.2) + typescript: + specifier: 'catalog:' + version: 6.0.2 + + bots/midnight-crossed-books: + dependencies: + '@repo/bot-kit': + specifier: workspace:* + version: link:../../packages/bot-kit + '@repo/contracts': + specifier: workspace:* + version: link:../../packages/contracts + '@repo/utils': + specifier: workspace:* + version: link:../../packages/utils + openapi-fetch: + specifier: 'catalog:' + version: 0.17.0 + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + openapi-typescript: + specifier: 'catalog:' + version: 7.13.0(typescript@6.0.2) + typescript: + specifier: 'catalog:' + version: 6.0.2 + + bots/midnight-liquidation: + dependencies: + '@repo/bot-kit': + specifier: workspace:* + version: link:../../packages/bot-kit + '@repo/contracts': + specifier: workspace:* + version: link:../../packages/contracts + '@repo/swaps': + specifier: workspace:* + version: link:../../packages/swaps + '@repo/utils': + specifier: workspace:* + version: link:../../packages/utils + executooor-viem: + specifier: 'catalog:' + version: 1.3.3(evm-maths@7.0.1)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + openapi-fetch: + specifier: 'catalog:' + version: 0.17.0 + solc: + specifier: 'catalog:' + version: 0.8.35 + soltag: + specifier: 'catalog:' + version: 0.0.17(esbuild@0.25.12)(solc@0.8.35)(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../packages/typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/bot-kit: + dependencies: + '@loglayer/transport-betterstack': + specifier: 'catalog:' + version: 2.2.0 + '@morpho-org/viem-dlc': + specifier: 'catalog:' + version: 0.0.11(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + '@repo/utils': + specifier: workspace:* + version: link:../utils + loglayer: + specifier: 'catalog:' + version: 9.3.0 + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/contracts: + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + solc: + specifier: 'catalog:' + version: 0.8.35 + soltag: + specifier: 'catalog:' + version: 0.0.17(esbuild@0.25.12)(solc@0.8.35)(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + typescript: + specifier: 'catalog:' + version: 6.0.2 + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + + packages/logging: + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/monitoring: + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/observability: + dependencies: + '@repo/bot-kit': + specifier: workspace:* + version: link:../bot-kit + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/offers: + dependencies: + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@4.4.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/swaps: + dependencies: + '@repo/utils': + specifier: workspace:* + version: link:../utils + executooor-viem: + specifier: 'catalog:' + version: 1.3.3(evm-maths@7.0.1)(viem@2.47.17(typescript@6.0.2)(zod@3.25.76)) + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@3.25.76) + zod: + specifier: 'catalog:' + version: 3.25.76 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + typescript: + specifier: 'catalog:' + version: 6.0.2 + + packages/typescript-config: {} + + packages/utils: + dependencies: + '@internationalized/date': + specifier: 'catalog:' + version: 3.12.1 + '@morpho-org/morpho-ts': + specifier: 'catalog:' + version: 2.8.0 + '@morpho-org/viem-dlc': + specifier: 'catalog:' + version: 0.0.11(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@3.25.76)) + date-fns: + specifier: 'catalog:' + version: 4.1.0 + lodash-es: + specifier: 'catalog:' + version: 4.18.1 + viem: + specifier: 'catalog:' + version: 2.47.17(typescript@6.0.2)(zod@3.25.76) + zod: + specifier: 'catalog:' + version: 3.25.76 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/bun': + specifier: 'catalog:' + version: 1.3.13 + '@types/lodash-es': + specifier: 'catalog:' + version: 4.17.12 + typescript: + specifier: 'catalog:' + version: 6.0.2 + +packages: + + '@adraffy/ens-normalize@1.11.1': + resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + + '@aws-sdk/client-kms@3.1101.0': + resolution: {integrity: sha512-qczxakJlFYG9E6nE2yWIJ2nXq0HbMzHxMSWIsyubPZqx1TANHd2CSJWDTkg+IsNKq+94tG+e+EJo3uADwZ6cdw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.977.5': + resolution: {integrity: sha512-O5otOc1c6UZh5HsHAaPdYBcUUR9HL6mtnKqvc8nxN/CKDGUBUpsdh0q8K04Uz/dd1i0TaGyIQuQNqoO7+ad2TQ==} + engines: {node: '>=20.0.0'} + deprecated: |- + Deprecated due to Document number parsing bug in JSON, see + https://github.com/aws/aws-sdk-js-v3/issues/8246. Newer version available. + + '@aws-sdk/credential-provider-env@3.972.66': + resolution: {integrity: sha512-bOzP2+zdJ0XrghywB4FaJXtGZCx9yS0AGps+VJ5yEgg30wVyHNmVDBwVDXcRypzQY5iLGCS3NSn0nsuISqjFCQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.68': + resolution: {integrity: sha512-lkunS8X+H6V76WE+t/uGQm/U8v0JXK5mLfNFTUAMlE1kqaCjwlmqKJrgCVtqjK/vqnlrSWsLK4Lr4NANBWlfTQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.973.11': + resolution: {integrity: sha512-KoDEolYtLHG/8C+IiZpXbJWyBOMkrHV+j66Kb9PBXmLv5euGb7aELvuCmLenoGAV6gBW2wM7TsG/1e5iulH4kA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.73': + resolution: {integrity: sha512-tjsxMkTAFkmiV9ycmymapb9nLECWVOwFs0bZMQ9gB9bnbY8/HwfukHZlWbXZZp7qkPU6EXAfOcMm3DioFFEywA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.77': + resolution: {integrity: sha512-l4nitYCN/Ls57vtUfdextCjTjW41JD7lQiAnuR0RTbdByFc/6OmEAzwGd+lrp6CUtiXGQL1FCaYiamfHASrwBw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.66': + resolution: {integrity: sha512-YOnX6bIhdjx0QfaENu2PB0eFm5MEc9ft8XNGQ+NxMfeLSq9aE+XjWCwDupEnV4UWv5ZFpBLJbTREIx7KNOoqpQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.973.10': + resolution: {integrity: sha512-IsXnQ35j5VE+3ZK6aIhT5ypB+Jim3zRwVz0nYuVwyBKZyu/SYx+O2/LQpng8c2EiuwyqceabsDlYrICHDlJPsA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.72': + resolution: {integrity: sha512-nj9Zlsy7ya+fy+jhWTJwgfr7YdtDM4xHyZvgKuftuny0UgROVx9lxwvsWJSLvpKk4lig0m0tHng3k1fEnt0LeA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.997.40': + resolution: {integrity: sha512-hEdHT0PBR4fkGxWhwKG5EtEYKnAM7HKkp0vD10ufk4YcXejH4r4q6G/XhPzjUc6Yxo5kBS2vHg7llj4ViR9VTQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.43': + resolution: {integrity: sha512-lKekx8bLBXSv4O+cslk9Zfnw2XKSkWBs3uWL5QGhH2ZAQfNS7FE0vcSSN2vD/AhxX54ZTywWxR4STThoeOXlBA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1102.0': + resolution: {integrity: sha512-Ua700vVvM1q105yABSUQWkCK6FeTrNfU6ORGetJe5BzkZWY7QhkF7SVTOlmDGWRDNd6jbyY0Dv5e+E4bMBEmLg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.974.2': + resolution: {integrity: sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/xml-builder@3.972.37': + resolution: {integrity: sha512-zKq4HQum8JwDyEuyfuI4bbiAcU0KxP6qy+9PR/IsR92IyE/DaBAikzAS50tjxip4bqIIANpCcG+Yyj6CVhXupg==} + engines: {node: '>=20.0.0'} + + '@aws/lambda-invoke-store@0.3.0': + resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@ethereumjs/rlp@10.1.2': + resolution: {integrity: sha512-T5Zt6C2pd02Wd88Q9A5/UX+He1Q2Y1LntHxz/038tfbUMiqby4fYSSTLEDx+TEfJqw1BsJSBY/TSu6goUzlk+w==} + engines: {node: '>=20'} + hasBin: true + + '@ethereumjs/util@10.1.2': + resolution: {integrity: sha512-UPBgXtHHfQugoXOSAoeG3jdmPbl37cwV9y3XqTPAnw8tJj8np14TPV2uc5lOs7C2LMF9Ubn66zyaiYxgwGppng==} + engines: {node: '>=20'} + + '@ethereumjs/wallet@10.0.0': + resolution: {integrity: sha512-ayRmV8uL1YEaRxUacr5fcy/Z/03K8NtVP7NIq3X4y5wDaNx7e+6hk40sa7cbkBhzOEK4j3JPpGohVhrOw5I03A==} + engines: {node: '>=18'} + + '@gerrit0/mini-shiki@3.23.0': + resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} + + '@internationalized/date@3.12.1': + resolution: {integrity: sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@loglayer/context-manager@2.2.0': + resolution: {integrity: sha512-rnAXJIMRCUFuMtWNDK1F9vyh29SQQA659LVHHVv6AxvyQ/5DJpIkM7VhfuPVFV2EfnZXv343zbxDr29La5SOyA==} + engines: {node: '>=18'} + + '@loglayer/log-level-manager@2.2.0': + resolution: {integrity: sha512-ifJ6i2Tc0vwNhPS8Ugr/Y5iabNmcX+QnXnPzjz2aKxgNQQGYZ6qWlAI7WI75tINRr9S+4xxbvim9hNjQ42z7Lw==} + engines: {node: '>=18'} + + '@loglayer/plugin@3.2.0': + resolution: {integrity: sha512-yBqmZeY0+5uFzbUkSrH82tzDfo1YhzCyBx+ZEvikkYAkOlAlQHEFda4Ue+il4Km2FrCCCG0qPgMEd3Mz8kIITg==} + engines: {node: '>=18'} + + '@loglayer/shared@4.3.0': + resolution: {integrity: sha512-jlNeh0+uOGlKMhKk1Sx9Qdk7ni+I3hHZz2LB7Lp8BmUnqHD0TGRhsp2rV/zMiszSYUwI8XGvNrZttpxBL05U5A==} + engines: {node: '>=18'} + + '@loglayer/transport-betterstack@2.2.0': + resolution: {integrity: sha512-NSEFAYsjHTfmJmte4vyTZzAP85fSjO2CaGC6Y3kV2quGy3LkSyEEMAHPCwd3AW7YaGap5eJSS9AhY00DIeCiFQ==} + engines: {node: '>=18'} + + '@loglayer/transport-http@2.3.0': + resolution: {integrity: sha512-VkEqfMWAPffQf3VmKxGO7y48acBnsNxZCwOrt2FcbsnrYsxo0ske+cGkRC2yAUri4I2mKvB9mOy6bxn/Ez+Ztw==} + engines: {node: '>=18'} + + '@loglayer/transport@3.2.0': + resolution: {integrity: sha512-UMnlJggWIAYzZv8PN9dR3v7qMDG7vKVyPJjyfypBa8Y2yLk/4XzDp2fAvSd1OJKWQh03lO7GfGpo87SSYoIANg==} + engines: {node: '>=18'} + + '@morpho-org/blue-sdk-viem@5.2.1': + resolution: {integrity: sha512-3XFxpnKcoglzYm+Ph9BCLScqafWSBlmDyjQcUgEQ0z2VFOiUSpyWb+aF5NawdpCwMz/TyZBc4LedAf2ahm4f8A==} + peerDependencies: + '@morpho-org/blue-sdk': ^6.4.0 + '@morpho-org/morpho-ts': ^2.7.0 + viem: ^2.0.0 + + '@morpho-org/blue-sdk@6.4.0': + resolution: {integrity: sha512-k0GvaelRU0/ngaKLunQamh32Wl4T100WZ3lwz0NW2L3YYfcvjCxkOYpgQ5o+cViKRNLUXgQAWS1AUC2QFZrZQQ==} + peerDependencies: + '@morpho-org/morpho-ts': ^2.7.0 + + '@morpho-org/midnight-sdk@1.3.0': + resolution: {integrity: sha512-O96+FFzku6m2eZPL1vUjyUS+U+I+HLP9w/dOYLMzNiRo76/79glh+ThprKMqDeNVvk2AXB7ZefnKP3JFaDIj2A==} + peerDependencies: + '@morpho-org/morpho-ts': ^2.8.0 + viem: ^2.0.0 + + '@morpho-org/morpho-sdk@5.4.1': + resolution: {integrity: sha512-sUyoaXjCBDkm/lB6lvXBu6UDuUQkmk1HWj4Ov6g0N8l6LgEfGXMa2uuenmS3pTErlwzlQCESEbNDZBPY4+kjTQ==} + peerDependencies: + viem: ^2.0.0 + + '@morpho-org/morpho-ts@2.8.0': + resolution: {integrity: sha512-I+fSrYjx8VYHgzaTGUdGmxKM7qDrOWNBM4Yz/6hgum2tlCcgb5MN1sJVgztbO4nOk5C9Ly9I752CiyyYr2oeOg==} + + '@morpho-org/viem-dlc@0.0.11': + resolution: {integrity: sha512-aIam52kaN/Lt2eQuZpcDWPqKKyv/ltH7Di/HoNjdzlWN4ccuk4Keuw63RuP1pXtGAowmxNGblyPnHwja8QohsA==} + peerDependencies: + '@upstash/redis': ^1.0.0 + '@vercel/blob': ^2.3.0 + viem: ^2.0.0 + peerDependenciesMeta: + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + + '@napi-rs/wasm-runtime@1.2.2': + resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.0': + resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@2.2.0': + resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} + engines: {node: '>= 20.19.0'} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@2.2.0': + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} + cpu: [arm] + os: [android] + + '@oxc-resolver/binding-android-arm64@11.24.2': + resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} + cpu: [arm64] + os: [android] + + '@oxc-resolver/binding-darwin-arm64@11.24.2': + resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} + cpu: [arm64] + os: [darwin] + + '@oxc-resolver/binding-darwin-x64@11.24.2': + resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} + cpu: [x64] + os: [darwin] + + '@oxc-resolver/binding-freebsd-x64@11.24.2': + resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} + cpu: [x64] + os: [freebsd] + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} + cpu: [arm] + os: [linux] + + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} + cpu: [arm64] + os: [openharmony] + + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} + cpu: [arm64] + os: [win32] + + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} + cpu: [x64] + os: [win32] + + '@oxfmt/binding-android-arm-eabi@0.36.0': + resolution: {integrity: sha512-Z4yVHJWx/swHHjtr0dXrBZb6LxS+qNz1qdza222mWwPTUK4L790+5i3LTgjx3KYGBzcYpjaiZBw4vOx94dH7MQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.36.0': + resolution: {integrity: sha512-3ElCJRFNPQl7jexf2CAa9XmAm8eC5JPrIDSjc9jSchkVSFTEqyL0NtZinBB2h1a4i4JgP1oGl/5G5n8YR4FN8Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.36.0': + resolution: {integrity: sha512-nak4znWCqIExKhYSY/mz/lWsqWIpdsS7o0+SRzXR1Q0m7GrMcG1UrF1pS7TLGZhhkf7nTfEF7q6oZzJiodRDuw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.36.0': + resolution: {integrity: sha512-V4GP96thDnpKx6ADnMDnhIXNdtV+Ql9D4HUU+a37VTeVbs5qQSF/s6hhUP1b3xUqU7iRcwh72jUU2Y12rtGHAw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.36.0': + resolution: {integrity: sha512-/xapWCADfI5wrhxpEUjhI9fnw7MV5BUZizVa8e24n3VSK6A3Y1TB/ClOP1tfxNspykFKXp4NBWl6NtDJP3osqQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.36.0': + resolution: {integrity: sha512-1lOmv61XMFIH5uNm27620kRRzWt/RK6tdn250BRDoG9W7OXGOQ5UyI1HVT+SFkoOoKztBiinWgi68+NA1MjBVQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.36.0': + resolution: {integrity: sha512-vMH23AskdR1ujUS9sPck2Df9rBVoZUnCVY86jisILzIQ/QQ/yKUTi7tgnIvydPx7TyB/48wsQ5QMr5Knq5p/aw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.36.0': + resolution: {integrity: sha512-Hy1V+zOBHpBiENRx77qrUTt5aPDHeCASRc8K5KwwAHkX2AKP0nV89eL17hsZrE9GmnXFjsNmd80lyf7aRTXsbw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.36.0': + resolution: {integrity: sha512-SPGLJkOIHSIC6ABUQ5V8NqJpvYhMJueJv26NYqfCnwi/Mn6A61amkpJJ9Suy0Nmvs+OWESJpcebrBUbXPGZyQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.36.0': + resolution: {integrity: sha512-3EuoyB8x9x8ysYJjbEO/M9fkSk72zQKnXCvpZMDHXlnY36/1qMp55Nm0PrCwjGO/1pen5hdOVkz9WmP3nAp2IQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.36.0': + resolution: {integrity: sha512-MpY3itLwpGh8dnywtrZtaZ604T1m715SydCKy0+qTxetv+IHzuA+aO/AGzrlzUNYZZmtWtmDBrChZGibvZxbRQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.36.0': + resolution: {integrity: sha512-mmDhe4Vtx+XwQPRPn/V25+APnkApYgZ23q+6GVsNYY98pf3aU0aI3Me96pbRs/AfJ1jIiGC+/6q71FEu8dHcHw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.36.0': + resolution: {integrity: sha512-AYXhU+DmNWLSnvVwkHM92fuYhogtVHab7UQrPNaDf1sxadugg9gWVmcgJDlIwxJdpk5CVW/TFvwUKwI432zhhA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.36.0': + resolution: {integrity: sha512-H16QhhQ3usoakMleiAAQ2mg0NsBDAdyE9agUgfC8IHHh3jZEbr0rIKwjEqwbOHK5M0EmfhJmr+aGO/MgZPsneA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.36.0': + resolution: {integrity: sha512-EFFGkixA39BcmHiCe2ECdrq02D6FCve5ka6ObbvrheXl4V+R0U/E+/uLyVx1X65LW8TA8QQHdnbdDallRekohw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.36.0': + resolution: {integrity: sha512-zr/t369wZWFOj1qf06Z5gGNjFymfUNDrxKMmr7FKiDRVI1sNsdKRCuRL4XVjtcptKQ+ao3FfxLN1vrynivmCYg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.36.0': + resolution: {integrity: sha512-FxO7UksTv8h4olzACgrqAXNF6BP329+H322323iDrMB5V/+a1kcAw07fsOsUmqNrb9iJBsCQgH/zqcqp5903ag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.36.0': + resolution: {integrity: sha512-OjoMQ89H01M0oLMfr/CPNH1zi48ZIwxAKObUl57oh7ssUBNDp/2Vjf7E1TQ8M4oj4VFQ/byxl2SmcPNaI2YNDg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.36.0': + resolution: {integrity: sha512-MoyeQ9S36ZTz/4bDhOKJgOBIDROd4dQ5AkT9iezhEaUBxAPdNX9Oq0jD8OSnCj3G4wam/XNxVWKMA52kmzmPtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint-tsgolint/darwin-arm64@0.22.1': + resolution: {integrity: sha512-4150Lpgc1YM09GcjA6GSrra1JoPjC7aOpfywLjWEY4vW0Sd1qKzqHF1WRaiw0/qUZ40OATYdv3aRd7ipPkWQbw==} + cpu: [arm64] + os: [darwin] + + '@oxlint-tsgolint/darwin-x64@0.22.1': + resolution: {integrity: sha512-vFWcPWYOgZs4HWcgS1EjUZg33NLcNfEYU49KGImmCfZWkflENrmBYV4HN/C0YeAPum6ZZ/goPSvQrB/cOD+NfA==} + cpu: [x64] + os: [darwin] + + '@oxlint-tsgolint/linux-arm64@0.22.1': + resolution: {integrity: sha512-6LiUpP0Zir3+29FvBm7Y28q/dBjSHqTZ5MhG1Ckw4fGhI4cAvbcwXaKvbjx1TP7rRmBNOoq/M5xdpHjTb+GAew==} + cpu: [arm64] + os: [linux] + + '@oxlint-tsgolint/linux-x64@0.22.1': + resolution: {integrity: sha512-fuX1hEQfpHauUbXADsfqVhRzrUrGabzGXbj5wsp2vKhV5uk/Rze8Mba9GdjFGECzvXudMGqHqxB4r6jGRdhxVA==} + cpu: [x64] + os: [linux] + + '@oxlint-tsgolint/win32-arm64@0.22.1': + resolution: {integrity: sha512-8SZidAj+jrbZf9ZjBEYW0tiNZ+KasqB2zgW26qdiPpQSF/DzURnPmXz651IeA9YsmbVdHGIooEHUmev6QJdquA==} + cpu: [arm64] + os: [win32] + + '@oxlint-tsgolint/win32-x64@0.22.1': + resolution: {integrity: sha512-QweSk9H5lFh5Y+WUf2Kq/OAN88V6+62ZwGhP38gqdRotI90luXSMkruFTj7Q2rYrzH4ZVNaSqx7NY8JpSfIzqg==} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.61.0': + resolution: {integrity: sha512-6eZBPgiigK5txqoVgRqxbaxiom4lM8AP8CyKPPvpzKnQ3iFRFOIDc+0AapF+qsUSwjOzr5SGk4SxQDpQhkSJMQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.61.0': + resolution: {integrity: sha512-CkwLR69MUnyv5wjzebvbbtTSUwqLxM35CXE79bHqDIK+NtKmPEUpStTcLQRZMCo4MP0qRT6TXIQVpK0ZVScnMA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.61.0': + resolution: {integrity: sha512-8JbefTkbmvqkqWjmQrHke+MdpgT2UghhD/ktM4FOQSpGeCgbMToJEKdl9zwhr/YWTl92i4QI1KiTwVExpcUN8A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.61.0': + resolution: {integrity: sha512-uWpoxDT47hTnDLcdEh5jVbso8rlTTu5o0zuqa9J8E0JAKmIWn7kGFEIB03Pycn2hd2vKxybPGLhjURy/9We5FQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.61.0': + resolution: {integrity: sha512-K/o4hEyW7flfMel0iBVznmMBt7VIMHGdjADocHKpK1DUF9erpWnJ+BSSWd2W0c8K3mPtpph+CuHzRU6CI3l9jQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.61.0': + resolution: {integrity: sha512-P6040ZkcyweJ0Po9yEFqJCdvZnf3VNCGs1SIHgXDf8AAQNC6ID/heXQs9iSgo2FH7gKaKq32VWc59XZwL34C5Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.61.0': + resolution: {integrity: sha512-bwxrGCzTZkuB+THv2TQ1aTkVEfv5oz8sl+0XZZCpoYzErJD8OhPQOTA0ENPd1zJz8QsVdSzSrS2umKtPq4/JXg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.61.0': + resolution: {integrity: sha512-vkhb9/wKguMkLlrm3FoJW/Xmdv31GgYAE+x8lxxQ+7HeOxXUySI0q36a3NTVIuQUdLzxCI1zzMGsk1o37FOe3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.61.0': + resolution: {integrity: sha512-bl1dQh8LnVqsj6oOQAcxwbuOmNJkwc4p6o//HTBZhNTzJy21TLDwAviMqUFNUxDHkPGpmdKTSN4tWTjLryP8xg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.61.0': + resolution: {integrity: sha512-QoOX6KB2IiEpyOj/HKqaxi+NQHPnOgNgnr22n9N4ANJCzXkUlj1UmeAbFb4PpqdlHIzvGDM5xZ0OKtcLq9RhiQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.61.0': + resolution: {integrity: sha512-1TGcTerjY6p152wCof3oKElccq3xHljS/Mucp04gV/4ATpP6nO7YNnp7opEg6SHkv2a57/b4b8Ndm9znJ1/qAw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.61.0': + resolution: {integrity: sha512-65wXEmZIrX2ADwC8i/qFL4EWLSbeuBpAm3suuX1vu4IQkKd+wLT/HU/BOl84kp91u2SxPkPDyQgu4yrqp8vwVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.61.0': + resolution: {integrity: sha512-TVvhgMvor7Qa6COeXxCJ7ENOM+lcAOGsQ0iUdPSCv2hxb9qSHLQ4XF1h50S6RE1gBOJ0WV3rNukg4JJJP1LWRA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.61.0': + resolution: {integrity: sha512-SjpS5uYuFoDnDdZPwZE59ndF95AsY47R5MliuneTWR1pDm2CxGJaYXbKULI71t5TVfLQUWmrHEGRL9xvuq6dnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.61.0': + resolution: {integrity: sha512-gGfAeGD4sNJGILZbc/yKcIimO9wQnPMoYp9swAaKeEtwsSQAbU+rsdQze5SBtIP6j0QDzeYd4XSSUCRCF+LIeQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.61.0': + resolution: {integrity: sha512-OlVT0LrG/ct33EVtWRyR+B/othwmDWeRxfi13wUdPeb3lAT5TgTcFDcfLfarZtzB4W1nWF/zICMgYdkggX2WmQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.61.0': + resolution: {integrity: sha512-vI//NZPJk6DToiovPtaiwD4iQ7kO1r5ReWQD0sOOyKRtP3E2f6jxin4uvwi3OvDzHA2EFfd7DcZl5dtkQh7g1w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.61.0': + resolution: {integrity: sha512-0ySj4/4zd2XjePs3XAQq7IigIstN4LPQZgCyigX5/ERMLjdWAJfnxcTsrtxZxuij8guJW8foXuHmhGxW0H4dDA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.61.0': + resolution: {integrity: sha512-0xgSiyeqDLDZxXoe9CVJrOx3TUVsfyoOY7cNi03JbItNcC9WCZqrSNdrAbHONxhSPaVh/lzfnDcON1RqSUMhHw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@redocly/ajv@8.11.2': + resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} + + '@redocly/config@0.22.0': + resolution: {integrity: sha512-gAy93Ddo01Z3bHuVdPWfCwzgfaYgMdaZPcfL7JZ7hWJoK9V0lXDbigTWkhiPFAaLWzbOJ+kbUQG1+XwIm0KRGQ==} + + '@redocly/openapi-core@1.34.18': + resolution: {integrity: sha512-UyKIm0wTPw5BcY7Z2PkbK1Ma260um96LSBWXHrdSMe+ZV0EPMyDfAcUcjjm3qEiGST9OK/1TriekdPCZkn4Q3A==} + engines: {node: '>=18.17.0', npm: '>=9.5.0'} + + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} + + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} + + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} + + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@smithy/core@3.31.1': + resolution: {integrity: sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.4.16': + resolution: {integrity: sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.6.13': + resolution: {integrity: sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.9.13': + resolution: {integrity: sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.6.12': + resolution: {integrity: sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.16.1': + resolution: {integrity: sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg==} + engines: {node: '>=18.0.0'} + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tanstack/form-core@1.20.0': + resolution: {integrity: sha512-FGlKvcsusOf4756vtN1EoDI4h50r4/11eTcpF3NcnE04N/bSn2gP7cdhG6tYA0lJWzM9H1pNIzZ86uZ4MHB9eA==} + + '@tanstack/react-form@1.20.0': + resolution: {integrity: sha512-1UfWqEYRnHr4cooGbHiTQqoqus8soNUH+RLD6UyhIQEvomOSQMX0JgX+zGSl08tIugrnWcAnh50n5T9IIs/Evw==} + peerDependencies: + '@tanstack/react-start': ^1.130.10 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@tanstack/react-start': + optional: true + + '@tanstack/react-store@0.7.7': + resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/react-table@8.21.3': + resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==} + engines: {node: '>=12'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + '@tanstack/store@0.7.7': + resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/bun@1.3.13': + resolution: {integrity: sha512-9fqXWk5YIHGGnUau9TEi+qdlTYDAnOj+xLCmSTwXfAIqXr2x4tytJb43E9uCvt09zJURKXwAtkoH4nLQfzeTXw==} + + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.25': + resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==} + + '@types/node@25.8.0': + resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} + + '@types/react-dom@19.2.4': + resolution: {integrity: sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.18': + resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + abitype@1.2.3: + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asn1js@3.0.6: + resolution: {integrity: sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==} + engines: {node: '>=12.0.0'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bun-types@1.3.13: + resolution: {integrity: sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA==} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-formdata@0.9.0: + resolution: {integrity: sha512-q5uwOjR3Um5YD+ZWPOF/1sGHVW9A5rCrRwITQChRXlmPkxDFBqCm4jNTIVdGHNH9OnR+V9MoZVgRhsFb+ARbUw==} + + devalue@5.9.0: + resolution: {integrity: sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + ethereum-cryptography@3.2.0: + resolution: {integrity: sha512-Urr5YVsalH+Jo0sYkTkv1MyI9bLYZwW8BENZCeE1QYaTHETEYx0Nv/SVsWkSqpYrzweg6d8KMY1wTjH/1m/BIg==} + engines: {node: ^14.21.3 || >=16, npm: '>=9'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + evm-maths@7.0.1: + resolution: {integrity: sha512-rMFIq/xfsNpR1JGkXPnLP1iXLBCtVr1N4tErzdEcKJoqREpKOZswCwNSljN/Sf1QZjv+KGCamh4E4FQcVaJekA==} + engines: {node: '>=12.0'} + + executooor-viem@1.3.3: + resolution: {integrity: sha512-8npMgRIDerwxeyWonqsTSrw28CIU4EDUz2JSXRz5hEIF6pxNbRls6uS2wR2lf74J2fxAgtF6+Ltin5/bMlFiyw==} + peerDependencies: + evm-maths: ^7.0.0 + viem: ^2.0.0 + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fd-package-json@2.0.0: + resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + formatly@0.3.0: + resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==} + engines: {node: '>=18.3.0'} + hasBin: true + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + engines: {node: '>=18'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + + js-md5@0.8.3: + resolution: {integrity: sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.3.0: + resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + knip@5.88.1: + resolution: {integrity: sha512-tpy5o7zu1MjawVkLPuahymVJekYY3kYjvzcoInhIchgePxTlo+api90tBv2KfhAIe5uXh+mez1tAfmbv8/TiZg==} + engines: {node: '>=18.18.0'} + hasBin: true + peerDependencies: + '@types/node': '>=18' + typescript: '>=5.0.4 <7' + + linkify-it@5.0.2: + resolution: {integrity: sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==} + + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} + engines: {node: '>=20.17'} + hasBin: true + + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + loglayer@9.3.0: + resolution: {integrity: sha512-xiZFMbUCcy8mC+/uV0EzkZV6nbo3qweQjKKQSGkcrug2VpOHudzcoWR0DOl9edr8oS+BwyEjimpG3sF2CW8sww==} + engines: {node: '>=18'} + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + markdown-it@14.3.0: + resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} + hasBin: true + + mdurl@2.1.0: + resolution: {integrity: sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + openapi-fetch@0.17.0: + resolution: {integrity: sha512-PsbZR1wAPcG91eEthKhN+Zn92FMHxv+/faECIwjXdxfTODGSGegYv0sc1Olz+HYPvKOuoXfp+0pA2XVt2cI0Ig==} + + openapi-typescript-helpers@0.1.0: + resolution: {integrity: sha512-OKTGPthhivLw/fHz6c3OPtg72vi86qaMlqbJuVJ23qOvQ+53uw1n7HdmkJFibloF7QEjDrDkzJiOJuockM/ljw==} + + openapi-typescript@7.13.0: + resolution: {integrity: sha512-EFP392gcqXS7ntPvbhBzbF8TyBA+baIYEm791Hy5YkjDYKTnk/Tn5OQeKm5BIZvJihpp8Zzr4hzx0Irde1LNGQ==} + hasBin: true + peerDependencies: + typescript: ^5.x + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + ox@0.14.15: + resolution: {integrity: sha512-3TubCmbKen/cuZQzX0qDbOS5lojjdSZ90lqKxWIDWd5siuJ0IJBaTXMYs8eMPLcraqnOwGZazz3apHPGiRCkGQ==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + oxc-resolver@11.24.2: + resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} + + oxfmt@0.36.0: + resolution: {integrity: sha512-/ejJ+KoSW6J9bcNT9a9UtJSJNWhJ3yOLSBLbkoFHJs/8CZjmaZVZAJe4YgO1KMJlKpNQasrn/G9JQUEZI3p0EQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + oxlint-tsgolint@0.22.1: + resolution: {integrity: sha512-YUSGSLUnoolsu8gxISEDio3q1rtsCozwfOzASUn3DT2mR2EeQ93uEEnen7s+6LpF+lyTQFln1pQfqwBh/fsVEg==} + hasBin: true + + oxlint@1.61.0: + resolution: {integrity: sha512-ZC0ALuhDZ6ivOFG+sy0D0pEDN49EvsId98zVlmYdkcXHsEM14m/qTNUEsUpiFiCVbpIxYtVBmmLE87nsbUHohQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.18.0' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + engines: {node: '>=18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + + smol-toml@1.7.1: + resolution: {integrity: sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ==} + engines: {node: '>= 18'} + + solc@0.8.35: + resolution: {integrity: sha512-OaP/4zyoKRo2CjqZDxbtkeRlEo6MxP4FLCxntw1Agf9OSoecmwYKoFBSB34UcSKBFBucrTh3Mb0nRoJou62ibw==} + engines: {node: '>=12.0.0'} + hasBin: true + + soltag@0.0.17: + resolution: {integrity: sha512-CX7kxblz4O4cac/610lascNMIgakgXIBJNBecVxBPgeaa2l97YV5uHP1kdLzR1dI3BL8dr3BeEykY+RiX6ZgEg==} + hasBin: true + peerDependencies: + solc: ^0.8.0 + typescript: '>=5.0' + viem: ^2.0.0 + peerDependenciesMeta: + typescript: + optional: true + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + typedoc@0.28.20: + resolution: {integrity: sha512-uSKqkh8Cr48vllnEy+jdaAgOeR6Y+QCBW7usgUsKj7gJEfR7stw9U/fE49LBnj2tPRKPY0c0EBJSWe9Appmplg==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x + + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + unbash@2.2.0: + resolution: {integrity: sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w==} + engines: {node: '>=14'} + + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + + unplugin@3.3.0: + resolution: {integrity: sha512-qa66K+crbfyE6JK10GjvbJeRrOsuC/JpbnHctfyp/i4oBTxWOzJfRZyDiOk1PtErMFRu8JhsU/wPvOdBNWe5Rg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@farmfe/core': '*' + '@rspack/core': '*' + bun-types-no-globals: '*' + esbuild: '*' + rolldown: '*' + rollup: '*' + unloader: '*' + vite: '*' + webpack: '*' + peerDependenciesMeta: + '@farmfe/core': + optional: true + '@rspack/core': + optional: true + bun-types-no-globals: + optional: true + esbuild: + optional: true + rolldown: + optional: true + rollup: + optional: true + unloader: + optional: true + vite: + optional: true + webpack: + optional: true + + uri-js-replace@1.0.1: + resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + valibot@1.4.2: + resolution: {integrity: sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + + viem@2.47.17: + resolution: {integrity: sha512-yNUKw6b1nd1i96GcJPqp096w5VVjUky/6PLT8UeUsEArzhD9YRrC0QJ50o8YEF7xA6M0FK8e6u5tAMyBLLl7tw==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + walk-up-path@4.0.0: + resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + engines: {node: 20 || >=22} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + +snapshots: + + '@adraffy/ens-normalize@1.11.1': {} + + '@aws-sdk/client-kms@3.1101.0': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/credential-provider-node': 3.972.77 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/core@3.977.5': + dependencies: + '@aws-sdk/types': 3.974.2 + '@aws-sdk/xml-builder': 3.972.37 + '@aws/lambda-invoke-store': 0.3.0 + '@smithy/core': 3.31.1 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 + bowser: 2.14.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.66': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.972.68': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.973.11': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/credential-provider-env': 3.972.66 + '@aws-sdk/credential-provider-http': 3.972.68 + '@aws-sdk/credential-provider-login': 3.972.73 + '@aws-sdk/credential-provider-process': 3.972.66 + '@aws-sdk/credential-provider-sso': 3.973.10 + '@aws-sdk/credential-provider-web-identity': 3.972.72 + '@aws-sdk/nested-clients': 3.997.40 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-login@3.972.73': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-node@3.972.77': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.66 + '@aws-sdk/credential-provider-http': 3.972.68 + '@aws-sdk/credential-provider-ini': 3.973.11 + '@aws-sdk/credential-provider-process': 3.972.66 + '@aws-sdk/credential-provider-sso': 3.973.10 + '@aws-sdk/credential-provider-web-identity': 3.972.72 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-process@3.972.66': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.973.10': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 + '@aws-sdk/token-providers': 3.1102.0 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-web-identity@3.972.72': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.997.40': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/signature-v4-multi-region': 3.996.43 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.996.43': + dependencies: + '@aws-sdk/types': 3.974.2 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1102.0': + dependencies: + '@aws-sdk/core': 3.977.5 + '@aws-sdk/nested-clients': 3.997.40 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/types@3.974.2': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.37': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.3.0': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.29.7': {} + + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@ethereumjs/rlp@10.1.2': {} + + '@ethereumjs/util@10.1.2': + dependencies: + '@ethereumjs/rlp': 10.1.2 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + + '@ethereumjs/wallet@10.0.0': + dependencies: + '@ethereumjs/util': 10.1.2 + '@scure/base': 1.2.6 + ethereum-cryptography: 3.2.0 + js-md5: 0.8.3 + uuid: 11.1.1 + + '@gerrit0/mini-shiki@3.23.0': + dependencies: + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@internationalized/date@3.12.1': + dependencies: + '@swc/helpers': 0.5.23 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@loglayer/context-manager@2.2.0': + dependencies: + '@loglayer/shared': 4.3.0 + + '@loglayer/log-level-manager@2.2.0': + dependencies: + '@loglayer/shared': 4.3.0 + + '@loglayer/plugin@3.2.0': + dependencies: + '@loglayer/shared': 4.3.0 + + '@loglayer/shared@4.3.0': {} + + '@loglayer/transport-betterstack@2.2.0': + dependencies: + '@loglayer/transport': 3.2.0 + '@loglayer/transport-http': 2.3.0 + + '@loglayer/transport-http@2.3.0': + dependencies: + '@loglayer/transport': 3.2.0 + + '@loglayer/transport@3.2.0': + dependencies: + '@loglayer/shared': 4.3.0 + + '@morpho-org/blue-sdk-viem@5.2.1(@morpho-org/blue-sdk@6.4.0(@morpho-org/morpho-ts@2.8.0))(@morpho-org/morpho-ts@2.8.0)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3))': + dependencies: + '@morpho-org/blue-sdk': 6.4.0(@morpho-org/morpho-ts@2.8.0) + '@morpho-org/morpho-ts': 2.8.0 + viem: 2.47.17(typescript@6.0.2)(zod@4.4.3) + + '@morpho-org/blue-sdk@6.4.0(@morpho-org/morpho-ts@2.8.0)': + dependencies: + '@morpho-org/morpho-ts': 2.8.0 + '@noble/hashes': 2.2.0 + + '@morpho-org/midnight-sdk@1.3.0(@morpho-org/morpho-ts@2.8.0)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3))': + dependencies: + '@morpho-org/morpho-ts': 2.8.0 + viem: 2.47.17(typescript@6.0.2)(zod@4.4.3) + + '@morpho-org/morpho-sdk@5.4.1(viem@2.47.17(typescript@6.0.2)(zod@4.4.3))': + dependencies: + '@morpho-org/blue-sdk': 6.4.0(@morpho-org/morpho-ts@2.8.0) + '@morpho-org/blue-sdk-viem': 5.2.1(@morpho-org/blue-sdk@6.4.0(@morpho-org/morpho-ts@2.8.0))(@morpho-org/morpho-ts@2.8.0)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + '@morpho-org/midnight-sdk': 1.3.0(@morpho-org/morpho-ts@2.8.0)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)) + '@morpho-org/morpho-ts': 2.8.0 + viem: 2.47.17(typescript@6.0.2)(zod@4.4.3) + zod: 4.4.3 + + '@morpho-org/morpho-ts@2.8.0': {} + + '@morpho-org/viem-dlc@0.0.11(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@3.25.76))': + dependencies: + valibot: 1.4.2(typescript@6.0.2) + viem: 2.47.17(typescript@6.0.2)(zod@3.25.76) + transitivePeerDependencies: + - typescript + + '@morpho-org/viem-dlc@0.0.11(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3))': + dependencies: + valibot: 1.4.2(typescript@6.0.2) + viem: 2.47.17(typescript@6.0.2)(zod@4.4.3) + transitivePeerDependencies: + - typescript + + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.9.0': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/curves@2.2.0': + dependencies: + '@noble/hashes': 2.2.0 + + '@noble/hashes@1.8.0': {} + + '@noble/hashes@2.2.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + optional: true + + '@oxc-resolver/binding-android-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-darwin-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-darwin-x64@11.24.2': + optional: true + + '@oxc-resolver/binding-freebsd-x64@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + optional: true + + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + optional: true + + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + optional: true + + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) + optional: true + + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + optional: true + + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + optional: true + + '@oxfmt/binding-android-arm-eabi@0.36.0': + optional: true + + '@oxfmt/binding-android-arm64@0.36.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.36.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.36.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.36.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.36.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.36.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.36.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.36.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.36.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.36.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.36.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.36.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.36.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.36.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.36.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.36.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.36.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.36.0': + optional: true + + '@oxlint-tsgolint/darwin-arm64@0.22.1': + optional: true + + '@oxlint-tsgolint/darwin-x64@0.22.1': + optional: true + + '@oxlint-tsgolint/linux-arm64@0.22.1': + optional: true + + '@oxlint-tsgolint/linux-x64@0.22.1': + optional: true + + '@oxlint-tsgolint/win32-arm64@0.22.1': + optional: true + + '@oxlint-tsgolint/win32-x64@0.22.1': + optional: true + + '@oxlint/binding-android-arm-eabi@1.61.0': + optional: true + + '@oxlint/binding-android-arm64@1.61.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.61.0': + optional: true + + '@oxlint/binding-darwin-x64@1.61.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.61.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.61.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.61.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.61.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.61.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.61.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.61.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.61.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.61.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.61.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.61.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.61.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.61.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.61.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.61.0': + optional: true + + '@redocly/ajv@8.11.2': + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js-replace: 1.0.1 + + '@redocly/config@0.22.0': {} + + '@redocly/openapi-core@1.34.18(supports-color@10.2.2)': + dependencies: + '@redocly/ajv': 8.11.2 + '@redocly/config': 0.22.0 + colorette: 1.4.0 + https-proxy-agent: 7.0.6(supports-color@10.2.2) + js-levenshtein: 1.1.6 + js-yaml: 4.3.0 + minimatch: 5.1.9 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - supports-color + + '@scure/base@1.2.6': {} + + '@scure/bip32@1.7.0': + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@scure/bip39@1.6.0': + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@shikijs/engine-oniguruma@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + + '@shikijs/themes@3.23.0': + dependencies: + '@shikijs/types': 3.23.0 + + '@shikijs/types@3.23.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@smithy/core@3.31.1': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.6.13': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.9.13': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/signature-v4@5.6.12': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/types@4.16.1': + dependencies: + tslib: 2.8.1 + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tanstack/form-core@1.20.0': + dependencies: + '@tanstack/store': 0.7.7 + + '@tanstack/react-form@1.20.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/form-core': 1.20.0 + '@tanstack/react-store': 0.7.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + decode-formdata: 0.9.0 + devalue: 5.9.0 + react: 19.2.8 + transitivePeerDependencies: + - react-dom + + '@tanstack/react-store@0.7.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/store': 0.7.7 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + use-sync-external-store: 1.6.0(react@19.2.8) + + '@tanstack/react-table@8.21.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@tanstack/table-core': 8.21.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@tanstack/store@0.7.7': {} + + '@tanstack/table-core@8.21.3': {} + + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/bun@1.3.13': + dependencies: + bun-types: 1.3.13 + + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.25 + + '@types/lodash@4.17.25': {} + + '@types/node@25.8.0': + dependencies: + undici-types: 7.24.6 + + '@types/react-dom@19.2.4(@types/react@19.2.18)': + dependencies: + '@types/react': 19.2.18 + + '@types/react@19.2.18': + dependencies: + csstype: 3.2.3 + + '@types/unist@3.0.3': {} + + abitype@1.2.3(typescript@6.0.2)(zod@3.25.76): + optionalDependencies: + typescript: 6.0.2 + zod: 3.25.76 + + abitype@1.2.3(typescript@6.0.2)(zod@4.4.3): + optionalDependencies: + typescript: 6.0.2 + zod: 4.4.3 + + agent-base@7.1.4: {} + + ansi-colors@4.1.3: {} + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@6.2.2: {} + + ansi-styles@6.2.3: {} + + argparse@2.0.1: {} + + asn1js@3.0.6: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + bowser@2.14.1: {} + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.9: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bun-types@1.3.13: + dependencies: + '@types/node': 25.8.0 + + change-case@5.4.4: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-truncate@5.2.0: + dependencies: + slice-ansi: 8.0.0 + string-width: 8.2.2 + + colorette@1.4.0: {} + + colorette@2.0.20: {} + + command-exists@1.2.9: {} + + commander@14.0.3: {} + + commander@8.3.0: {} + + csstype@3.2.3: {} + + date-fns@4.1.0: {} + + debug@4.4.3(supports-color@10.2.2): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 10.2.2 + + decode-formdata@0.9.0: {} + + devalue@5.9.0: {} + + emoji-regex@10.6.0: {} + + entities@4.5.0: {} + + environment@1.1.0: {} + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + ethereum-cryptography@3.2.0: + dependencies: + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + + eventemitter3@5.0.1: {} + + eventemitter3@5.0.4: {} + + evm-maths@7.0.1: {} + + executooor-viem@1.3.3(evm-maths@7.0.1)(viem@2.47.17(typescript@6.0.2)(zod@3.25.76)): + dependencies: + evm-maths: 7.0.1 + viem: 2.47.17(typescript@6.0.2)(zod@3.25.76) + + executooor-viem@1.3.3(evm-maths@7.0.1)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)): + dependencies: + evm-maths: 7.0.1 + viem: 2.47.17(typescript@6.0.2)(zod@4.4.3) + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fd-package-json@2.0.0: + dependencies: + walk-up-path: 4.0.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + follow-redirects@1.16.0: {} + + formatly@0.3.0: + dependencies: + fd-package-json: 2.0.0 + + get-east-asian-width@1.6.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + https-proxy-agent@7.0.6(supports-color@10.2.2): + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@10.2.2) + transitivePeerDependencies: + - supports-color + + husky@9.1.7: {} + + index-to-position@1.2.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.6.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + isows@1.0.7(ws@8.18.3): + dependencies: + ws: 8.18.3 + + jiti@2.7.0: {} + + js-levenshtein@1.1.6: {} + + js-md5@0.8.3: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.3.0: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@1.0.0: {} + + knip@5.88.1(@types/node@25.8.0)(typescript@6.0.2): + dependencies: + '@nodelib/fs.walk': 1.2.8 + '@types/node': 25.8.0 + fast-glob: 3.3.3 + formatly: 0.3.0 + jiti: 2.7.0 + minimist: 1.2.8 + oxc-resolver: 11.24.2 + picocolors: 1.1.1 + picomatch: 4.0.5 + smol-toml: 1.7.1 + strip-json-comments: 5.0.3 + typescript: 6.0.2 + unbash: 2.2.0 + yaml: 2.8.3 + zod: 4.4.3 + + linkify-it@5.0.2: + dependencies: + uc.micro: 2.1.0 + + lint-staged@16.4.0: + dependencies: + commander: 14.0.3 + listr2: 9.0.5 + picomatch: 4.0.5 + string-argv: 0.3.2 + tinyexec: 1.3.0 + yaml: 2.8.3 + + listr2@9.0.5: + dependencies: + cli-truncate: 5.2.0 + colorette: 2.0.20 + eventemitter3: 5.0.4 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + lodash-es@4.18.1: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + loglayer@9.3.0: + dependencies: + '@loglayer/context-manager': 2.2.0 + '@loglayer/log-level-manager': 2.2.0 + '@loglayer/plugin': 3.2.0 + '@loglayer/shared': 4.3.0 + '@loglayer/transport': 3.2.0 + + lunr@2.3.9: {} + + markdown-it@14.3.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.2 + mdurl: 2.1.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + mdurl@2.1.0: {} + + memorystream@0.3.1: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mimic-function@5.0.1: {} + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.9 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.4 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + openapi-fetch@0.17.0: + dependencies: + openapi-typescript-helpers: 0.1.0 + + openapi-typescript-helpers@0.1.0: {} + + openapi-typescript@7.13.0(typescript@6.0.2): + dependencies: + '@redocly/openapi-core': 1.34.18(supports-color@10.2.2) + ansi-colors: 4.1.3 + change-case: 5.4.4 + parse-json: 8.3.0 + supports-color: 10.2.2 + typescript: 6.0.2 + yargs-parser: 21.1.1 + + os-tmpdir@1.0.2: {} + + ox@0.14.15(typescript@6.0.2)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - zod + + ox@0.14.15(typescript@6.0.2)(zod@4.4.3): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@6.0.2)(zod@4.4.3) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - zod + + oxc-resolver@11.24.2: + optionalDependencies: + '@oxc-resolver/binding-android-arm-eabi': 11.24.2 + '@oxc-resolver/binding-android-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-x64': 11.24.2 + '@oxc-resolver/binding-freebsd-x64': 11.24.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.24.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-musl': 11.24.2 + '@oxc-resolver/binding-openharmony-arm64': 11.24.2 + '@oxc-resolver/binding-wasm32-wasi': 11.24.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 + + oxfmt@0.36.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.36.0 + '@oxfmt/binding-android-arm64': 0.36.0 + '@oxfmt/binding-darwin-arm64': 0.36.0 + '@oxfmt/binding-darwin-x64': 0.36.0 + '@oxfmt/binding-freebsd-x64': 0.36.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.36.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.36.0 + '@oxfmt/binding-linux-arm64-gnu': 0.36.0 + '@oxfmt/binding-linux-arm64-musl': 0.36.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.36.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.36.0 + '@oxfmt/binding-linux-riscv64-musl': 0.36.0 + '@oxfmt/binding-linux-s390x-gnu': 0.36.0 + '@oxfmt/binding-linux-x64-gnu': 0.36.0 + '@oxfmt/binding-linux-x64-musl': 0.36.0 + '@oxfmt/binding-openharmony-arm64': 0.36.0 + '@oxfmt/binding-win32-arm64-msvc': 0.36.0 + '@oxfmt/binding-win32-ia32-msvc': 0.36.0 + '@oxfmt/binding-win32-x64-msvc': 0.36.0 + + oxlint-tsgolint@0.22.1: + optionalDependencies: + '@oxlint-tsgolint/darwin-arm64': 0.22.1 + '@oxlint-tsgolint/darwin-x64': 0.22.1 + '@oxlint-tsgolint/linux-arm64': 0.22.1 + '@oxlint-tsgolint/linux-x64': 0.22.1 + '@oxlint-tsgolint/win32-arm64': 0.22.1 + '@oxlint-tsgolint/win32-x64': 0.22.1 + + oxlint@1.61.0(oxlint-tsgolint@0.22.1): + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.61.0 + '@oxlint/binding-android-arm64': 1.61.0 + '@oxlint/binding-darwin-arm64': 1.61.0 + '@oxlint/binding-darwin-x64': 1.61.0 + '@oxlint/binding-freebsd-x64': 1.61.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.61.0 + '@oxlint/binding-linux-arm-musleabihf': 1.61.0 + '@oxlint/binding-linux-arm64-gnu': 1.61.0 + '@oxlint/binding-linux-arm64-musl': 1.61.0 + '@oxlint/binding-linux-ppc64-gnu': 1.61.0 + '@oxlint/binding-linux-riscv64-gnu': 1.61.0 + '@oxlint/binding-linux-riscv64-musl': 1.61.0 + '@oxlint/binding-linux-s390x-gnu': 1.61.0 + '@oxlint/binding-linux-x64-gnu': 1.61.0 + '@oxlint/binding-linux-x64-musl': 1.61.0 + '@oxlint/binding-openharmony-arm64': 1.61.0 + '@oxlint/binding-win32-arm64-msvc': 1.61.0 + '@oxlint/binding-win32-ia32-msvc': 1.61.0 + '@oxlint/binding-win32-x64-msvc': 1.61.0 + oxlint-tsgolint: 0.22.1 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.29.7 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.5: {} + + pluralize@8.0.0: {} + + punycode.js@2.3.1: {} + + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + + queue-microtask@1.2.3: {} + + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react@19.2.8: {} + + require-from-string@2.0.2: {} + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.27.0: {} + + semver@5.7.2: {} + + signal-exit@4.1.0: {} + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + smol-toml@1.7.1: {} + + solc@0.8.35: + dependencies: + command-exists: 1.2.9 + commander: 8.3.0 + follow-redirects: 1.16.0 + js-sha3: 0.8.0 + memorystream: 0.3.1 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + + soltag@0.0.17(esbuild@0.25.12)(solc@0.8.35)(typescript@6.0.2)(viem@2.47.17(typescript@6.0.2)(zod@4.4.3)): + dependencies: + solc: 0.8.35 + unplugin: 3.3.0(esbuild@0.25.12) + viem: 2.47.17(typescript@6.0.2)(zod@4.4.3) + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - esbuild + - rolldown + - rollup + - unloader + - vite + - webpack + + string-argv@0.3.2: {} + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string-width@8.2.2: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@5.0.3: {} + + supports-color@10.2.2: {} + + tinyexec@1.3.0: {} + + tinypool@2.1.0: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tslib@2.8.1: {} + + type-fest@4.41.0: {} + + typedoc@0.28.20(typescript@6.0.2): + dependencies: + '@gerrit0/mini-shiki': 3.23.0 + lunr: 2.3.9 + markdown-it: 14.3.0 + minimatch: 10.2.6 + typescript: 6.0.2 + yaml: 2.9.0 + + typescript@6.0.2: {} + + uc.micro@2.1.0: {} + + unbash@2.2.0: {} + + undici-types@7.24.6: {} + + unplugin@3.3.0(esbuild@0.25.12): + dependencies: + '@jridgewell/remapping': 2.3.5 + picomatch: 4.0.5 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + esbuild: 0.25.12 + + uri-js-replace@1.0.1: {} + + use-sync-external-store@1.6.0(react@19.2.8): + dependencies: + react: 19.2.8 + + uuid@11.1.1: {} + + valibot@1.4.2(typescript@6.0.2): + optionalDependencies: + typescript: 6.0.2 + + viem@2.47.17(typescript@6.0.2)(zod@3.25.76): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) + isows: 1.0.7(ws@8.18.3) + ox: 0.14.15(typescript@6.0.2)(zod@3.25.76) + ws: 8.18.3 + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + viem@2.47.17(typescript@6.0.2)(zod@4.4.3): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@6.0.2)(zod@4.4.3) + isows: 1.0.7(ws@8.18.3) + ox: 0.14.15(typescript@6.0.2)(zod@4.4.3) + ws: 8.18.3 + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + walk-up-path@4.0.0: {} + + webpack-virtual-modules@0.6.2: {} + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + ws@8.18.3: {} + + yaml-ast-parser@0.0.43: {} + + yaml@2.8.3: {} + + yaml@2.9.0: {} + + yargs-parser@21.1.1: {} + + zod@3.25.76: {} + + zod@4.4.3: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..868a2bfc --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,70 @@ +packages: + - bots/* + - packages/* + +engineStrict: true +saveExact: true +verifyStoreIntegrity: true +preferOffline: true +# Bun's resolver does not reliably follow pnpm's isolated workspace dependency links for soltag's +# TypeScript imports. Hoisting preserves the pnpm lockfile and lifecycle policy while supporting the +# intermediate migration state where Bun remains the test runner. +nodeLinker: hoisted + +# 3 days — carried over from bunfig.toml's `minimumReleaseAge = 259200` (seconds; this is minutes). +minimumReleaseAge: 4320 +minimumReleaseAgeExclude: + - '@morpho-org/*' + +# No dependency lifecycle script runs unless opted in here — add entries deliberately. esbuild's +# platform binary is required by the root build dependency introduced on main. +allowBuilds: + esbuild: true +# Make an un-opted-in build script a hard install failure, not a warning. Without this the +# default-deny above is advisory, which defeats the point of the migration. +strictDepBuilds: true + +# pnpm does not run npm-style pre/post scripts by default. `prestart` is load-bearing here: it +# builds @repo/contracts' gitignored dist/ (and runs generate:api for midnight-crossed-books), so +# the bots cannot resolve their own dependency without it. +enablePrePostScripts: true + +# Migrating the lockfile re-resolves every caret range, so entries that bun.lock had already +# resolved to a lower version are pinned exactly here. This keeps the migration a no-op on +# dependency versions, per the TIB's non-goal; relaxing any of these is a separate, deliberate bump. +catalog: + '@internationalized/date': 3.12.1 + '@tanstack/react-form': 1.20.0 + '@tanstack/react-table': 8.21.3 + '@loglayer/transport-betterstack': 2.2.0 + '@morpho-org/midnight-sdk': 1.3.0 + '@morpho-org/morpho-ts': 2.8.0 + '@morpho-org/viem-dlc': 0.0.11 + '@types/bun': 1.3.13 + '@types/lodash-es': ^4.17.12 + '@types/react': 19.2.18 + '@types/react-dom': 19.2.4 + date-fns: 4.1.0 + executooor-viem: ^1.3.3 + husky: ^9.1.5 + knip: ^5.86.0 + lint-staged: ^16.1.2 + lodash-es: ^4.18.0 + loglayer: 9.3.0 + openapi-fetch: 0.17.0 + openapi-typescript: ^7.13.0 + react: 19.2.8 + react-dom: 19.2.8 + oxfmt: ^0.36.0 + # Pinned to what bun.lock resolved for `^1.46.0`. Newer minors change rule behavior and want + # oxlint-tsgolint >= 0.24 — bump both together, deliberately, in a separate change. + oxlint: 1.61.0 + oxlint-tsgolint: ^0.22.1 + # Pinned exactly: solc determines the compiled bytecode of the soltag `sol``` lens templates and + # the Executor. A silent compiler bump would invalidate the recorded explorer-verification + # settings (0.8.35, optimizer runs=200). + solc: 0.8.35 + soltag: ^0.0.17 + typescript: 6.0.2 + viem: 2.47.17 + zod: 3.25.76