diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..28c853d78 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + verify: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - name: Install + run: pnpm install --frozen-lockfile + + - name: Type-check + run: pnpm type-check + + - name: Lint + run: pnpm exec eslint . + + - name: Test + run: pnpm test + + # `pnpm build` is intentionally omitted: its `prebuild` runs `fetch-dao`, + # which resolves DAO config over the network and needs env that CI lacks. diff --git a/.gitignore b/.gitignore index 32a7ae7f0..7b68cb1ea 100644 --- a/.gitignore +++ b/.gitignore @@ -40,9 +40,20 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts -# generated config files +# generated config files (resolved on-chain by `pnpm fetch-dao`) /src/config/dao.json /src/config/dao.ts # generated icon /public/icon.png +.env*.local + +# local agent / editor tooling (not part of the template) +.claude/ + +# session-local running notes +implementation-notes.md + +# local dev-only artifacts (not part of the template) +.vercel-deploy-trigger +/sandbox/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..2bd5a0a98 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/CONFIG.md b/CONFIG.md new file mode 100644 index 000000000..d02639b60 --- /dev/null +++ b/CONFIG.md @@ -0,0 +1,190 @@ +# Configuring a fork + +Everything you need to point this template at *your* Builder DAO lives in +two places: + +1. **`src/lib/dao.config.ts`** — UI, theme, treasury tokens, feature flags, + per-fork contract overrides. +2. **`.env.local`** — secrets, API keys, environment-specific URLs. + +The on-chain addresses (`token`, `auction`, `governor`, `treasury`, +`metadata`) are populated automatically by `pnpm fetch-dao`. Don't edit +them by hand. + +--- + +## `dao.config.ts` walkthrough + +### Identity + +```ts +name: ONCHAIN_CONFIG.name, // pulled from the DAO token contract +tagline: 'Powering Onchain Communities.', +image: ONCHAIN_CONFIG.image, // pulled from the on-chain image +``` + +Override `name`/`image` if you want the UI to show something different +from what's stored on-chain. + +### Theme + +```ts +theme: { + accent: '#2563eb', // primary brand color + radius: 12, // px, applied to most rounded corners + font: 'Geist', + displayFont: 'Geist', + defaultMode: 'system', // 'light' | 'dark' | 'system' +} +``` + +The dev Tweaks panel (gear icon, bottom-right in dev mode) lets you +preview changes live before committing them to `src/config/dao.theme.json`. + +### Features + +Flip either of these off if you don't want the corresponding UI: + +```ts +features: { + bidComments: true, // 140-char on-chain comment field on BidForm + coins: true, // /coins + /droposals content hub and creator-coin proposals +} +``` + +### Treasury tokens + +ERC-20 contracts surfaced on `/treasury` *and* as quick-picks in the +"Send ERC-20" / "Stream Tokens" / "Milestone Payments" / "Airdrop Tokens" +proposal forms. + +```ts +import { BASE_COMMON_TOKENS } from './treasury-tokens' + +treasuryTokens: [ + ...BASE_COMMON_TOKENS, // USDC, WETH, DAI on Base + { symbol: 'SENDIT', address: '0xBa5B…', decimals: 18 }, +] +``` + +For Ethereum mainnet swap `BASE_COMMON_TOKENS` for `ETHEREUM_COMMON_TOKENS`, +or list addresses by hand. + +### Treasury NFT collections (new) + +ERC-721 collections held by the treasury besides the DAO governance token. +These appear as quick-pick pills in the "Send NFT" proposal form. + +```ts +treasuryNftCollections: [ + { symbol: 'BasePaint', address: '0xBa5e…' }, +] +``` + +The DAO governance token is always available implicitly — you don't need +to list it. + +### Contract overrides (new) + +Per-fork overrides for the protocol contracts used by proposal forms. +Leave the field unset to use the template's built-in chain → address +mappings. Useful when: + +- You're on a niche chain not in our mapping +- You need to point at a custom deployment + +```ts +contractOverrides: { + disperse: '0xDeadBeef…', // Airdrop Tokens + escrowBundler: '0xDeadBeef…', // Milestone Payments + sablierLockupLinear: '0xDeadBeef…', // Stream Tokens (also fills the + // "Sablier LockupLinear contract" + // field when starting a new stream) + zoraNftCreator: '0xDeadBeef…', // Droposal: Single Edition (prefilled) + eas: '0xDeadBeef…', // Pin Treasury Asset + Nominate Delegate +} +``` + +If a form's underlying contract isn't supported on the current chain *and* +no override is provided, the form shows a warning banner and disables +submission. + +### Socials + +```ts +socials: { + twitter: '@yourdao', + farcaster: 'yourdao', + discord: 'https://discord.gg/…', + github: 'https://github.com/yourdao', + website: 'https://yourdao.com', +} +``` + +Surfaces in the footer and OG metadata. + +--- + +## Environment variables + +Put these in `.env.local` (not committed to git). + +### Required for production + +| Variable | What it does | Where to get it | +|---|---|---| +| `NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID` | Pairs the WalletConnect modal for wallet connect/disconnect. Required in production builds; dev builds warn but still run. | https://cloud.reown.com | +| `NEXT_PUBLIC_SITE_URL` | Canonical URL used by the sitemap, OG metadata, and robots.txt. Falls back to `VERCEL_PROJECT_PRODUCTION_URL` → `VERCEL_URL` → `localhost:3000`. | The domain you ship under | + +### Optional integrations + +| Variable | What it enables | Where to get it | +|---|---|---| +| `NEXT_PUBLIC_ALCHEMY_API_KEY` | Treasury transfer history feed on `/treasury`. Without it, the recent-transfers card hides itself. | https://dashboard.alchemy.com | +| `PINATA_API_KEY` | Server-side IPFS pin operations (used by the milestone metadata upload, droposal cover uploads, etc.). | https://app.pinata.cloud | + +### Auto-populated by Vercel + +`VERCEL_PROJECT_PRODUCTION_URL`, `VERCEL_URL`, `VERCEL_ENV` — used as +fallbacks if `NEXT_PUBLIC_SITE_URL` isn't set. + +--- + +## Per-feature feature gating + +Some proposal kinds depend on a contract that may not be deployed on the +chain your DAO lives on. The forms gracefully disable themselves with a +warning banner in those cases. Capability mapping: + +| Kind | Requires | Supported chains (default) | +|---|---|---| +| `pin_asset` | EAS contract | Mainnet, Optimism, Base (+ testnets) | +| `delegate` (escrow) | EAS contract | Same as above | +| `milestone` | EscrowBundler | Mainnet, Optimism, Base, Zora (+ testnets) | +| `airdrop` | Disperse contract | Mainnet, Optimism, Polygon, Arbitrum, Base | +| `stream` | Sablier LL address (user-entered or via override) | All — chain-specific address required | +| `droposal` | Zora NFT Creator (user-entered or via override) | All — chain-specific address required | + +To enable any of these on a chain we don't ship support for, set +`daoConfig.contractOverrides.` to the address of a compatible +deployment. + +--- + +## Switching between DAOs + +`pnpm switch-dao` retargets the local app at another Builder DAO. Pass a +built-in preset name, or a `0x` token address with an optional `--chain` +(chain id, default `8453` / Base) and `--network` (`mainnet` | `testnet`): + +```bash +pnpm switch-dao gnars # a built-in preset +pnpm switch-dao 0xYourToken --chain 8453 # any DAO by token address +pnpm dev +``` + +It writes the target into `.env.local`, merges any theme overrides into +`src/config/dao.theme.json`, and then runs `pnpm fetch-dao` for you to +resolve the on-chain addresses + image into the generated (gitignored) +`src/config/dao.json` + `src/config/dao.ts`. `pnpm build` also runs +`fetch-dao` automatically. diff --git a/README.md b/README.md index c26d3379c..2b83de25e 100644 --- a/README.md +++ b/README.md @@ -1,153 +1,257 @@ -# Nouns Builder Template Site +# Builder Community Site Template -> ⚠️ **Note**: This template is in active development. Full theming functionality is not yet available or fully tested. Expect breaking changes and missing features. +A forkable, fully-themed Next.js template for any [Builder DAO](https://nouns.build). +Drop in your token contract address, run one command, deploy. You get a polished +community site with light + dark themes, real on-chain governance UI (vote / bid / +propose), treasury analytics, member directory, and Open Graph share images — out +of the box. -This is a template site for Nouns Builder DAOs, built with [Next.js](https://nextjs.org) and integrated with the Nouns Builder ecosystem. +## What you get -Built using packages from the [Nouns Builder](https://github.com/BuilderOSS/nouns-builder) monorepo, which provides the UI components, React hooks, utilities, SDK, and core functionality for interacting with Nouns Builder DAOs. +| Page | Route | What's on it | +|---|---|---| +| Dashboard | `/` | Hero, live auction spotlight, real activity feed (recent bids + proposals), recent proposals card grid, treasury KPI snapshot | +| Auction | `/auction/[id]` | Real artwork, live bid form (real `createBid`), bid history, voting-power gating, settle button when an auction has ended | +| Proposals | `/proposals` | Filterable card grid against real subgraph data, embedded vote bars + status badges | +| Proposal | `/proposals/[id]` | Markdown description, decoded transaction list, sticky vote panel with real `castVoteWithReason` and live voting-power resolution | +| Create | `/proposals/new` | Eligibility-gated proposal create flow with markdown editor + preview, transaction builder, real `propose(...)` | +| Treasury | `/treasury` | Real ETH balance, ERC-20 holdings via multicall, NFT grid (DAO-owned tokens), allocation donut + recent transfer history | +| Members | `/members` | Real holder list with ENS resolution (top 20, gated on Alchemy), CSV export | +| About | `/about` | Real on-chain founders, smart-contract list with copy-to-clipboard | -## Quick Setup +Plus: -### 1. Install Dependencies +- **Light + dark** themes via `next-themes`, theme tokens as CSS variables, accent + radius + display font driven by `dao.theme.json` +- **`pnpm switch-dao `** — flip the local labrat to any Builder DAO in one command (Builder, Gnars, or any token address). Tested on Kendama (`0xd7d4…f5ff`) +- **Real on-chain writes** for vote casting, bid placement, proposal creation, and auction settlement — all via wagmi + `@buildeross/sdk` ABIs +- **Tweaks panel** in dev — preview theme overrides live without restarting +- **Open Graph images** — Satori-rendered 1200×630 PNGs for `/`, `/proposals/[id]`, `/auction/[id]`, all theme-aware + +## Stack + +Next.js 16 (App Router) · React 19 · Tailwind v4 + Typography plugin · `wagmi` + RainbowKit · `next-themes` · `react-markdown` (gfm + breaks + sanitize) · `@buildeross/sdk` for the Builder subgraph + ABIs · TypeScript everywhere. + +--- + +## Quick start + +### 1. Install ```bash pnpm install ``` -### 2. Environment Configuration - -Create your environment file from the sample: +### 2. Environment ```bash cp sample.env .env.local ``` -Edit `.env.local` with your DAO configuration: +Edit `.env.local`: + +| Var | Required | What it does | +|---|---|---| +| `NEXT_PUBLIC_NETWORK_TYPE` | yes | `"mainnet"` or `"testnet"` | +| `NEXT_PUBLIC_CHAIN_ID` | yes | `1` (Ethereum) · `8453` (Base) · `10` (Optimism) · `7777777` (Zora) | +| `NEXT_PUBLIC_DAO_TOKEN_ADDRESS` | yes | Your DAO's token contract | +| `NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID` | yes | Free at [cloud.reown.com](https://cloud.reown.com) | +| `NEXT_PUBLIC_ALCHEMY_API_KEY` | recommended | Faster RPC + enables ENS resolution on `/members` | +| `PINATA_API_KEY` | media uploads | [Pinata](https://pinata.cloud) scoped-key JWT — required for `/coins` (coin media + metadata) and future proposal/propdate attachments | +| `NEXT_PUBLIC_PINATA_GATEWAY` | optional | Public gateway hostname override (e.g. `your-gateway.mypinata.cloud`) | +| `NEXT_PUBLIC_SITE_URL` | optional | Deployed URL (no trailing slash) so `sitemap.xml` / `robots.txt` resolve correctly | + +### 3. Resolve your DAO's on-chain config ```bash -# Required: Network configuration -NEXT_PUBLIC_NETWORK_TYPE="mainnet" # or "testnet" -NEXT_PUBLIC_CHAIN_ID="8453" # Chain ID (1=Ethereum, 8453=Base, 10=Optimism, 7777777=Zora) -NEXT_PUBLIC_DAO_TOKEN_ADDRESS="0xe8af882f2f5c79580230710ac0e2344070099432" - -# Required: Core functionality -PINATA_API_KEY= # Required for IPFS file uploads -NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID= # Required for wallet connections - -# Optional: RPC providers for robust connectivity -NEXT_PUBLIC_ALCHEMY_API_KEY= # Optional RPC provider -NEXT_PUBLIC_TENDERLY_RPC_KEY= # Optional RPC provider (see Tenderly section below) - -# Optional: Tenderly integration (for transaction simulation) -NEXT_PUBLIC_DISABLE_TENDERLY_SIMULATION="true" # Set to "false" to enable -TENDERLY_ACCESS_KEY= -TENDERLY_PROJECT= -TENDERLY_USER= -NEXT_PUBLIC_TENDERLY_RPC_KEY= - -# Optional: AI transaction summaries, uses vercel's AI Gateway -NEXT_PUBLIC_DISABLE_AI_SUMMARY="true" # Set to "false" to enable -AI_MODEL= -AI_GATEWAY_API_KEY= - -# Optional: Redis for caching -REDIS_URL= +pnpm fetch-dao ``` -### 3. Fetch DAO Configuration +Reads `NEXT_PUBLIC_DAO_TOKEN_ADDRESS` + `NEXT_PUBLIC_CHAIN_ID`, queries the chain, writes `src/config/dao.{ts,json}`, generates `public/icon.png` from your DAO's contract image. -Before running the development server, fetch your DAO's contract addresses and metadata: +### 4. Run ```bash -pnpm fetch-dao +pnpm dev ``` -This script will: +Open . + +--- -- Validate your environment variables -- Fetch DAO contract addresses from the blockchain -- Generate a favicon from your DAO's image -- Create configuration files in `src/config/` +## Switching DAOs (the labrat) -### 4. Run Development Server +The `switch-dao` CLI flips your local environment to a different Builder DAO without hand-editing `.env.local`. Useful for testing the template against multiple real DAOs before deploying your own. ```bash -pnpm dev +# Built-in presets (fast — point at known addresses + theme) +pnpm switch-dao builder # Builder DAO on Base +pnpm switch-dao gnars # Gnars DAO on Base + +# Any token address (defaults theme; tweak with flags) +pnpm switch-dao 0xd7d40e5afceabc923b70dd299206155fb330f5ff \ + --tagline "A nounish DAO for kendama players" \ + --accent "#dc2626" \ + --display-font "Geist" \ + --radius 12 + +# See all flags +pnpm switch-dao --help ``` -Open [http://localhost:3000](http://localhost:3000) to see your DAO site. +Under the hood: rewrites `.env.local`, merges theme overrides into `src/config/dao.theme.json`, and re-runs `pnpm fetch-dao`. Restart `pnpm dev` to pick up the new DAO. + +--- -## Environment Variables +## Fork checklist -### Required Variables +A re-skinned, deployed site for your DAO in under 20 minutes: -| Variable | Description | Example | -| --------------------------------------- | --------------------------------- | ---------------------------------------------- | -| `NEXT_PUBLIC_NETWORK_TYPE` | Network environment | `"mainnet"` or `"testnet"` | -| `NEXT_PUBLIC_CHAIN_ID` | Blockchain network ID | `"8453"` (Base), `"1"` (Ethereum) | -| `NEXT_PUBLIC_DAO_TOKEN_ADDRESS` | Your DAO's token contract address | `"0xe8af882f2f5c79580230710ac0e2344070099432"` | -| `PINATA_API_KEY` | Pinata API key | **Required** for IPFS file uploads | -| `NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID` | WalletConnect project ID | **Required** for wallet connections | +- [ ] **Fork or clone** this repo into your DAO's GitHub org +- [ ] `pnpm install` +- [ ] **Set the 4 required env vars** in `.env.local` — chain id, token address, WalletConnect project id, and (recommended) an Alchemy key +- [ ] `pnpm fetch-dao` — resolves your contract addresses + favicon +- [ ] **Edit `src/config/dao.theme.json`** with your DAO's tagline + accent + radius + display font (or use `pnpm switch-dao 0x --tagline "…" --accent "#…"`) +- [ ] **Edit the About copy** in `src/app/about/page.tsx` — mission paragraphs are placeholder text. Founders, contracts, and treasury numbers all flow from on-chain. +- [ ] **Configure treasury tokens** in `src/lib/dao.config.ts` if you want ERC-20 holdings on `/treasury` — spread `BASE_COMMON_TOKENS` from `src/lib/treasury-tokens.ts` or list custom contracts +- [ ] **Toggle features** in `daoConfig.features` (e.g. set `bidComments: false` to hide the on-chain bid comment field) +- [ ] **Test in dev** — open the Tweaks panel (gear icon, bottom-right) to preview light/dark + accent live before committing +- [ ] **Deploy to Vercel** — see [Deploy](#deploy-to-vercel) below +- [ ] **Update `socials`** in `daoConfig.socials` (twitter, farcaster, discord, github, website) — surfaces in the footer -### Network Configuration +The Tweaks panel is dev-only (gated on `NODE_ENV !== 'production'`); production renders exactly what's in `dao.config.ts` + `dao.theme.json`. -The `NEXT_PUBLIC_NETWORK_TYPE` should match your chain: +--- -- **Mainnet chains**: Ethereum (1), Base (8453), Optimism (10), Zora (7777777) -- **Testnet chains**: Set `NEXT_PUBLIC_NETWORK_TYPE="testnet"` for test networks +## Theming & config surface -### Optional RPC Providers +Two committed files drive every fork's identity: -| Variable | Description | Purpose | -| ------------------------------ | ---------------- | --------------------------------------------- | -| `NEXT_PUBLIC_ALCHEMY_API_KEY` | Alchemy API key | Optional RPC provider for robust connectivity | -| `NEXT_PUBLIC_TENDERLY_RPC_KEY` | Tenderly RPC key | Optional RPC provider for robust connectivity | +- `src/lib/dao.config.ts` — schema, defaults, feature flags +- `src/config/dao.theme.json` — visible identity (tagline, accent, radius, display font) -### Optional Tenderly Simulation +```ts +// src/lib/dao.config.ts -| Variable | Description | Required When | -| ----------------------------------------- | ------------------------------ | ------------------------------------- | -| `NEXT_PUBLIC_DISABLE_TENDERLY_SIMULATION` | Disable transaction simulation | Set to `"false"` to enable simulation | -| `TENDERLY_ACCESS_KEY` | Tenderly access key | **Required** if simulation enabled | -| `TENDERLY_PROJECT` | Tenderly project name | **Required** if simulation enabled | -| `TENDERLY_USER` | Tenderly username | **Required** if simulation enabled | +import { BASE_COMMON_TOKENS } from '@/lib/treasury-tokens' -> **Note**: When `NEXT_PUBLIC_SKIP_TENDERLY_SIMULATION="false"`, all Tenderly variables become required for proposal creation. The app simulates proposal transactions using Tenderly to ensure they can be executed before posting on-chain. +export const daoConfig: DaoConfig = { + // Identity (name + image come from on-chain via fetch-dao) + name: ONCHAIN_CONFIG.name, + tagline: T.tagline ?? 'Powering Onchain Communities.', + image: ONCHAIN_CONFIG.image, -### Optional AI Transaction Summaries + // Chain + addresses (auto-resolved by fetch-dao) + chainId: ONCHAIN_CONFIG.chain.id, + addresses: { token, auction, governor, treasury, metadata }, -| Variable | Description | Required When | -| -------------------------------- | ------------------------------ | ------------------------------------ | -| `NEXT_PUBLIC_DISABLE_AI_SUMMARY` | Disable AI transaction summary | Set to `"false"` to enable summaries | -| `AI_MODEL` | AI model | **Required** if summaries enabled | -| `AI_GATEWAY_API_KEY` | AI Gateway API key | **Required** if summaries enabled | + // Theme — driven by dao.theme.json + theme: { + accent: T.accent ?? '#2563eb', + radius: T.radius ?? 12, + font: T.font ?? 'Geist', + displayFont: T.displayFont ?? 'Geist', + defaultMode: T.defaultMode ?? 'system', + }, -### Optional Redis Caching + // Optional feature flags + features: { + bidComments: true, + coins: true, + }, -| Variable | Description | Purpose | -| ----------- | ----------- | ---------------------------------- | -| `REDIS_URL` | Redis URL | Cache rate limits and ai summaries | + // ERC-20 contracts shown on /treasury (opt-in) + treasuryTokens: + ONCHAIN_CONFIG.chain.id === 8453 ? BASE_COMMON_TOKENS : [], -## Available Scripts + socials: { /* twitter, farcaster, discord, github, website */ }, +} +``` -- `pnpm dev` - Start development server -- `pnpm build` - Build for production (automatically runs `fetch-dao`) -- `pnpm start` - Start production server -- `pnpm fetch-dao` - Fetch DAO addresses and generate config -- `pnpm lint` - Run linting and type checking -- `pnpm type-check` - Run TypeScript type checking +Theme **values** live in `src/app/globals.css` under `:root` and `[data-theme='dark']`. The Tailwind v4 `@theme` block exposes them as utility classes (`bg-accent`, `text-muted-fg`, `border-border-strong`, etc.) — don't hardcode hex colors anywhere in components. -## Learn More +--- -To learn more about Next.js, take a look at the following resources: +## Deploy to Vercel -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn-pages-router) - an interactive Next.js tutorial. +### One-click -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! +1. Push your fork to GitHub +2. Import on [vercel.com/new](https://vercel.com/new) +3. Add the same env vars from `.env.local` to the Vercel project +4. Deploy — Vercel runs `pnpm build` which pre-runs `pnpm fetch-dao` + +### Manual + +```bash +pnpm build && pnpm start +``` + +### Custom domain + +Set up the domain in Vercel, point your DNS at it, done. + +--- + +## Available scripts + +| Script | What it does | +|---|---| +| `pnpm dev` | Next.js dev server (port 3000) | +| `pnpm fetch-dao` | Resolves on-chain DAO config + writes `src/config/dao.ts` | +| `pnpm switch-dao ` | Switch the labrat to any Builder DAO | +| `pnpm build` | Production build (auto-runs `fetch-dao` first) | +| `pnpm start` | Production server | +| `pnpm type-check` | `tsc --noEmit` | +| `pnpm lint` | type-check + ESLint with `--fix` | + +--- + +## Project structure + +``` +scripts/ +├── fetchDaoAddresses.ts # `pnpm fetch-dao` +└── switchDao.ts # `pnpm switch-dao` labrat CLI +src/ +├── app/ # App Router pages + API + OG images +│ ├── api/ # Pinata · feed · treasury · img-proxy route handlers +│ ├── auction/[id]/ # + opengraph-image.tsx + latest/ redirect route +│ ├── proposals/ # list · [id]/ detail · new/ create +│ ├── treasury/ +│ ├── members/ +│ ├── about/ +│ ├── globals.css # Tailwind v4 @theme + CSS-var theme tokens +│ ├── layout.tsx # Root layout, fonts, theme injection +│ ├── opengraph-image.tsx +│ ├── web3-providers.tsx # wagmi, RainbowKit, react-query, next-themes +│ └── page.tsx # Dashboard +├── components/ +│ ├── ui/ # shadcn-style atoms (Button) +│ ├── dao/ # DAO-specific composites (VoteBar, BidForm, +│ │ VotePanel, ProposalCreateForm, …) +│ ├── DaoAvatar.tsx # Real DAO image (IPFS) with stripes fallback +│ ├── DaoLogo.tsx +│ ├── Header.tsx +│ ├── Footer.tsx +│ ├── Markdown.tsx # react-markdown wrapper (gfm + sanitize) +│ └── TweaksPanel.tsx # Dev-only theme tweak floater +├── lib/ +│ ├── dao.config.ts # 👈 the config surface every fork edits +│ ├── dao-data.ts # All server-side subgraph + chain reads +│ ├── presets.ts # Builder/Gnars/Verdant — shared with switch-dao +│ ├── treasury-tokens.ts # Opt-in ERC-20 defaults per chain +│ ├── og-utils.ts # Shared OG_SIZE, theme colors +│ ├── types.ts # ProposalStatus etc. +│ └── utils.ts # cn() +└── config/ # Auto-generated by fetch-dao + per-fork theme + ├── dao.ts # ⚠️ Auto-generated, do not edit + ├── dao.json # Auto-generated companion + ├── dao.theme.json # 👈 Per-fork tagline + theme overrides + └── types.ts +``` -## Deploy on Vercel +--- -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +## License -Check out our [Next.js deployment documentation](https://nextjs.org/docs/pages/building-your-application/deploying) for more details. +MIT — see [license.md](./license.md). diff --git a/eslint.config.js b/eslint.config.mjs similarity index 83% rename from eslint.config.js rename to eslint.config.mjs index 0da02f96e..fa96813ec 100644 --- a/eslint.config.js +++ b/eslint.config.mjs @@ -15,6 +15,10 @@ const eslintConfig = defineConfig([ 'next-env.d.ts', 'node_modules/**', 'dist/**', + // Agent-isolation worktrees keep a multi-GB full clone of the repo, + // including their own `.next/` cache. Without this, `eslint --fix .` + // spends 30+ minutes trying to lint the SSR bundle dumps. + '.claude/worktrees/**', ]), { plugins: { diff --git a/next.config.ts b/next.config.ts index 4b3ffb6f0..2e785a4e4 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,10 +1,8 @@ -import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin' import type { NextConfig } from 'next' -const withVanillaExtract = createVanillaExtractPlugin() - const nextConfig: NextConfig = { reactStrictMode: true, + reactCompiler: true, transpilePackages: [ '@buildeross/constants', '@buildeross/hooks', @@ -12,36 +10,46 @@ const nextConfig: NextConfig = { '@buildeross/sdk', '@buildeross/types', '@buildeross/utils', - '@buildeross/zord', - '@buildeross/ui', '@buildeross/stores', - '@buildeross/auction-ui', - '@buildeross/proposal-ui', - '@buildeross/dao-ui', - '@buildeross/create-proposal-ui', + '@buildeross/ui', '@rainbow-me/rainbowkit', ], experimental: { optimizePackageImports: [ '@rainbow-me/rainbowkit', - '@buildeross/zord', '@buildeross/hooks', '@buildeross/ui', '@buildeross/sdk', + 'lucide-react', ], + turbopackFileSystemCacheForDev: true, }, - webpack(config, { dev }) { - config.resolve.fallback = { fs: false, net: false, tls: false } - - config.externals = config.externals || [] - config.externals.push('pino-pretty') - - return { - ...config, - // Hot-fix for $RefreshReg issues: https://github.com/vanilla-extract-css/vanilla-extract/issues/679#issuecomment-1402839249 - mode: dev ? 'production' : config.mode, - } + turbopack: { + resolveAlias: { + // Optional React Native peer pulled in transitively by @metamask/sdk — + // not needed in a web build, alias it away. + '@react-native-async-storage/async-storage': './empty.ts', + // Node-only logger pretty-printer optionally required by pino. Browser + // builds should never reach it. + 'pino-pretty': './empty.ts', + }, + }, + images: { + remotePatterns: [ + { protocol: 'https', hostname: 'gateway.pinata.cloud', pathname: '/ipfs/**' }, + ], + }, + async redirects() { + return [ + { source: '/token/:tokenId', destination: '/auction/:tokenId', permanent: true }, + { + source: '/proposal/:proposalId', + destination: '/proposals/:proposalId', + permanent: true, + }, + { source: '/contracts', destination: '/about', permanent: true }, + ] }, } -export default withVanillaExtract(nextConfig) +export default nextConfig diff --git a/package.json b/package.json index e464711ca..7de997d81 100644 --- a/package.json +++ b/package.json @@ -9,53 +9,63 @@ "dev": "next dev", "build": "next build", "start": "next start", - "fetch-dao": "tsx scripts/fetchDaoAddresses.ts" + "fetch-dao": "tsx scripts/fetchDaoAddresses.ts", + "switch-dao": "tsx scripts/switchDao.ts", + "test": "vitest run", + "test:watch": "vitest" }, "dependencies": { - "@ai-sdk/gateway": "^2.0.1", - "@buildeross/auction-ui": "0.2.1", - "@buildeross/constants": "0.2.1", - "@buildeross/create-proposal-ui": "0.2.1", - "@buildeross/dao-ui": "0.2.1", - "@buildeross/hooks": "0.2.1", - "@buildeross/ipfs-service": "0.2.1", - "@buildeross/proposal-ui": "0.2.1", - "@buildeross/sdk": "0.2.1", - "@buildeross/stores": "0.2.1", - "@buildeross/types": "0.2.1", - "@buildeross/ui": "0.2.1", - "@buildeross/utils": "0.2.1", - "@buildeross/zord": "0.2.1", - "@fontsource/inter": "^5.2.8", - "@fontsource/londrina-solid": "^5.2.7", + "@buildeross/constants": "0.3.2", + "@buildeross/hooks": "0.3.2", + "@buildeross/ipfs-service": "0.3.2", + "@buildeross/sdk": "0.3.2", + "@buildeross/stores": "0.3.2", + "@buildeross/swap": "0.3.2", + "@buildeross/types": "0.3.2", + "@buildeross/ui": "0.3.2", + "@buildeross/utils": "0.3.2", + "@radix-ui/react-slot": "^1.1.2", "@rainbow-me/rainbowkit": "^2.2.5", - "@smartinvoicexyz/types": "^0.1.27", "@tanstack/react-query": "^5.90.3", - "@vanilla-extract/css": "^1.17.2", - "@vanilla-extract/next-plugin": "^2.4.11", - "@vanilla-extract/recipes": "^0.5.7", - "ai": "^5.0.80", - "axios": "^1.12.2", - "ioredis": "^5.8.1", - "next": "^15.3.2", - "react": "^19.2.0", - "react-dom": "^19.2.0", - "react-mde": "^11.5.0", + "@zoralabs/coins-sdk": "^0.4.3", + "@zoralabs/protocol-deployments": "^0.7.2", + "clanker-sdk": "^4.2.10", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.469.0", + "next": "16.2.4", + "next-themes": "^0.4.4", + "react": "^19.2.5", + "react-dom": "^19.2.5", + "react-markdown": "^9.0.1", + "rehype-autolink-headings": "^7.1.0", + "rehype-external-links": "^3.0.0", + "rehype-sanitize": "^6.0.0", + "rehype-slug": "^6.0.0", + "remark-breaks": "^4.0.0", + "remark-gfm": "^4.0.1", "sharp": "^0.34.4", "swr": "^2.3.3", - "to-ico": "^1.1.5", - "viem": "^2.38.2", + "tailwind-merge": "^2.6.0", + "viem": "^2.47.1", "wagmi": "^2.18.1" }, "packageManager": "pnpm@10.11.0", + "engines": { + "node": ">=20 <23", + "pnpm": ">=10" + }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", + "@tailwindcss/postcss": "^4.0.0", + "@tailwindcss/typography": "^0.5.16", "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "@types/to-ico": "^1.1.3", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", "@typescript-eslint/eslint-plugin": "^8.46.2", "@typescript-eslint/parser": "^8.46.2", + "@vitest/ui": "^4.1.7", + "babel-plugin-react-compiler": "^1.0.0", "dotenv": "^17.2.3", "eslint": "9.38.0", "eslint-config-next": "latest", @@ -65,7 +75,9 @@ "eslint-plugin-react": "7.37.5", "eslint-plugin-simple-import-sort": "^12.1.0", "eslint-plugin-unused-imports": "^4.3.0", + "tailwindcss": "^4.0.0", "tsx": "^4.20.6", - "typescript": "^5" + "typescript": "^5", + "vitest": "^4.1.7" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03f65c690..e723c3598 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,187 +8,187 @@ importers: .: dependencies: - '@ai-sdk/gateway': - specifier: ^2.0.1 - version: 2.0.1(zod@4.1.12) - '@buildeross/auction-ui': - specifier: 0.2.1 - version: 0.2.1(c9ae5cdf2b07f0bac9944517cffb353c) '@buildeross/constants': - specifier: 0.2.1 - version: 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/create-proposal-ui': - specifier: 0.2.1 - version: 0.2.1(c736f66ccb179f6c31d9de17145db021) - '@buildeross/dao-ui': - specifier: 0.2.1 - version: 0.2.1(0e25c020d2317340c3b4a863ccc780c7) + specifier: 0.3.2 + version: 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) '@buildeross/hooks': - specifier: 0.2.1 - version: 0.2.1(9462acc82b5989c9028c61f86b2f6543) + specifier: 0.3.2 + version: 0.3.2(98df817ebf727861d7c72c83ceb4ae74) '@buildeross/ipfs-service': - specifier: 0.2.1 - version: 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/proposal-ui': - specifier: 0.2.1 - version: 0.2.1(ca580cc096943ddea41afa570dee71f5) + specifier: 0.3.2 + version: 0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))) '@buildeross/sdk': - specifier: 0.2.1 - version: 0.2.1(9221b806ea8c584e5427371ffbc221f5) + specifier: 0.3.2 + version: 0.3.2(aee6836ad6f7f6cb0a314139be6744bb) '@buildeross/stores': - specifier: 0.2.1 - version: 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) + specifier: 0.3.2 + version: 0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) + '@buildeross/swap': + specifier: 0.3.2 + version: 0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)))(@buildeross/sdk@0.3.2(aee6836ad6f7f6cb0a314139be6744bb))(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) '@buildeross/types': - specifier: 0.2.1 - version: 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) + specifier: 0.3.2 + version: 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) '@buildeross/ui': - specifier: 0.2.1 - version: 0.2.1(2ea7fbee4993c37869f6e0b8b028d63d) + specifier: 0.3.2 + version: 0.3.2(81011f11958994f009ed4787c4d1a4dd) '@buildeross/utils': - specifier: 0.2.1 - version: 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@buildeross/zord': - specifier: 0.2.1 - version: 0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@fontsource/inter': - specifier: ^5.2.8 - version: 5.2.8 - '@fontsource/londrina-solid': - specifier: ^5.2.7 - version: 5.2.7 + specifier: 0.3.2 + version: 0.3.2(f2de31ba47dcf0f4e32efa838f9d8510) + '@radix-ui/react-slot': + specifier: ^1.1.2 + version: 1.2.4(@types/react@19.2.14)(react@19.2.5) '@rainbow-me/rainbowkit': specifier: ^2.2.5 - version: 2.2.9(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@smartinvoicexyz/types': - specifier: ^0.1.27 - version: 0.1.28(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/node@20.19.23)(@types/react@19.2.2)(bufferutil@4.0.9)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + version: 2.2.9(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) '@tanstack/react-query': specifier: ^5.90.3 - version: 5.90.5(react@19.2.0) - '@vanilla-extract/css': - specifier: ^1.17.2 - version: 1.17.4(babel-plugin-macros@3.1.0) - '@vanilla-extract/next-plugin': - specifier: ^2.4.11 - version: 2.4.14(babel-plugin-macros@3.1.0)(next@15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(webpack@5.102.1) - '@vanilla-extract/recipes': - specifier: ^0.5.7 - version: 0.5.7(@vanilla-extract/css@1.17.4(babel-plugin-macros@3.1.0)) - ai: - specifier: ^5.0.80 - version: 5.0.80(zod@4.1.12) - axios: - specifier: ^1.12.2 - version: 1.12.2 - ioredis: - specifier: ^5.8.1 - version: 5.8.2 + version: 5.90.5(react@19.2.5) + '@zoralabs/coins-sdk': + specifier: ^0.4.3 + version: 0.4.9(abitype@1.2.3(typescript@5.9.3)(zod@4.1.12))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@zoralabs/protocol-deployments': + specifier: ^0.7.2 + version: 0.7.5 + clanker-sdk: + specifier: ^4.2.10 + version: 4.2.16(@types/node@20.19.23)(typescript@5.9.3)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + lucide-react: + specifier: ^0.469.0 + version: 0.469.0(react@19.2.5) next: - specifier: ^15.3.2 - version: 15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: 16.2.4 + version: 16.2.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + next-themes: + specifier: ^0.4.4 + version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: - specifier: ^19.2.0 - version: 19.2.0 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.0 - version: 19.2.0(react@19.2.0) - react-mde: - specifier: ^11.5.0 - version: 11.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) + react-markdown: + specifier: ^9.0.1 + version: 9.1.0(@types/react@19.2.14)(react@19.2.5) + rehype-autolink-headings: + specifier: ^7.1.0 + version: 7.1.0 + rehype-external-links: + specifier: ^3.0.0 + version: 3.0.0 + rehype-sanitize: + specifier: ^6.0.0 + version: 6.0.0 + rehype-slug: + specifier: ^6.0.0 + version: 6.0.0 + remark-breaks: + specifier: ^4.0.0 + version: 4.0.0 + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 sharp: specifier: ^0.34.4 version: 0.34.4 swr: specifier: ^2.3.3 - version: 2.3.6(react@19.2.0) - to-ico: - specifier: ^1.1.5 - version: 1.1.5 + version: 2.3.6(react@19.2.5) + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.1 viem: - specifier: ^2.38.2 - version: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + specifier: ^2.47.1 + version: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) wagmi: specifier: ^2.18.1 - version: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + version: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) devDependencies: '@eslint/eslintrc': specifier: ^3.3.1 version: 3.3.1 + '@tailwindcss/postcss': + specifier: ^4.0.0 + version: 4.2.4 + '@tailwindcss/typography': + specifier: ^0.5.16 + version: 0.5.19(tailwindcss@4.2.4) '@types/node': specifier: ^20 version: 20.19.23 '@types/react': - specifier: ^19 - version: 19.2.2 + specifier: ^19.2.14 + version: 19.2.14 '@types/react-dom': - specifier: ^19 - version: 19.2.2(@types/react@19.2.2) - '@types/to-ico': - specifier: ^1.1.3 - version: 1.1.3 + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.14) '@typescript-eslint/eslint-plugin': specifier: ^8.46.2 - version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.46.2 - version: 8.46.2(eslint@9.38.0)(typescript@5.9.3) + version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@vitest/ui': + specifier: ^4.1.7 + version: 4.1.7(vitest@4.1.7) + babel-plugin-react-compiler: + specifier: ^1.0.0 + version: 1.0.0 dotenv: specifier: ^17.2.3 version: 17.2.3 eslint: specifier: 9.38.0 - version: 9.38.0 + version: 9.38.0(jiti@2.6.1) eslint-config-next: specifier: latest - version: 16.0.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + version: 16.0.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) eslint-config-prettier: specifier: 8.3.0 - version: 8.3.0(eslint@9.38.0) + version: 8.3.0(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0) + version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-prettier: specifier: ^5.2.6 - version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.3.0(eslint@9.38.0))(eslint@9.38.0)(prettier@3.6.2) + version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.3.0(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(prettier@3.6.2) eslint-plugin-react: specifier: 7.37.5 - version: 7.37.5(eslint@9.38.0) + version: 7.37.5(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-simple-import-sort: specifier: ^12.1.0 - version: 12.1.1(eslint@9.38.0) + version: 12.1.1(eslint@9.38.0(jiti@2.6.1)) eslint-plugin-unused-imports: specifier: ^4.3.0 - version: 4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0) + version: 4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)) + tailwindcss: + specifier: ^4.0.0 + version: 4.2.4 tsx: specifier: ^4.20.6 version: 4.20.6 typescript: specifier: ^5 version: 5.9.3 + vitest: + specifier: ^4.1.7 + version: 4.1.7(@opentelemetry/api@1.9.0)(@types/node@20.19.23)(@vitest/ui@4.1.7)(vite@8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)) packages: - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@ai-sdk/gateway@2.0.1': - resolution: {integrity: sha512-vPVIbnP35ZnayS937XLo85vynR85fpBQWHCdUweq7apzqFOTU2YkUd4V3msebEHbQ2Zro60ZShDDy9SMiyWTqA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - - '@ai-sdk/provider-utils@3.0.12': - resolution: {integrity: sha512-ZtbdvYxdMoria+2SlNarEk6Hlgyf+zzcznlD55EAl+7VZvJaSg2sqPvwArY7L6TfDEDJsnCq0fdhBSkYo0Xqdg==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - - '@ai-sdk/provider@2.0.0': - resolution: {integrity: sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==} - engines: {node: '>=18'} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} '@apollo/client@3.14.0': resolution: {integrity: sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==} @@ -242,10 +242,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -267,12 +263,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.4': resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} @@ -292,152 +282,94 @@ packages: '@base-org/account@1.1.1': resolution: {integrity: sha512-IfVJPrDPhHfqXRDb89472hXkpvJuQQR7FDI9isLPHEqSYt/45whIoBxSPgZ0ssTt379VhQo4+87PWI1DoLSfAQ==} - '@buildeross/auction-ui@0.2.1': - resolution: {integrity: sha512-mGgzvHsZjeErURR252f9aLe56n+H4Bvrex3NucycTzZbaDRyusONydV6RoCG3E9Wt1wUpJfOi5QChCbmk7/u8A==} + '@buildeross/blocklist@0.3.2': + resolution: {integrity: sha512-6ZBxaBIrwxAqbsWj4A2nrCCyBYaLhkowtkeZMH6jLw2Kf+poxAxJGgPDCyrXL/fdrKtuX779Uj99kuiEiUi/Gg==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/hooks': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/sdk': 0.2.1 - '@buildeross/stores': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/ui': 0.2.1 - '@buildeross/utils': 0.2.1 - '@buildeross/zord': 0.2.1 - react: ^19.2.0 - react-dom: ^19.2.0 - viem: ^2.38.2 - wagmi: ^2.18.1 - - '@buildeross/constants@0.2.1': - resolution: {integrity: sha512-2DaZJu+QSSmCd5C27+LcowkiLvFjG3FAVw13yvJdEMZEDa+xe0zPCeEITo5ddaCmX8mLPeXpVFSuwE/W4r1IBA==} - peerDependencies: - '@buildeross/types': 0.2.1 - wagmi: ^2.18.1 - - '@buildeross/create-proposal-ui@0.2.1': - resolution: {integrity: sha512-5FsfcdhRPb1wrNCqbklAaRk5j6gZxstrsPvEBW2b65EUaGzZbUuNfK0c+6eHTvPZfQwtZ2Vx1Q5tq1y2sJMnHA==} - peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/hooks': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/proposal-ui': 0.2.1 - '@buildeross/sdk': 0.2.1 - '@buildeross/stores': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/ui': 0.2.1 - '@buildeross/utils': 0.2.1 - '@buildeross/zord': 0.2.1 - '@sentry/nextjs': ^9.22.0 - react: ^19.2.0 - react-dom: ^19.2.0 - viem: ^2.38.2 - wagmi: ^2.18.1 - peerDependenciesMeta: - '@sentry/nextjs': - optional: true + react: ^19.2.1 + react-dom: ^19.2.1 + viem: ^2.47.1 - '@buildeross/dao-ui@0.2.1': - resolution: {integrity: sha512-8ttZEaLg/SFLW1t+xnesFULOtzGmmEn5GxeHlPm5ot+BOip++9Z4+tXTFQ9yW6rRCiqYfdiE3rCOfQKF2U4TKg==} + '@buildeross/constants@0.3.2': + resolution: {integrity: sha512-+UsXAQ6lFuNNiIrhvCw01dHVay12HvpudiItFv96xpk8eYN0oAdEyqWtrmCbwrzp2igkZ23saoVY/GsaPIUcnw==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/hooks': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/proposal-ui': 0.2.1 - '@buildeross/sdk': 0.2.1 - '@buildeross/stores': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/ui': 0.2.1 - '@buildeross/utils': 0.2.1 - '@buildeross/zord': 0.2.1 - react: ^19.2.0 - react-dom: ^19.2.0 - viem: ^2.38.2 + '@buildeross/types': 0.3.2 wagmi: ^2.18.1 - '@buildeross/hooks@0.2.1': - resolution: {integrity: sha512-OVm0SxS7Z4BZe8V7s7D5O4bskLUOf09uVeCJt0SYg4ybU7rC8ZoS6O065kG+nV4vm4NWn3p5EDpZ69406z9fmw==} + '@buildeross/hooks@0.3.2': + resolution: {integrity: sha512-+wQuLpYDb6QxxJBLrpProB08I3g3CsO3pEZgOgdPY2a9jaAClCPLftyud8Rw4dmAX0nL+45lcuK1WxQUH4dAsA==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/sdk': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/utils': 0.2.1 + '@buildeross/constants': 0.3.2 + '@buildeross/ipfs-service': 0.3.2 + '@buildeross/sdk': 0.3.2 + '@buildeross/types': 0.3.2 + '@buildeross/utils': 0.3.2 '@types/lodash': ^4.17.17 - react: ^19.2.0 - react-dom: ^19.2.0 - viem: ^2.38.2 + react: ^19.2.1 + react-dom: ^19.2.1 + viem: ^2.47.1 wagmi: ^2.18.1 - '@buildeross/ipfs-service@0.2.1': - resolution: {integrity: sha512-CQM5H7r0QoYwQDlOpr4cVPGYPcddyeDfHOEYWGmq3n198/A9I4Gh3BI28rYQT4tFIXPZnVKzNm1h7uv/xUMHcg==} - peerDependencies: - '@buildeross/constants': 0.2.1 - - '@buildeross/proposal-ui@0.2.1': - resolution: {integrity: sha512-4//La/7xqDu5MljM2ODYo3lHHND1iesbYG6Mee6qJuatAk/QDp508cOm9abvZLIFmZkNczFa/qG7uXw9wVU5Qw==} + '@buildeross/ipfs-service@0.3.2': + resolution: {integrity: sha512-0QsOgl2QFEtOmbb5vJqzOX65qL6QxBN4SxnRGIz6q6/D0YtN9KdW7xrlBTWvq0RvPYppQT2GcPJnrln+H7mE9Q==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/hooks': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/sdk': 0.2.1 - '@buildeross/stores': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/ui': 0.2.1 - '@buildeross/utils': 0.2.1 - '@buildeross/zord': 0.2.1 - react: ^19.2.0 - react-dom: ^19.2.0 - viem: ^2.38.2 - wagmi: ^2.18.1 + '@buildeross/constants': 0.3.2 - '@buildeross/sdk@0.2.1': - resolution: {integrity: sha512-baUt0kYQHCcmK1vanZNihGac5VVDiinzfJlrKOXrt1hCq3nOzMHoA0NuqZALP8CfQIQiQixzQkCVwTnaXV6kdQ==} + '@buildeross/sdk@0.3.2': + resolution: {integrity: sha512-VF1Ck3tjrWS55DueWwpt6MsY+jo88VPxSjdIDxQ2BX28BLwSjRS+DhOEwKl6T8FR3a6FPZUMwD9pN4qqrdco8w==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/utils': 0.2.1 + '@buildeross/constants': 0.3.2 + '@buildeross/types': 0.3.2 + '@buildeross/utils': 0.3.2 '@sentry/nextjs': ^9.22.0 - viem: ^2.38.2 + viem: ^2.47.1 wagmi: ^2.18.1 peerDependenciesMeta: '@sentry/nextjs': optional: true - '@buildeross/stores@0.2.1': - resolution: {integrity: sha512-5oD7y2WtmFR4aQjCIUXuc/lpyh38sVDSKep0xtL4Ym9iHUPKHzym1dF5bxCcfSe7cyCgGd0XRAePXr/R76ihkw==} + '@buildeross/stores@0.3.2': + resolution: {integrity: sha512-rY/ag+y71QxG9DI3DPyaerw9oJz+LUFcWXi+5VRdLv26OzzIQRdFxJrD1614npbNLjUL5kAEYyEqHLwKfVXeAA==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/types': 0.2.1 - react: ^19.2.0 + '@buildeross/constants': 0.3.2 + '@buildeross/types': 0.3.2 + react: ^19.2.1 - '@buildeross/types@0.2.1': - resolution: {integrity: sha512-AL7bEKUk9p9YtD3k8fxqzehCAt7/4RcgTFg/EzKgiy2TO2MHChoLU6gYPmuvOj8Sf9wFr2uobNvFxNZlRKkfuQ==} + '@buildeross/swap@0.3.2': + resolution: {integrity: sha512-D/R+80vZV87kpxOfoavTFXepzXxwjDxzHDcL6+X5qrUBVvGLm/Ogk6m9gP3hbrQfjunH2D/KY46pvz6rmKxheA==} peerDependencies: - viem: ^2.38.2 + '@buildeross/constants': 0.3.2 + '@buildeross/sdk': 0.3.2 + '@buildeross/types': 0.3.2 + viem: ^2.47.1 - '@buildeross/ui@0.2.1': - resolution: {integrity: sha512-7XtuvzzddcvJcPa43wyMlk3VzCnI12bNDm+YUChuRz5dv+Y9BU+Vm1ct7Faohlvkg9kCS8IWXYwFp7XuaJgYCg==} + '@buildeross/types@0.3.2': + resolution: {integrity: sha512-gRDMCiCjmsPLeX0BYnm6bwI+UfRDKaSR6D+dI1IVeKVbXQ2GtcP+3tfUFw7/d8mTrg6Q+rnkVSnxGGzLgKGTAg==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/hooks': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/sdk': 0.2.1 - '@buildeross/types': 0.2.1 - '@buildeross/utils': 0.2.1 - '@buildeross/zord': 0.2.1 - react: ^19.2.0 - react-dom: ^19.2.0 - viem: ^2.38.2 + viem: ^2.47.1 + + '@buildeross/ui@0.3.2': + resolution: {integrity: sha512-BzGbDO8rcYJbvYNS4vr2hFeO25aqAayzWinzwL3RyZBXujg8fGTKDeScx8omr5Awm9QXcxwVbUTwmdu3c+bmFQ==} + peerDependencies: + '@buildeross/constants': 0.3.2 + '@buildeross/hooks': 0.3.2 + '@buildeross/ipfs-service': 0.3.2 + '@buildeross/sdk': 0.3.2 + '@buildeross/types': 0.3.2 + '@buildeross/utils': 0.3.2 + '@buildeross/zord': 0.3.2 + react: ^19.2.1 + react-dom: ^19.2.1 + viem: ^2.47.1 wagmi: ^2.18.1 - '@buildeross/utils@0.2.1': - resolution: {integrity: sha512-qSOn/hnNvgpBocmV+uUkys5I7OzgVZ40+Bj8n+TAjdIIHLHvauj5fawVkas/NceyTmIZeYDNngeHIxAMuMUnrQ==} + '@buildeross/utils@0.3.2': + resolution: {integrity: sha512-WafcgJxtVOxwIq6TB2CD0Gn9MejsQx3h6HBae88A8muMpZRiJDYV5PnqnyEw9wNWmuyC/Gig8dk2/SXJG8QjSw==} peerDependencies: - '@buildeross/constants': 0.2.1 - '@buildeross/ipfs-service': 0.2.1 - '@buildeross/types': 0.2.1 - viem: ^2.38.2 + '@buildeross/blocklist': 0.3.2 + '@buildeross/constants': 0.3.2 + '@buildeross/ipfs-service': 0.3.2 + '@buildeross/types': 0.3.2 + viem: ^2.47.1 wagmi: ^2.18.1 yup: ^1.6.1 @@ -488,6 +420,20 @@ packages: '@coinbase/wallet-sdk@4.3.6': resolution: {integrity: sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==} + '@coral-xyz/anchor-errors@0.30.1': + resolution: {integrity: sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ==} + engines: {node: '>=10'} + + '@coral-xyz/anchor@0.30.1': + resolution: {integrity: sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ==} + engines: {node: '>=11'} + + '@coral-xyz/borsh@0.30.1': + resolution: {integrity: sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.68.0 + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -498,15 +444,24 @@ packages: peerDependencies: '@noble/ciphers': ^1.0.0 + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.6.0': resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.6.0': resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -755,12 +710,6 @@ packages: resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ethereum-attestation-service/eas-contracts@1.7.1': - resolution: {integrity: sha512-z2MeCrkp4JrtOMBHQt5fcdbxryC+xxofoPzzv3wcx5GbfG27PpkXRKxlSlb1l2jIT1YfDc701rixbP6vHaEN3Q==} - - '@ethereum-attestation-service/eas-sdk@2.9.0': - resolution: {integrity: sha512-jEtBlhfm0HFkl64jAa4rxOXjEQkblTHqSmLFhttPf9y+ALEOk4qgJzV9knnJ7Yh+jFs1jxbTrVeUGap03Fwy9g==} - '@ethereumjs/common@3.2.0': resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} @@ -769,6 +718,11 @@ packages: engines: {node: '>=14'} hasBin: true + '@ethereumjs/rlp@5.0.2': + resolution: {integrity: sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==} + engines: {node: '>=18'} + hasBin: true + '@ethereumjs/tx@4.2.0': resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} engines: {node: '>=14'} @@ -777,6 +731,10 @@ packages: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + '@ethereumjs/util@9.1.0': + resolution: {integrity: sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==} + engines: {node: '>=18'} + '@ethersproject/abi@5.8.0': resolution: {integrity: sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==} @@ -801,12 +759,12 @@ packages: '@ethersproject/constants@5.8.0': resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - '@ethersproject/hash@5.8.0': resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==} + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + '@ethersproject/keccak256@5.8.0': resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} @@ -822,15 +780,21 @@ packages: '@ethersproject/rlp@5.8.0': resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} + '@ethersproject/sha2@5.8.0': + resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==} + '@ethersproject/signing-key@5.8.0': resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==} + '@ethersproject/solidity@5.8.0': + resolution: {integrity: sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + '@ethersproject/strings@5.8.0': resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - '@ethersproject/transactions@5.8.0': resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==} @@ -841,12 +805,6 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@fontsource/inter@5.2.8': - resolution: {integrity: sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg==} - - '@fontsource/londrina-solid@5.2.7': - resolution: {integrity: sha512-jESt0e2k2MCjSttOYuhof05rr6THnI5MO+J4eYj0RcwblvI3NfZPfsUwfjDiYoOAZfIgnwOZVZd3F3ORgshtew==} - '@gemini-wallet/core@0.2.0': resolution: {integrity: sha512-vv9aozWnKrrPWQ3vIFcWk7yta4hQW1Ie0fsNNPeXnjAxkbXr2hqMagEptLuMxpEP2W3mnRu05VDNKzcvAuuZDw==} peerDependencies: @@ -857,6 +815,10 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@hey-api/client-fetch@0.8.4': + resolution: {integrity: sha512-SWtUjVEFIUdiJGR2NiuF0njsSrSdTe7WHWkp3BLH3DEl2bRhiflOnBo29NSDdrY90hjtTQiTQkBxUgGOF29Xzg==} + deprecated: Starting with v0.73.0, this package is bundled directly inside @hey-api/openapi-ts. + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -883,122 +845,255 @@ packages: cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.34.4': resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.2.3': resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.3': resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.2.3': resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linux-arm@1.2.3': resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} cpu: [arm] os: [linux] + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + '@img/sharp-libvips-linux-ppc64@1.2.3': resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} cpu: [ppc64] os: [linux] + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + '@img/sharp-libvips-linux-s390x@1.2.3': resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} cpu: [s390x] os: [linux] + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + '@img/sharp-libvips-linux-x64@1.2.3': resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.2.3': resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + '@img/sharp-linux-arm64@0.34.4': resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linux-arm@0.34.4': resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + '@img/sharp-linux-ppc64@0.34.4': resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + '@img/sharp-linux-s390x@0.34.4': resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + '@img/sharp-linux-x64@0.34.4': resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.4': resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linuxmusl-x64@0.34.4': resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-wasm32@0.34.4': resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + '@img/sharp-win32-arm64@0.34.4': resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-ia32@0.34.4': resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-x64@0.34.4': resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@inquirer/external-editor@1.0.2': resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} engines: {node: '>=18'} @@ -1051,10 +1146,6 @@ packages: resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} - '@metamask/eth-sig-util@4.0.1': - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} - '@metamask/json-rpc-engine@7.3.3': resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} engines: {node: '>=16.0.0'} @@ -1131,63 +1222,65 @@ packages: resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} - '@msgpack/msgpack@3.1.2': - resolution: {integrity: sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==} - engines: {node: '>= 18'} - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/env@15.5.6': - resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==} + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@next/env@16.2.4': + resolution: {integrity: sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==} '@next/eslint-plugin-next@16.0.0': resolution: {integrity: sha512-IB7RzmmtrPOrpAgEBR1PIQPD0yea5lggh5cq54m51jHjjljU80Ia+czfxJYMlSDl1DPvpzb8S9TalCc0VMo9Hw==} - '@next/swc-darwin-arm64@15.5.6': - resolution: {integrity: sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==} + '@next/swc-darwin-arm64@16.2.4': + resolution: {integrity: sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.6': - resolution: {integrity: sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==} + '@next/swc-darwin-x64@16.2.4': + resolution: {integrity: sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.6': - resolution: {integrity: sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==} + '@next/swc-linux-arm64-gnu@16.2.4': + resolution: {integrity: sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.6': - resolution: {integrity: sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==} + '@next/swc-linux-arm64-musl@16.2.4': + resolution: {integrity: sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.6': - resolution: {integrity: sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==} + '@next/swc-linux-x64-gnu@16.2.4': + resolution: {integrity: sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.6': - resolution: {integrity: sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==} + '@next/swc-linux-x64-musl@16.2.4': + resolution: {integrity: sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.6': - resolution: {integrity: sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==} + '@next/swc-win32-arm64-msvc@16.2.4': + resolution: {integrity: sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.6': - resolution: {integrity: sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==} + '@next/swc-win32-x64-msvc@16.2.4': + resolution: {integrity: sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1200,9 +1293,6 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} @@ -1229,10 +1319,6 @@ packages: '@noble/hashes@1.2.0': resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -1268,63 +1354,37 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nomicfoundation/edr-darwin-arm64@0.3.8': - resolution: {integrity: sha512-eB0leCexS8sQEmfyD72cdvLj9djkBzQGP4wSQw6SNf2I4Sw4Cnzb3d45caG2FqFFjbvfqL0t+badUUIceqQuMw==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-darwin-x64@0.3.8': - resolution: {integrity: sha512-JksVCS1N5ClwVF14EvO25HCQ+Laljh/KRfHERMVAC9ZwPbTuAd/9BtKvToCBi29uCHWqsXMI4lxCApYQv2nznw==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-arm64-gnu@0.3.8': - resolution: {integrity: sha512-raCE+fOeNXhVBLUo87cgsHSGvYYRB6arih4eG6B9KGACWK5Veebtm9xtKeiD8YCsdUlUfat6F7ibpeNm91fpsA==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-arm64-musl@0.3.8': - resolution: {integrity: sha512-PwiDp4wBZWMCIy29eKkv8moTKRrpiSDlrc+GQMSZLhOAm8T33JKKXPwD/2EbplbhCygJDGXZdtEKl9x9PaH66A==} - engines: {node: '>= 18'} - - '@nomicfoundation/edr-linux-x64-gnu@0.3.8': - resolution: {integrity: sha512-6AcvA/XKoipGap5jJmQ9Y6yT7Uf39D9lu2hBcDCXnXbMcXaDGw4mn1/L4R63D+9VGZyu1PqlcJixCUZlGGIWlg==} - engines: {node: '>= 18'} + '@nomicfoundation/edr-darwin-arm64@0.12.0-next.23': + resolution: {integrity: sha512-Amh7mRoDzZyJJ4efqoePqdoZOzharmSOttZuJDlVE5yy07BoE8hL6ZRpa5fNYn0LCqn/KoWs8OHANWxhKDGhvQ==} + engines: {node: '>= 20'} - '@nomicfoundation/edr-linux-x64-musl@0.3.8': - resolution: {integrity: sha512-cxb0sEmZjlwhYWO28sPsV64VDx31ekskhC1IsDXU1p9ntjHSJRmW4KEIqJ2O3QwJap/kLKfMS6TckvY10gjc6w==} - engines: {node: '>= 18'} + '@nomicfoundation/edr-darwin-x64@0.12.0-next.23': + resolution: {integrity: sha512-9wn489FIQm7m0UCD+HhktjWx6vskZzeZD9oDc2k9ZvbBzdXwPp5tiDqUBJ+eQpByAzCDfteAJwRn2lQCE0U+Iw==} + engines: {node: '>= 20'} - '@nomicfoundation/edr-win32-x64-msvc@0.3.8': - resolution: {integrity: sha512-yVuVPqRRNLZk7TbBMkKw7lzCvI8XO8fNTPTYxymGadjr9rEGRuNTU1yBXjfJ59I1jJU/X2TSkRk1OFX0P5tpZQ==} - engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.23': + resolution: {integrity: sha512-nlk5EejSzEUfEngv0Jkhqq3/wINIfF2ED9wAofc22w/V1DV99ASh9l3/e/MIHOQFecIZ9MDqt0Em9/oDyB1Uew==} + engines: {node: '>= 20'} - '@nomicfoundation/edr@0.3.8': - resolution: {integrity: sha512-u2UJ5QpznSHVkZRh6ePWoeVb6kmPrrqh08gCnZ9FHlJV9CITqlrTQHJkacd+INH31jx88pTAJnxePE4XAiH5qg==} - engines: {node: '>= 18'} + '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.23': + resolution: {integrity: sha512-SJuPBp3Rc6vM92UtVTUxZQ/QlLhLfwTftt2XUiYohmGKB3RjGzpgduEFMCA0LEnucUckU6UHrJNFHiDm77C4PQ==} + engines: {node: '>= 20'} - '@nomicfoundation/ethereumjs-common@4.0.4': - resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.23': + resolution: {integrity: sha512-NU+Qs3u7Qt6t3bJFdmmjd5CsvgI2bPPzO31KifM2Ez96/jsXYho5debtTQnimlb5NAqiHTSlxjh/F8ROcptmeQ==} + engines: {node: '>= 20'} - '@nomicfoundation/ethereumjs-rlp@5.0.4': - resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} - engines: {node: '>=18'} - hasBin: true + '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.23': + resolution: {integrity: sha512-F78fZA2h6/ssiCSZOovlgIu0dUeI7ItKPsDDF3UUlIibef052GCXmliMinC90jVPbrjUADMd1BUwjfI0Z8OllQ==} + engines: {node: '>= 20'} - '@nomicfoundation/ethereumjs-tx@5.0.4': - resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true + '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.23': + resolution: {integrity: sha512-IfJZQJn7d/YyqhmguBIGoCKjE9dKjbu6V6iNEPApfwf5JyyjHYyyfkLU4rf7hygj57bfH4sl1jtQ6r8HnT62lw==} + engines: {node: '>= 20'} - '@nomicfoundation/ethereumjs-util@9.0.4': - resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} - engines: {node: '>=18'} - peerDependencies: - c-kzg: ^2.1.2 - peerDependenciesMeta: - c-kzg: - optional: true + '@nomicfoundation/edr@0.12.0-next.23': + resolution: {integrity: sha512-F2/6HZh8Q9RsgkOIkRrckldbhPjIZY7d4mT9LYuW68miwGQ5l7CkAgcz9fRRiurA0+YJhtsbx/EyrD9DmX9BOw==} + engines: {node: '>= 20'} '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} @@ -1546,9 +1606,18 @@ packages: peerDependencies: '@opentelemetry/api': ^1.1.0 + '@openzeppelin/contracts@3.4.1-solc-0.7-2': + resolution: {integrity: sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q==} + + '@openzeppelin/contracts@3.4.2-solc-0.7': + resolution: {integrity: sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==} + '@openzeppelin/merkle-tree@1.0.8': resolution: {integrity: sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow==} + '@oxc-project/types@0.132.0': + resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==} + '@paulmillr/qr@0.2.1': resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==} deprecated: 'The package is now available as "qr": npm install qr' @@ -1557,6 +1626,9 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} @@ -1565,6 +1637,24 @@ packages: peerDependencies: '@opentelemetry/api': ^1.8 + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@rainbow-me/rainbowkit@2.2.9': resolution: {integrity: sha512-zXAeqkqpznpj9yEs1bTbpZbq0pVYKdJUnqqK/nI8xyYFDWchIOyBoEb/4+goT5RaHfGbDe9dp6pIEu/KelKE6A==} engines: {node: '>=12.4'} @@ -1604,6 +1694,98 @@ packages: '@reown/appkit@1.7.8': resolution: {integrity: sha512-51kTleozhA618T1UvMghkhKfaPcc9JlKwLJ5uV+riHyvSoWPKPRIa5A6M1Wano5puNyW0s3fwywhyqTHSilkaA==} + '@rolldown/binding-android-arm64@1.0.2': + resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.2': + resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.2': + resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.2': + resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.2': + resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.2': + resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.0.2': + resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.2': + resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.2': + resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.2': + resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.2': + resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.2': + resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.2': + resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/plugin-commonjs@28.0.1': resolution: {integrity: sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==} engines: {node: '>=16.0.0 || 14 >= 14.17'} @@ -1954,65 +2136,130 @@ packages: '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@stablelib/aead@1.0.1': - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} - '@stablelib/binary@1.0.1': - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} - - '@stablelib/bytes@1.0.1': - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + '@solana/codecs-core@2.3.0': + resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' - '@stablelib/chacha20poly1305@1.0.1': - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + '@solana/codecs-numbers@2.3.0': + resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' - '@stablelib/chacha@1.0.1': - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + '@solana/errors@2.3.0': + resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.3.3' - '@stablelib/constant-time@1.0.1': - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + '@solana/web3.js@1.98.4': + resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==} - '@stablelib/ed25519@1.0.3': - resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@stablelib/hash@1.0.1': - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@stablelib/hkdf@1.0.1': - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + '@tailwindcss/node@4.2.4': + resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} - '@stablelib/hmac@1.0.1': - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + '@tailwindcss/oxide-android-arm64@4.2.4': + resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] - '@stablelib/int@1.0.1': - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + '@tailwindcss/oxide-darwin-arm64@4.2.4': + resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] - '@stablelib/keyagreement@1.0.1': - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + '@tailwindcss/oxide-darwin-x64@4.2.4': + resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] - '@stablelib/poly1305@1.0.1': - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + '@tailwindcss/oxide-freebsd-x64@4.2.4': + resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] - '@stablelib/random@1.0.2': - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] - '@stablelib/sha256@1.0.1': - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] - '@stablelib/sha512@1.0.1': - resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] - '@stablelib/wipe@1.0.1': - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] - '@stablelib/x25519@1.0.3': - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + resolution: {integrity: sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.2.4': + resolution: {integrity: sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.2.4': + resolution: {integrity: sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg==} + + '@tailwindcss/typography@0.5.19': + resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' '@tanstack/query-core@5.90.5': resolution: {integrity: sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w==} @@ -2037,11 +2284,8 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/bn.js@4.11.6': - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} - - '@types/bn.js@5.2.0': - resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -2049,6 +2293,9 @@ packages: '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -2084,9 +2331,6 @@ packages: '@types/lodash@4.17.20': resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} - '@types/lru-cache@5.1.1': - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -2099,34 +2343,28 @@ packages: '@types/node@11.15.54': resolution: {integrity: sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g==} + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.19.23': resolution: {integrity: sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==} - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - '@types/pbkdf2@3.1.2': - resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} - '@types/pg-pool@2.0.6': resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} '@types/pg@8.6.1': resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} - '@types/react-dom@19.2.2': - resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 - '@types/react@19.2.2': - resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} - - '@types/secp256k1@4.0.7': - resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} @@ -2134,9 +2372,6 @@ packages: '@types/tedious@4.0.14': resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} - '@types/to-ico@1.1.3': - resolution: {integrity: sha512-3Ew8Hsz/qiDGzwvz75pjRU+6Ocfvrit6hHfirauEdJXxdro73MTe5XdcANh4GZ2wdJqWw9BIuHwWgKAfjUXoGw==} - '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -2146,6 +2381,15 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@typescript-eslint/eslint-plugin@8.46.2': resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2208,6 +2452,44 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@uniswap/lib@4.0.1-alpha': + resolution: {integrity: sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==} + engines: {node: '>=10'} + + '@uniswap/sdk-core@7.13.0': + resolution: {integrity: sha512-rfRruH0vu4hdG1iV8E7XbpqXB4ffMWAfjQ1zEUExirSnOaxe3DtGlBjoiD/uufb3ZbYcKdfKrqcheqK/OhxMpQ==} + engines: {node: '>=18'} + + '@uniswap/swap-router-contracts@1.3.1': + resolution: {integrity: sha512-mh/YNbwKb7Mut96VuEtL+Z5bRe0xVIbjjiryn+iMMrK2sFKhR4duk/86mEz0UO5gSx4pQIw9G5276P5heY/7Rg==} + engines: {node: '>=10'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@uniswap/v2-core@1.0.1': + resolution: {integrity: sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==} + engines: {node: '>=10'} + + '@uniswap/v3-core@1.0.0': + resolution: {integrity: sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA==} + engines: {node: '>=10'} + + '@uniswap/v3-core@1.0.1': + resolution: {integrity: sha512-7pVk4hEm00j9tc71Y9+ssYpO6ytkeI0y7WE9P6UcmNzhxPePwyAxImuhVsTqWK9YFvzgtvzJHi64pBl4jUzKMQ==} + engines: {node: '>=10'} + + '@uniswap/v3-periphery@1.4.4': + resolution: {integrity: sha512-S4+m+wh8HbWSO3DKk4LwUCPZJTpCugIsHrWR86m/OrUyvSqGDTXKFfc2sMuGXCZrD1ZqO3rhQsKgdWg3Hbb2Kw==} + engines: {node: '>=10'} + + '@uniswap/v3-sdk@3.30.0': + resolution: {integrity: sha512-3AMxJigAiUVguYupzaVLTN9Myx8sbWOqOtod8JBtrbYQ9PImqpMmscpMSbeICoEfeUa0QiY9Me0r9CYcNjBwIA==} + engines: {node: '>=18'} + + '@uniswap/v3-staker@1.0.0': + resolution: {integrity: sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw==} + engines: {node: '>=10'} + deprecated: Please upgrade to 1.0.1 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} cpu: [arm] @@ -2303,9 +2585,6 @@ packages: cpu: [x64] os: [win32] - '@vanilla-extract/babel-plugin-debug-ids@1.2.2': - resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} - '@vanilla-extract/css@1.17.3': resolution: {integrity: sha512-jHivr1UPoJTX5Uel4AZSOwrCf4mO42LcdmnhJtUxZaRWhW4FviFbIfs0moAWWld7GOT+2XnuVZjjA/K32uUnMQ==} @@ -2315,14 +2594,6 @@ packages: '@vanilla-extract/dynamic@2.1.4': resolution: {integrity: sha512-7+Ot7VlP3cIzhJnTsY/kBtNs21s0YD7WI1rKJJKYP56BkbDxi/wrQUWMGEczKPUDkJuFcvbye+E2ub1u/mHH9w==} - '@vanilla-extract/integration@8.0.4': - resolution: {integrity: sha512-cmOb7tR+g3ulKvFtSbmdw3YUyIS1d7MQqN+FcbwNhdieyno5xzUyfDCMjeWJhmCSMvZ6WlinkrOkgs6SHB+FRg==} - - '@vanilla-extract/next-plugin@2.4.14': - resolution: {integrity: sha512-5GRgVZayLNvXJVHwVWNZp7rDAgXmF5DAyVtp9O5ZxPoOuokLWwTaIw1bYALXs/uCaeAUwilK5p14peagzFbe2w==} - peerDependencies: - next: '>=12.1.7' - '@vanilla-extract/private@1.0.9': resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} @@ -2341,14 +2612,39 @@ packages: peerDependencies: '@vanilla-extract/css': ^1.0.0 - '@vanilla-extract/webpack-plugin@2.3.22': - resolution: {integrity: sha512-3Cx8DkbX3EeLHGbD049jjj6/bWB0VK4YFfWWsf8VXBI8dgf5SvEef1VfET22IOcT9GzLl8MqfsLr/XSo9iv67Q==} + '@vitest/expect@4.1.7': + resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==} + + '@vitest/mocker@4.1.7': + resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} peerDependencies: - webpack: ^4.30.0 || ^5.20.2 + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - '@vercel/oidc@3.0.3': - resolution: {integrity: sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg==} - engines: {node: '>= 20'} + '@vitest/pretty-format@4.1.7': + resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==} + + '@vitest/runner@4.1.7': + resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==} + + '@vitest/snapshot@4.1.7': + resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==} + + '@vitest/spy@4.1.7': + resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==} + + '@vitest/ui@4.1.7': + resolution: {integrity: sha512-TP6utB2yX6rsJNVRo2qAlsi48i1YwFTrLV2tnTtWqJaYX7m4lRCCLirZBjU6xC5m0RsPHr+L2+N+eIPhgEzFfw==} + peerDependencies: + vitest: 4.1.7 + + '@vitest/utils@4.1.7': + resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==} '@wagmi/connectors@6.1.0': resolution: {integrity: sha512-MnpJHEABUIsajNxLc6br0LiqJvoFZbavQ6yG+mQb7Xlb3Hmm3IRjH5NU1g2zw5PCTRd3BFQLjwniLdwDnUPYNw==} @@ -2372,14 +2668,6 @@ packages: typescript: optional: true - '@walletconnect/auth-client@2.1.2': - resolution: {integrity: sha512-ubJLn+vGb8sTdBFX6xAh4kjR5idrtS3RBngQWaJJJpEPBQmxMb8pM2q0FIRs8Is4K6jKy+uEhusMV+7ZBmTzjw==} - engines: {node: '>=16'} - - '@walletconnect/core@2.17.1': - resolution: {integrity: sha512-SMgJR5hEyEE/tENIuvlEb4aB9tmMXPzQ38Y61VgYBmwAFEhOHtpt8EDfnfRWqEhMyXuBXG4K70Yh8c67Yry+Xw==} - engines: {node: '>=18'} - '@walletconnect/core@2.21.0': resolution: {integrity: sha512-o6R7Ua4myxR8aRUAJ1z3gT9nM+jd2B2mfamu6arzy1Cc6vi10fIwFWb6vg3bC8xJ6o9H3n/cN5TOW3aA9Y1XVw==} engines: {node: '>=18'} @@ -2388,10 +2676,6 @@ packages: resolution: {integrity: sha512-Tp4MHJYcdWD846PH//2r+Mu4wz1/ZU/fr9av1UWFiaYQ2t2TPLDiZxjLw54AAEpMqlEHemwCgiRiAmjR1NDdTQ==} engines: {node: '>=18'} - '@walletconnect/core@2.22.4': - resolution: {integrity: sha512-ZQnyDDpqDPAk5lyLV19BRccQ3wwK3LmAwibuIv3X+44aT/dOs2kQGu9pla3iW2LgZ5qRMYvgvvfr5g3WlDGceQ==} - engines: {node: '>=18.20.8'} - '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} @@ -2416,9 +2700,6 @@ packages: '@walletconnect/jsonrpc-utils@1.0.8': resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} - '@walletconnect/jsonrpc-ws-connection@1.0.14': - resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} - '@walletconnect/jsonrpc-ws-connection@1.0.16': resolution: {integrity: sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==} @@ -2433,25 +2714,15 @@ packages: '@walletconnect/logger@2.1.2': resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} - '@walletconnect/logger@3.0.0': - resolution: {integrity: sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==} - '@walletconnect/relay-api@1.0.11': resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} - '@walletconnect/relay-auth@1.0.4': - resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} - '@walletconnect/relay-auth@1.1.0': resolution: {integrity: sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==} '@walletconnect/safe-json@1.0.2': resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} - '@walletconnect/sign-client@2.17.1': - resolution: {integrity: sha512-6rLw6YNy0smslH9wrFTbNiYrGsL3DrOsS5FcuU4gIN6oh8pGYOFZ5FiSyTTroc5tngOk3/Sd7dlGY9S7O4nveg==} - deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' - '@walletconnect/sign-client@2.21.0': resolution: {integrity: sha512-z7h+PeLa5Au2R591d/8ZlziE0stJvdzP9jNFzFolf2RG/OiXulgFKum8PrIyXy+Rg2q95U9nRVUF9fWcn78yBA==} @@ -2461,40 +2732,24 @@ packages: '@walletconnect/time@1.0.2': resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} - '@walletconnect/types@2.17.1': - resolution: {integrity: sha512-aiUeBE3EZZTsZBv5Cju3D0PWAsZCMks1g3hzQs9oNtrbuLL6pKKU0/zpKwk4vGywszxPvC3U0tBCku9LLsH/0A==} - '@walletconnect/types@2.21.0': resolution: {integrity: sha512-ll+9upzqt95ZBWcfkOszXZkfnpbJJ2CmxMfGgE5GmhdxxxCcO5bGhXkI+x8OpiS555RJ/v/sXJYMSOLkmu4fFw==} '@walletconnect/types@2.21.1': resolution: {integrity: sha512-UeefNadqP6IyfwWC1Yi7ux+ljbP2R66PLfDrDm8izmvlPmYlqRerJWJvYO4t0Vvr9wrG4Ko7E0c4M7FaPKT/sQ==} - '@walletconnect/types@2.22.4': - resolution: {integrity: sha512-KJdiS9ezXzx1uASanldYaaenDwb42VOQ6Rj86H7FRwfYddhNnYnyEaDjDKOdToGRGcpt5Uzom6qYUOnrWEbp5g==} - '@walletconnect/universal-provider@2.21.0': resolution: {integrity: sha512-mtUQvewt+X0VBQay/xOJBvxsB3Xsm1lTwFjZ6WUwSOTR1X+FNb71hSApnV5kbsdDIpYPXeQUbGt2se1n5E5UBg==} '@walletconnect/universal-provider@2.21.1': resolution: {integrity: sha512-Wjx9G8gUHVMnYfxtasC9poGm8QMiPCpXpbbLFT+iPoQskDDly8BwueWnqKs4Mx2SdIAWAwuXeZ5ojk5qQOxJJg==} - '@walletconnect/utils@2.17.1': - resolution: {integrity: sha512-KL7pPwq7qUC+zcTmvxGqIyYanfHgBQ+PFd0TEblg88jM7EjuDLhjyyjtkhyE/2q7QgR7OanIK7pCpilhWvBsBQ==} - '@walletconnect/utils@2.21.0': resolution: {integrity: sha512-zfHLiUoBrQ8rP57HTPXW7rQMnYxYI4gT9yTACxVW6LhIFROTF6/ytm5SKNoIvi4a5nX5dfXG4D9XwQUCu8Ilig==} '@walletconnect/utils@2.21.1': resolution: {integrity: sha512-VPZvTcrNQCkbGOjFRbC24mm/pzbRMUq2DSQoiHlhh0X1U7ZhuIrzVtAoKsrzu6rqjz0EEtGxCr3K1TGRqDG4NA==} - '@walletconnect/utils@2.22.4': - resolution: {integrity: sha512-coAPrNiTiD+snpiXQyXakMVeYcddqVqII7aLU39TeILdPoXeNPc2MAja+MF7cKNM/PA3tespljvvxck/oTm4+Q==} - - '@walletconnect/web3wallet@1.16.1': - resolution: {integrity: sha512-l6jVoLEh/UtRfvYUDs52fN+LYXsBgx3F9WfErJuCSCFfpbxDKIzM2Y9sI0WI1/5dWN5sh24H1zNCXnQ4JJltZw==} - deprecated: Web3Wallet is now Reown WalletKit. Please follow the upgrade guide at https://docs.reown.com/walletkit/upgrade/from-web3wallet-web - '@walletconnect/window-getters@1.0.1': resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} @@ -2577,6 +2832,16 @@ packages: '@zag-js/focus-visible@0.31.1': resolution: {integrity: sha512-dbLksz7FEwyFoANbpIlNnd3bVm0clQSUsnP8yUVQucStZPsuWjCrhL2jlAbGNrTrahX96ntUMXHb/sM68TibFg==} + '@zoralabs/coins-sdk@0.4.9': + resolution: {integrity: sha512-pLZM6RiCdpuXTSpnHlauMv558MTndOvvCn7TWcbo6nSGYf0jaXPP4Vv7cFqYfeyMlHc6sET4oqumKlYPRjY1qQ==} + engines: {node: '>=22'} + peerDependencies: + abitype: ^1.0.8 + viem: 2.22.12 + + '@zoralabs/protocol-deployments@0.7.5': + resolution: {integrity: sha512-LtvwBipo0Rpz5OefWfaoxpSnfxFIlTSMYcExmHYSxU+XS9REUS3cjvAH2YxQjhlvmHVMUlJ3bcDAbchnlY+ucQ==} + abitype@1.0.8: resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} peerDependencies: @@ -2588,19 +2853,8 @@ packages: zod: optional: true - abitype@1.1.0: - resolution: {integrity: sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3.22.0 || ^4.0.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - - abitype@1.1.1: - resolution: {integrity: sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q==} + abitype@1.2.3: + resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==} peerDependencies: typescript: '>=5.0.4' zod: ^3.22.0 || ^4.0.0 @@ -2647,23 +2901,18 @@ packages: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} - aes-js@4.0.0-beta.5: - resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} - agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} - ai@5.0.80: - resolution: {integrity: sha512-g1o6pjxm1eTtyh295dRhsg0gvZaHFlSo2oruWrK2rIR7KafWEhNB2A2/aJ9hyPT9AMI8JnQJyto1Tl9DMqwc9w==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2702,10 +2951,6 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -2778,16 +3023,9 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -2802,9 +3040,6 @@ packages: async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -2817,19 +3052,10 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - axe-core@4.11.0: resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} engines: {node: '>=4'} - axios@1.12.2: - resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -2838,6 +3064,9 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} + babel-plugin-react-compiler@1.0.0: + resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -2853,22 +3082,24 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-sol@1.0.1: + resolution: {integrity: sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==} + + baseline-browser-mapping@2.10.27: + resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==} + engines: {node: '>=6.0.0'} + hasBin: true + baseline-browser-mapping@2.8.19: resolution: {integrity: sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==} hasBin: true - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} - bignumber.js@2.4.0: - resolution: {integrity: sha512-uw4ra6Cv483Op/ebM0GBKKfxZlSmn6NgFRby5L3yGTlunLj53KQgndDlqy2WVFOwgvurocApYkSud0aO+mvrpQ==} - bignumber.js@9.3.1: resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} @@ -2882,17 +3113,8 @@ packages: bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} - blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - - bmp-js@0.0.1: - resolution: {integrity: sha512-OS74Rlt0Aynu2mTPmY9RZOUOXlqWecFIILFXr70vv16/xCZnFxvri9IKkF1IGxQ8r9dOE62qGNpKxXx8Lko8bg==} - - bmp-js@0.0.3: - resolution: {integrity: sha512-epsm3Z92j5xwek9p97pVw3KbsNc0F4QnbYh+N93SpbJYuHFQQ/UAh6K+bKFGyLePH3Hudtl/Sa95Quqp0gX8IQ==} - - bn.js@4.12.2: - resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + bn.js@4.12.3: + resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} bn.js@5.2.2: resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} @@ -2901,6 +3123,9 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + bowser@2.12.1: resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} @@ -2924,9 +3149,6 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - browserslist@4.26.3: resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2938,30 +3160,15 @@ packages: bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-equal@0.0.1: - resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} - engines: {node: '>=0.4.0'} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + buffer-layout@1.2.2: + resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} + engines: {node: '>=4.5'} buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -3004,18 +3211,12 @@ packages: caniuse-lite@1.0.30001751: resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} - caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - centra@2.7.0: - resolution: {integrity: sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -3059,13 +3260,18 @@ packages: ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - cipher-base@1.0.7: - resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} - engines: {node: '>= 0.10'} - cjs-module-lexer@1.4.3: resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + clanker-sdk@4.2.16: + resolution: {integrity: sha512-0IYawR515W2JScOIOU20cnkSlAw9x3/Hhbuf4iBapujruKC6v06rY+h03pqH5GsfpPLmWd95CoOil97byTpfDw==} + hasBin: true + peerDependencies: + viem: ^2.38.3 + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -3086,6 +3292,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -3123,37 +3333,32 @@ packages: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} color2k@2.0.3: resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 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@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -3169,9 +3374,6 @@ packages: resolution: {integrity: sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==} engines: {node: '>=12'} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - config-maker@0.0.6: resolution: {integrity: sha512-rZHlWzwZCDX4lUOTORNcCTvl0LqYMXbB+mLqdIvwqv5bF0EC1b0nOydVlPQS3b2iTzBOcZRuOYhDjqix0IjWTw==} @@ -3206,9 +3408,6 @@ packages: copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3225,12 +3424,6 @@ packages: resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} engines: {node: '>= 10'} - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -3251,6 +3444,10 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + crypto-hash@1.3.0: + resolution: {integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==} + engines: {node: '>=8'} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -3263,6 +3460,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cuer@0.0.3: resolution: {integrity: sha512-f/UNxRMRCYtfLEGECAViByA3JNflZImOk11G9hwSd+44jvzrc99J35u5l+fbdQ2+ZG441GvOpaeGYBmWquZsbQ==} peerDependencies: @@ -3276,10 +3476,6 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -3352,6 +3548,12 @@ packages: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} @@ -3399,9 +3601,9 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} @@ -3444,8 +3646,8 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + diff@5.2.2: + resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} dijkstrajs@1.0.3: @@ -3455,26 +3657,17 @@ packages: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} + dotenv@14.3.2: + resolution: {integrity: sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==} + engines: {node: '>=12'} + dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -3490,9 +3683,6 @@ packages: duplexify@4.1.3: resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - eciesjs@0.4.16: resolution: {integrity: sha512-dS5cbA9rA2VR4Ybuvhg6jvdmp46ubLn3E+px8cG/35aEDNclrqoCjg6mt0HYZ/M+OoESS3jSkCrqk1kWAEhWAw==} engines: {bun: '>=1', deno: '>=2', node: '>=16'} @@ -3503,9 +3693,6 @@ packages: electron-to-chromium@1.5.238: resolution: {integrity: sha512-khBdc+w/Gv+cS8e/Pbnaw/FXcBUeKrRVik9IxfXtgREOWyJhR4tj43n3amkVogJ/yeQUqzkrZcFhtIxIdqmmcQ==} - elliptic@6.5.7: - resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} - elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -3515,10 +3702,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -3540,18 +3723,14 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} engines: {node: '>=10.13.0'} enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -3582,6 +3761,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -3601,11 +3783,11 @@ packages: es-toolkit@1.33.0: resolution: {integrity: sha512-X13Q/ZSc+vsO1q600bvNK4bxgXMkHcf//RxCmYDaRY5DAcT+eoXjY5hoAPGMdRnWQjvyLEcyauG3b6hz76LNqg==} - es-toolkit@1.39.3: - resolution: {integrity: sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==} + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} esbuild@0.25.11: resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} @@ -3791,6 +3973,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -3813,9 +3998,6 @@ packages: eth-rpc-errors@4.0.3: resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} - ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} - ethereum-cryptography@1.2.0: resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} @@ -3826,28 +4008,12 @@ packages: resolution: {integrity: sha512-Urr5YVsalH+Jo0sYkTkv1MyI9bLYZwW8BENZCeE1QYaTHETEYx0Nv/SVsWkSqpYrzweg6d8KMY1wTjH/1m/BIg==} engines: {node: ^14.21.3 || >=16, npm: '>=9'} - ethereumjs-abi@0.6.8: - resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} - deprecated: This library has been deprecated and usage is discouraged. - - ethereumjs-util@6.2.1: - resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} - - ethers@6.15.0: - resolution: {integrity: sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==} - engines: {node: '>=14.0.0'} - - ethjs-util@0.1.6: - resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} - engines: {node: '>=6.5.0', npm: '>=3'} - - eval@0.1.8: - resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} - engines: {node: '>= 0.8'} - eventemitter2@6.4.9: resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -3855,13 +4021,6 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@3.0.6: - resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} - engines: {node: '>=18.0.0'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -3874,8 +4033,9 @@ packages: resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - exif-parser@0.1.12: - resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} @@ -3888,9 +4048,9 @@ packages: resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} - extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3919,6 +4079,9 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -3938,6 +4101,13 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + figures@5.0.0: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} @@ -3946,10 +4116,6 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-type@3.9.0: - resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} - engines: {node: '>=0.10.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3965,10 +4131,6 @@ packages: find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -3995,12 +4157,15 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + focus-lock@1.3.6: resolution: {integrity: sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==} engines: {node: '>=10'} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4012,17 +4177,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - - form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} - formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -4066,9 +4220,6 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@0.30.0: - resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} - fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -4115,10 +4266,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@2.3.1: - resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} - engines: {node: '>=0.10.0'} - get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -4134,8 +4281,8 @@ packages: get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} - getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -4148,30 +4295,24 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} engines: {node: '>=16 || 14 >=14.17'} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-prefix@4.0.0: resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} engines: {node: '>=16'} - global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -4239,17 +4380,13 @@ packages: h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} - har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported + hardhat-watcher@2.5.0: + resolution: {integrity: sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA==} + peerDependencies: + hardhat: ^2.0.0 - hardhat@2.22.4: - resolution: {integrity: sha512-09qcXJFBHQUaraJkYNr7XlmwjOj27xBB0SL2rYS024hTj9tPMbp26AFjlf5quBMO9SR4AJFg+4qWahcYcvXBuQ==} + hardhat@2.28.6: + resolution: {integrity: sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==} hasBin: true peerDependencies: ts-node: '*' @@ -4264,10 +4401,6 @@ packages: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -4287,10 +4420,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hash-base@3.1.2: - resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} - engines: {node: '>= 0.8'} - hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -4301,6 +4430,12 @@ packages: hast-util-from-parse5@8.0.3: resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} @@ -4316,6 +4451,9 @@ packages: hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -4342,35 +4480,16 @@ packages: resolution: {integrity: sha512-p6fyzl+mQo6uhESLxbF5WlBOAJMDh36PljwlKtP5V1v09NxlqGru3ShK+4wKhSuhuYf8qxMmrivHOa/M7q0sMg==} engines: {node: '>=16.9.0'} - html-dom-parser@5.1.1: - resolution: {integrity: sha512-+o4Y4Z0CLuyemeccvGN4bAO20aauB2N9tFEAep5x4OW34kV4PTarBHm6RL02afYt2BMKcr0D2Agep8S3nJPIBg==} - - html-react-parser@5.2.7: - resolution: {integrity: sha512-WzIAcqQoZoF49J9aev8NBDLz9TJvt2RmipeYA+/5+5x0sWCwFxqKiq0lysieiSA/G6dbUZ6KGGy65Cx2fjie5Q==} - peerDependencies: - '@types/react': 0.14 || 15 || 16 || 17 || 18 || 19 - react: 0.14 || 15 || 16 || 17 || 18 || 19 - peerDependenciesMeta: - '@types/react': - optional: true - html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -4383,6 +4502,9 @@ packages: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4408,13 +4530,8 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} - image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + immutable@4.3.8: + resolution: {integrity: sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -4445,6 +4562,10 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inquirer@8.2.7: + resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} + engines: {node: '>=12.0.0'} + inquirer@9.3.8: resolution: {integrity: sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==} engines: {node: '>=18'} @@ -4460,10 +4581,6 @@ packages: resolution: {integrity: sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==} engines: {node: '>=12.22.0'} - ip-regex@1.0.3: - resolution: {integrity: sha512-HjpCHTuxbR/6jWJroc/VN+npo5j0T4Vv2TAI5qdEHQx7hsL767MeccGFSsLtF694EiZKTSEqgoeU6DtGFCcuqQ==} - engines: {node: '>=0.10.0'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -4471,6 +4588,10 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -4543,9 +4664,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - is-generator-function@1.1.2: resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} @@ -4554,10 +4672,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -4636,9 +4750,6 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} - is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -4676,11 +4787,10 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} - isomorphic-fetch@3.0.0: - resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} - - isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' isows@1.0.6: resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==} @@ -4692,31 +4802,22 @@ packages: peerDependencies: ws: '*' - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} - javascript-stringify@2.1.0: - resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + jayson@4.3.0: + resolution: {integrity: sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==} + engines: {node: '>=8'} + hasBin: true jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jimp@0.2.28: - resolution: {integrity: sha512-9HT7DA279xkTlry2oG30s6AtOUglNiY2UdyYpj0yNI4/NBv8PmdNC0gcldgMU4HqvbUlrM3+v+6GaHnTkH23JQ==} - - jpeg-js@0.1.2: - resolution: {integrity: sha512-CiRVjMKBUp6VYtGwzRjrdnro41yMwKGOWdP9ATXqmixdz2n7KHNwdqthTYSSbOKj/Ha79Gct1sA8ZQpse55TYA==} - - jpeg-js@0.2.0: - resolution: {integrity: sha512-Ni9PffhJtYtdD7VwxH6V2MnievekGfUefosGCHadog0/jAevRu6HPjYeMHbUemn0IPE8d4wGa8UsOGsX+iKy2g==} - - js-base64@3.7.8: - resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -4728,8 +4829,11 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + jsbi@3.2.5: + resolution: {integrity: sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==} + + jsbi@4.3.2: + resolution: {integrity: sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew==} jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} @@ -4761,12 +4865,13 @@ packages: json-schema@0.3.0: resolution: {integrity: sha512-TYfxx36xfl52Rf1LU9HyWSLGPdYLL+SQ8/E/0yVyKG8wCCDaSrhPap0vEdlsZWRaS6tnKKLPGiEJGiREVC8kxQ==} - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -4779,16 +4884,9 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -4807,9 +4905,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - klaw@1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -4817,9 +4912,6 @@ packages: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} - lanyard@1.1.2: - resolution: {integrity: sha512-nuo7gkPl2hatMKHfVwtY+o1zJlUmforLREmzA7jT45/gvH59kwo7xpAMyRNUzeOgfjZRGhm5cAZ/z4YlVNKqUw==} - lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} @@ -4828,6 +4920,76 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -4840,21 +5002,10 @@ packages: lit@3.3.0: resolution: {integrity: sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==} - load-bmfont@1.4.2: - resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} - loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -4882,10 +5033,6 @@ packages: lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} @@ -4916,6 +5063,9 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -4925,8 +5075,13 @@ packages: lru_map@0.3.3: resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + lucide-react@0.469.0: + resolution: {integrity: sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} @@ -4942,9 +5097,6 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -4978,6 +5130,9 @@ packages: mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + mdast-util-newline-to-break@2.0.0: + resolution: {integrity: sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog==} + mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} @@ -5015,9 +5170,15 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + micro-eth-signer@0.14.0: + resolution: {integrity: sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==} + micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + micro-packed@0.7.3: + resolution: {integrity: sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -5136,9 +5297,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -5160,9 +5318,6 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist@0.0.8: - resolution: {integrity: sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -5182,14 +5337,6 @@ packages: typescript: optional: true - mkdirp@0.5.1: - resolution: {integrity: sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==} - deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) - hasBin: true - - mlly@1.8.0: - resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - mnemonist@0.38.5: resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} @@ -5210,6 +5357,10 @@ packages: motion-utils@12.23.6: resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -5222,6 +5373,9 @@ packages: multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5231,6 +5385,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -5246,9 +5405,15 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next@15.5.6: - resolution: {integrity: sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@16.2.4: + resolution: {integrity: sha512-kPvz56wF5frc+FxlHI5qnklCzbq53HTwORaWBGdT0vNoKh1Aya9XC8aPauH4NJxqtzbWsS5mAbctm4cr+EkQ2Q==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -5270,12 +5435,12 @@ packages: nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -5323,9 +5488,6 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - obj-multiplex@1.0.0: resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} @@ -5364,16 +5526,15 @@ packages: obliterator@2.0.5: resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} on-exit-leak-free@0.2.0: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -5422,40 +5583,32 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - ox@0.6.7: - resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} - peerDependencies: - typescript: '>=5.4.0' - peerDependenciesMeta: - typescript: - optional: true - - ox@0.6.9: - resolution: {integrity: sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==} + ox@0.14.20: + resolution: {integrity: sha512-rby38C3nDn8eQkf29Zgw4hkCZJ64Qqi0zRPWL8ENUQ7JVuoITqrVtwWQgM/He19SCMUEc7hS/Sjw0jIOSLJhOw==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: typescript: optional: true - ox@0.9.12: - resolution: {integrity: sha512-esyA5WXfFhlxpgzoVIEreRaasqqv95sjFpk3L4Me4RWk8bgBDe+J4wO3RZ5ikYmJ2Bbjyv+jKgxyaOzX6JpHPA==} + ox@0.6.7: + resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: typescript: optional: true - ox@0.9.3: - resolution: {integrity: sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==} + ox@0.6.9: + resolution: {integrity: sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: typescript: optional: true - ox@0.9.6: - resolution: {integrity: sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==} + ox@0.9.12: + resolution: {integrity: sha512-esyA5WXfFhlxpgzoVIEreRaasqqv95sjFpk3L4Me4RWk8bgBDe+J4wO3RZ5ikYmJ2Bbjyv+jKgxyaOzX6JpHPA==} peerDependencies: typescript: '>=5.4.0' peerDependenciesMeta: @@ -5466,10 +5619,6 @@ packages: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} - p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -5478,10 +5627,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -5498,10 +5643,6 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -5509,36 +5650,17 @@ packages: pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - papaparse@5.5.3: - resolution: {integrity: sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-bmfont-ascii@1.0.6: - resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} - - parse-bmfont-binary@1.0.6: - resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} - - parse-bmfont-xml@1.1.6: - resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} - parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-headers@2.0.6: - resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-png@1.1.2: - resolution: {integrity: sha512-Ge6gDV9T5zhkWHmjvnNiyhPTCIoY7W+FC7qWPtuL2lIGZAFxxqTRG/ouEXsH9qkw+HzYiPEU/tFcxOCEDTP1Yw==} - engines: {node: '>=4'} - parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -5587,13 +5709,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pbkdf2@3.1.5: - resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} - engines: {node: '>= 0.10'} - - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} @@ -5605,11 +5720,6 @@ packages: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - phin@3.7.1: - resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} - engines: {node: '>= 8'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -5621,6 +5731,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -5629,52 +5743,23 @@ packages: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} engines: {node: '>=10'} - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - pino-std-serializers@4.0.0: resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - - pino@10.0.0: - resolution: {integrity: sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==} - hasBin: true - pino@7.11.0: resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} hasBin: true - pixelmatch@4.0.2: - resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} - hasBin: true - pkg-install@1.0.0: resolution: {integrity: sha512-UGI8bfhrDb1KN01RZ7Bq08GRQc8rmVjxQ2up0g4mUHPCYDTK1FzQ0PMmLOBCHg3yaIijZ2U3Fn9ofLa4N392Ug==} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} - pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -5707,10 +5792,22 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.13: + resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -5752,13 +5849,6 @@ packages: process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - process-warning@5.0.0: - resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -5785,9 +5875,6 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} @@ -5812,10 +5899,6 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} - qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} @@ -5845,10 +5928,10 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: - react: ^19.2.0 + react: ^19.2.5 react-fast-compare@2.0.4: resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} @@ -5874,6 +5957,12 @@ packages: '@types/react': '>=18' react: '>=18' + react-markdown@9.1.0: + resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + react-mde@11.5.0: resolution: {integrity: sha512-CH/VK6d+tpVjJ8rTXfh1dDt6GWedTgCU0668p8toqhAc3vy0Lu872O2RKYDSpkUrlbHI08fjUPTl++nExp6gag==} peerDependencies: @@ -5898,9 +5987,6 @@ packages: react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 || ^19.0.0 react-dom: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 || ^19.0.0 - react-property@2.0.2: - resolution: {integrity: sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==} - react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -5941,12 +6027,8 @@ packages: '@types/react': optional: true - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} - engines: {node: '>=0.10.0'} - - read-chunk@1.0.1: - resolution: {integrity: sha512-5NLTTdX45dKFtG8CX5pKmvS9V5u9wBE+gkklN7xhDuhq3pA2I4O7ALfKxosCMcLHOhkxj6GNacZhfXtp5nlCdg==} + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -5971,10 +6053,6 @@ packages: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -6002,12 +6080,24 @@ packages: react: optional: true + rehype-autolink-headings@7.1.0: + resolution: {integrity: sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw==} + + rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} rehype-sanitize@6.0.0: resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + remark-breaks@4.0.0: + resolution: {integrity: sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ==} + remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -6020,11 +6110,6 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -6037,16 +6122,9 @@ packages: resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} engines: {node: '>=8.6.0'} - require-like@0.1.2: - resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - resize-img@1.1.2: - resolution: {integrity: sha512-/4nKUmuNPuM6gYTWad136ica81baOVjpesgv8FGaIvP0KWcbCWahOWBKaM4tFoM+aVcSA+qQDg28pcnIzFRpJw==} - engines: {node: '>=4'} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -6082,17 +6160,9 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - ripemd160@2.0.3: - resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} - engines: {node: '>= 0.8'} - - rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + rolldown@1.0.2: + resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true rollup@4.52.5: @@ -6100,6 +6170,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rpc-websockets@9.3.9: + resolution: {integrity: sha512-2iQDaTB4g5fDB2ihrTFSJSibCEuxaRi1q7qTW7ZO9/M5/TC+ToHA4D9/ffNLEbAoHNNrcdeP05oATNk44SKZXA==} + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -6114,6 +6187,13 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + sablier@2.0.4: + resolution: {integrity: sha512-hRh76Ijw1Z0TtYIBFyMs4dYOF4OtL3onqQnDLr+ed2KW+SVYP2+9DB3tx9FfZm3ePoXIIM2KiJlgo7yvBjBjog==} + peerDependencies: + '@coral-xyz/anchor': ^0.30 + '@solana/web3.js': ^1.98 + viem: ^2.39 + safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -6139,9 +6219,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -6149,13 +6226,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - secp256k1@4.0.4: - resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} - engines: {node: '>=18.0.0'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -6195,9 +6265,6 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -6210,6 +6277,10 @@ packages: resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -6245,11 +6316,18 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - slow-redact@0.3.2: - resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} socket.io-client@4.8.1: resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} @@ -6259,17 +6337,14 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} - solc@0.7.3: - resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} - engines: {node: '>=8.0.0'} + solc@0.8.26: + resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} + engines: {node: '>=10.0.0'} hasBin: true sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - sonic-boom@4.2.0: - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -6296,14 +6371,12 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} - sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - stable-hash@0.0.5: resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stacktrace-parser@0.1.11: resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} engines: {node: '>=6'} @@ -6315,6 +6388,9 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + stdin-discarder@0.1.0: resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6323,16 +6399,14 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} - stream-to-buffer@0.1.0: - resolution: {integrity: sha512-Da4WoKaZyu3nf+bIdIifh7IPkFjARBnBK+pYqn0EUJqksjV9afojjaCCHUemH30Jmu7T2qcKvlZm2ykN38uzaw==} - engines: {node: '>= 0.8'} + stream-json@1.9.1: + resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} - stream-to@0.2.2: - resolution: {integrity: sha512-Kg1BSDTwgGiVMtTCJNlo7kk/xzL33ZuZveEBRt6rXw+f1WLK/8kmz2NVCT/Qnv0JkV85JOHcLhD82mnXsR3kPw==} - engines: {node: '>= 0.10.0'} + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} @@ -6398,10 +6472,6 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -6428,13 +6498,16 @@ packages: stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + superstruct@0.15.5: + resolution: {integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==} + superstruct@1.0.4: resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} engines: {node: '>=14.0.0'} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -6461,8 +6534,14 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + tailwind-merge@2.6.1: + resolution: {integrity: sha512-Oo6tHdpZsGpkKG88HJ8RR1rg/RdnEkQEfMoEk2x1XRI3F1AxeU+ijRXpiVUF4UbLfcxxRGw6TbUINKYdWVsQTQ==} + + tailwindcss@4.2.4: + resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} tar-stream@2.2.0: @@ -6490,25 +6569,46 @@ packages: engines: {node: '>=10'} hasBin: true + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} tiny-case@1.0.3: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + tinyexec@1.2.2: + resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -6517,14 +6617,13 @@ packages: resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} engines: {node: '>= 0.4'} - to-ico@1.1.5: - resolution: {integrity: sha512-5kIh7m7bkIlqIESEZkL8gAMMzucXKfPe3hX2FoDY5HEAfD9OJU+Qh9b6Enp74w0qRcxVT5ejss66PHKqc3AVkg==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toformat@2.0.0: + resolution: {integrity: sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==} + toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -6532,12 +6631,15 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} - tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -6585,9 +6687,6 @@ packages: tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -6599,18 +6698,6 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - tweetnacl-util@0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -6683,9 +6770,6 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -6693,9 +6777,6 @@ packages: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} - unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -6799,10 +6880,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-regex@3.2.0: - resolution: {integrity: sha512-dQ9cJzMou5OKr6ZzfvwJkCq3rC72PNXhqz0v3EIhF4a3Np+ujr100AhUx2cKx5ei3iymoJpJrPB3sVSEMdqAeg==} - engines: {node: '>=0.10.0'} - use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -6842,6 +6919,10 @@ packages: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf-8-validate@6.0.6: + resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==} + engines: {node: '>=6.14.2'} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6852,9 +6933,8 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} hasBin: true uuid@8.3.2: @@ -6863,6 +6943,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: @@ -6884,10 +6965,6 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -6905,33 +6982,117 @@ packages: typescript: optional: true - viem@2.38.3: - resolution: {integrity: sha512-By2TutLv07iNHHtWqHHzjGipevYsfGqT7KQbGEmqLco1qTJxKnvBbSviqiu6/v/9REV6Q/FpmIxf2Z7/l5AbcQ==} + viem@2.49.2: + resolution: {integrity: sha512-nZQTExZDZfxdz2NZnl70t41Mb4/jENt3AkVsVcHO18Jkgcg1VytEpWxLkqp7OC1vW8a4h3CYZPfwnAq/E+gf4A==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true - wagmi@2.18.2: - resolution: {integrity: sha512-9jFip+0ZfjMBxT72m02MZD2+VmQQ/UmqZhHl+98N9HEqXLn765fIu45QPV85DAnQqIHD81gvY3vTvfWt16A5yQ==} + vite@8.0.14: + resolution: {integrity: sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true peerDependencies: - '@tanstack/react-query': '>=5.0.0' - react: '>=18' - typescript: '>=5.0.4' - viem: 2.x + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: - typescript: + '@types/node': optional: true - - warning@4.0.3: - resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} - - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.7: + resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.7 + '@vitest/browser-preview': 4.1.7 + '@vitest/browser-webdriverio': 4.1.7 + '@vitest/coverage-istanbul': 4.1.7 + '@vitest/coverage-v8': 4.1.7 + '@vitest/ui': 4.1.7 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + wagmi@2.18.2: + resolution: {integrity: sha512-9jFip+0ZfjMBxT72m02MZD2+VmQQ/UmqZhHl+98N9HEqXLn765fIu45QPV85DAnQqIHD81gvY3vTvfWt16A5yQ==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} web-namespaces@2.0.1: @@ -6964,9 +7125,6 @@ packages: webpack-cli: optional: true - whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -7003,10 +7161,18 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} + wink-porter2-stemmer@2.0.1: + resolution: {integrity: sha512-0g+RkkqhRXFmSpJQStVXW5N/WsshWpJXsoDRW7DwVkGI2uDT6IBCoq3xdH5p6IHLaC6ygk7RWUsUx4alKxoagQ==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -7073,20 +7239,6 @@ packages: utf-8-validate: optional: true - xhr@2.6.0: - resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} - - xml-parse-from-string@1.0.1: - resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} - - xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - xmlhttprequest-ssl@2.1.2: resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} engines: {node: '>=0.4.0'} @@ -7233,29 +7385,11 @@ packages: snapshots: - '@adraffy/ens-normalize@1.10.1': {} - '@adraffy/ens-normalize@1.11.1': {} - '@ai-sdk/gateway@2.0.1(zod@4.1.12)': - dependencies: - '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) - '@vercel/oidc': 3.0.3 - zod: 4.1.12 - - '@ai-sdk/provider-utils@3.0.12(zod@4.1.12)': - dependencies: - '@ai-sdk/provider': 2.0.0 - '@standard-schema/spec': 1.0.0 - eventsource-parser: 3.0.6 - zod: 4.1.12 - - '@ai-sdk/provider@2.0.0': - dependencies: - json-schema: 0.4.0 + '@alloc/quick-lru@5.2.0': {} - '@apollo/client@3.14.0(@types/react@19.2.2)(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@apollo/client@3.14.0(@types/react@19.2.14)(graphql@16.11.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@wry/caches': 1.0.1 @@ -7266,14 +7400,14 @@ snapshots: hoist-non-react-statics: 3.3.2 optimism: 0.18.1 prop-types: 15.8.1 - rehackt: 0.1.0(@types/react@19.2.2)(react@19.2.0) + rehackt: 0.1.0(@types/react@19.2.14)(react@19.2.5) symbol-observable: 4.0.0 ts-invariant: 0.10.3 tslib: 2.8.1 zen-observable-ts: 1.2.5 optionalDependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - '@types/react' @@ -7339,8 +7473,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -7356,11 +7488,6 @@ snapshots: dependencies: '@babel/types': 7.28.4 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': - dependencies: - '@babel/core': 7.28.4 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': @@ -7386,7 +7513,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@base-org/account@1.1.1(@types/react@19.2.2)(bufferutil@4.0.9)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@4.1.12)': + '@base-org/account@1.1.1(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 @@ -7394,8 +7521,8 @@ snapshots: idb-keyval: 6.2.1 ox: 0.6.9(typescript@5.9.3)(zod@4.1.12) preact: 10.24.2 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - zustand: 5.0.3(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -7406,150 +7533,32 @@ snapshots: - utf-8-validate - zod - '@buildeross/auction-ui@0.2.1(c9ae5cdf2b07f0bac9944517cffb353c)': - dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/hooks': 0.2.1(9462acc82b5989c9028c61f86b2f6543) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/sdk': 0.2.1(9221b806ea8c584e5427371ffbc221f5) - '@buildeross/stores': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/ui': 0.2.1(2ea7fbee4993c37869f6e0b8b028d63d) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@buildeross/zord': 0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - axios: 1.12.2 - dayjs: 1.11.18 - framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - swr: 2.3.6(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - babel-plugin-macros - - debug - - '@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))': + '@buildeross/blocklist@0.3.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))': dependencies: - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) - '@buildeross/create-proposal-ui@0.2.1(c736f66ccb179f6c31d9de17145db021)': + '@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/hooks': 0.2.1(9462acc82b5989c9028c61f86b2f6543) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/proposal-ui': 0.2.1(ca580cc096943ddea41afa570dee71f5) - '@buildeross/sdk': 0.2.1(9221b806ea8c584e5427371ffbc221f5) - '@buildeross/stores': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/ui': 0.2.1(2ea7fbee4993c37869f6e0b8b028d63d) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@buildeross/zord': 0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@ethereum-attestation-service/eas-sdk': 2.9.0(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - '@walletconnect/core': 2.22.4(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@walletconnect/utils': 2.22.4(ioredis@5.8.2)(typescript@5.9.3)(zod@4.1.12) - '@walletconnect/web3wallet': 1.16.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - axios: 1.12.2 - bs58: 6.0.0 - dayjs: 1.11.18 - formik: 2.4.6(@types/react@19.2.2)(react@19.2.0) - framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - lanyard: 1.1.2 - lodash: 4.17.21 - papaparse: 5.5.3 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - swr: 2.3.6(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) - yup: 1.7.1 - zustand: 5.0.8(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) - optionalDependencies: - '@sentry/nextjs': 9.46.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.102.1) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@emotion/is-prop-valid' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@types/react' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - babel-plugin-macros - - bufferutil - - c-kzg - - db0 - - debug - - encoding - - immer - - ioredis - - supports-color - - ts-node - - typescript - - uploadthing - - use-sync-external-store - - utf-8-validate - - zod - - '@buildeross/dao-ui@0.2.1(0e25c020d2317340c3b4a863ccc780c7)': - dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/hooks': 0.2.1(9462acc82b5989c9028c61f86b2f6543) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/proposal-ui': 0.2.1(ca580cc096943ddea41afa570dee71f5) - '@buildeross/sdk': 0.2.1(9221b806ea8c584e5427371ffbc221f5) - '@buildeross/stores': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/ui': 0.2.1(2ea7fbee4993c37869f6e0b8b028d63d) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@buildeross/zord': 0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - axios: 1.12.2 - dayjs: 1.11.18 - formik: 2.4.6(@types/react@19.2.2)(react@19.2.0) - framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - html-react-parser: 5.2.7(@types/react@19.2.2)(react@19.2.0) - lodash: 4.17.21 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - swr: 2.3.6(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) - yup: 1.7.1 - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@types/react' - - babel-plugin-macros - - debug + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) - '@buildeross/hooks@0.2.1(9462acc82b5989c9028c61f86b2f6543)': + '@buildeross/hooks@0.3.2(98df817ebf727861d7c72c83ceb4ae74)': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/sdk': 0.2.1(9221b806ea8c584e5427371ffbc221f5) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@smartinvoicexyz/types': 0.1.28(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/node@20.19.23)(@types/react@19.2.2)(bufferutil@4.0.9)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/ipfs-service': 0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))) + '@buildeross/sdk': 0.3.2(aee6836ad6f7f6cb0a314139be6744bb) + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@buildeross/utils': 0.3.2(f2de31ba47dcf0f4e32efa838f9d8510) + '@smartinvoicexyz/types': 0.1.28(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/node@20.19.23)(@types/react@19.2.14)(bufferutil@4.0.9)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(graphql@16.11.0)(react-dom@19.2.5(react@19.2.5))(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@types/lodash': 4.17.20 + '@zoralabs/coins-sdk': 0.4.9(abitype@1.2.3(typescript@5.9.3)(zod@4.1.12))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) dayjs: 1.11.18 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) transitivePeerDependencies: - '@emotion/react' - '@emotion/styled' @@ -7557,6 +7566,7 @@ snapshots: - '@swc/wasm' - '@types/node' - '@types/react' + - abitype - bufferutil - encoding - framer-motion @@ -7568,118 +7578,103 @@ snapshots: - utf-8-validate - zod - '@buildeross/ipfs-service@0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))': + '@buildeross/ipfs-service@0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)))': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) sha.js: 2.4.12 - '@buildeross/proposal-ui@0.2.1(ca580cc096943ddea41afa570dee71f5)': - dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/hooks': 0.2.1(9462acc82b5989c9028c61f86b2f6543) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/sdk': 0.2.1(9221b806ea8c584e5427371ffbc221f5) - '@buildeross/stores': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/ui': 0.2.1(2ea7fbee4993c37869f6e0b8b028d63d) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@buildeross/zord': 0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@ethereum-attestation-service/eas-sdk': 2.9.0(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - axios: 1.12.2 - dayjs: 1.11.18 - formik: 2.4.6(@types/react@19.2.2)(react@19.2.0) - framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - lodash: 4.17.21 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - swr: 2.3.6(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) - yup: 1.7.1 - transitivePeerDependencies: - - '@emotion/is-prop-valid' - - '@types/react' - - babel-plugin-macros - - bufferutil - - c-kzg - - debug - - supports-color - - ts-node - - typescript - - utf-8-validate - - zod - - '@buildeross/sdk@0.2.1(9221b806ea8c584e5427371ffbc221f5)': + '@buildeross/sdk@0.3.2(aee6836ad6f7f6cb0a314139be6744bb)': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@buildeross/utils': 0.3.2(f2de31ba47dcf0f4e32efa838f9d8510) graphql: 16.11.0 graphql-request: 7.3.1(graphql@16.11.0) graphql-tag: 2.12.6(graphql@16.11.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) optionalDependencies: - '@sentry/nextjs': 9.46.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.102.1) + '@sentry/nextjs': 9.46.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@16.2.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(webpack@5.102.1) - '@buildeross/stores@0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0))': + '@buildeross/stores@0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)))(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5))': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - react: 19.2.0 - zustand: 5.0.8(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + react: 19.2.5 + zustand: 5.0.8(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' - immer - use-sync-external-store - '@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))': + '@buildeross/swap@0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)))(@buildeross/sdk@0.3.2(aee6836ad6f7f6cb0a314139be6744bb))(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))': + dependencies: + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/sdk': 0.3.2(aee6836ad6f7f6cb0a314139be6744bb) + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + + '@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))': dependencies: - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) - '@buildeross/ui@0.2.1(2ea7fbee4993c37869f6e0b8b028d63d)': + '@buildeross/ui@0.3.2(81011f11958994f009ed4787c4d1a4dd)': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/hooks': 0.2.1(9462acc82b5989c9028c61f86b2f6543) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/sdk': 0.2.1(9221b806ea8c584e5427371ffbc221f5) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@buildeross/utils': 0.2.1(a505358f10def67b37ba69c90a14d9e5) - '@buildeross/zord': 0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/hooks': 0.3.2(98df817ebf727861d7c72c83ceb4ae74) + '@buildeross/ipfs-service': 0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))) + '@buildeross/sdk': 0.3.2(aee6836ad6f7f6cb0a314139be6744bb) + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@buildeross/utils': 0.3.2(f2de31ba47dcf0f4e32efa838f9d8510) + '@buildeross/zord': 0.2.1(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@uniswap/v3-sdk': 3.30.0(hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6)) '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) '@vanilla-extract/recipes': 0.5.7(@vanilla-extract/css@1.17.4(babel-plugin-macros@3.1.0)) flatpickr: 4.6.13 - formik: 2.4.6(@types/react@19.2.2)(react@19.2.0) - framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-markdown: 10.1.0(@types/react@19.2.2)(react@19.2.0) - react-mde: 11.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-portal: 4.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + formik: 2.4.6(@types/react@19.2.14)(react@19.2.5) + framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + jsbi: 4.3.2 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-markdown: 10.1.0(@types/react@19.2.14)(react@19.2.5) + react-mde: 11.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-portal: 4.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) rehype-raw: 7.0.0 rehype-sanitize: 6.0.0 remark-gfm: 4.0.1 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + swr: 2.3.6(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) + yup: 1.7.1 + zustand: 5.0.8(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@emotion/is-prop-valid' - '@types/react' - babel-plugin-macros + - hardhat + - immer - supports-color + - use-sync-external-store - '@buildeross/utils@0.2.1(a505358f10def67b37ba69c90a14d9e5)': + '@buildeross/utils@0.3.2(f2de31ba47dcf0f4e32efa838f9d8510)': dependencies: - '@buildeross/constants': 0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - '@buildeross/ipfs-service': 0.2.1(@buildeross/constants@0.2.1(@buildeross/types@0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))) - '@buildeross/types': 0.2.1(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) + '@buildeross/blocklist': 0.3.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@buildeross/constants': 0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + '@buildeross/ipfs-service': 0.3.2(@buildeross/constants@0.3.2(@buildeross/types@0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))) + '@buildeross/types': 0.3.2(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) bignumber.js: 9.3.1 + decimal.js: 10.6.0 + sablier: 2.0.4(@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) tinycolor2: 1.6.0 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) + wink-porter2-stemmer: 2.0.1 yup: 1.7.1 + transitivePeerDependencies: + - '@coral-xyz/anchor' + - '@solana/web3.js' - '@buildeross/zord@0.2.1(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@buildeross/zord@0.2.1(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@popperjs/core': 2.11.8 '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) @@ -7687,74 +7682,74 @@ snapshots: '@vanilla-extract/recipes': 0.5.7(@vanilla-extract/css@1.17.4(babel-plugin-macros@3.1.0)) '@vanilla-extract/sprinkles': 1.6.5(@vanilla-extract/css@1.17.4(babel-plugin-macros@3.1.0)) clsx: 1.2.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-polymorphic-types: 2.0.0(@types/react@19.2.2) - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-polymorphic-types: 2.0.0(@types/react@19.2.14) + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) transitivePeerDependencies: - '@types/react' - babel-plugin-macros '@chakra-ui/anatomy@2.3.6': {} - '@chakra-ui/hooks@2.4.5(react@19.2.0)': + '@chakra-ui/hooks@2.4.5(react@19.2.5)': dependencies: - '@chakra-ui/utils': 2.2.5(react@19.2.0) + '@chakra-ui/utils': 2.2.5(react@19.2.5) '@zag-js/element-size': 0.31.1 copy-to-clipboard: 3.3.3 framesync: 6.1.2 - react: 19.2.0 + react: 19.2.5 - '@chakra-ui/react@2.10.9(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@chakra-ui/react@2.10.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@chakra-ui/hooks': 2.4.5(react@19.2.0) - '@chakra-ui/styled-system': 2.12.4(react@19.2.0) - '@chakra-ui/theme': 3.4.9(@chakra-ui/styled-system@2.12.4(react@19.2.0))(react@19.2.0) - '@chakra-ui/utils': 2.2.5(react@19.2.0) - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0) + '@chakra-ui/hooks': 2.4.5(react@19.2.5) + '@chakra-ui/styled-system': 2.12.4(react@19.2.5) + '@chakra-ui/theme': 3.4.9(@chakra-ui/styled-system@2.12.4(react@19.2.5))(react@19.2.5) + '@chakra-ui/utils': 2.2.5(react@19.2.5) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@popperjs/core': 2.11.8 '@zag-js/focus-visible': 0.31.1 aria-hidden: 1.2.6 - framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + framer-motion: 12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-fast-compare: 3.2.2 - react-focus-lock: 2.13.6(@types/react@19.2.2)(react@19.2.0) - react-remove-scroll: 2.7.1(@types/react@19.2.2)(react@19.2.0) + react-focus-lock: 2.13.6(@types/react@19.2.14)(react@19.2.5) + react-remove-scroll: 2.7.1(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: - '@types/react' - '@chakra-ui/styled-system@2.12.4(react@19.2.0)': + '@chakra-ui/styled-system@2.12.4(react@19.2.5)': dependencies: - '@chakra-ui/utils': 2.2.5(react@19.2.0) - csstype: 3.1.3 + '@chakra-ui/utils': 2.2.5(react@19.2.5) + csstype: 3.2.3 transitivePeerDependencies: - react - '@chakra-ui/theme-tools@2.2.9(@chakra-ui/styled-system@2.12.4(react@19.2.0))(react@19.2.0)': + '@chakra-ui/theme-tools@2.2.9(@chakra-ui/styled-system@2.12.4(react@19.2.5))(react@19.2.5)': dependencies: '@chakra-ui/anatomy': 2.3.6 - '@chakra-ui/styled-system': 2.12.4(react@19.2.0) - '@chakra-ui/utils': 2.2.5(react@19.2.0) + '@chakra-ui/styled-system': 2.12.4(react@19.2.5) + '@chakra-ui/utils': 2.2.5(react@19.2.5) color2k: 2.0.3 transitivePeerDependencies: - react - '@chakra-ui/theme@3.4.9(@chakra-ui/styled-system@2.12.4(react@19.2.0))(react@19.2.0)': + '@chakra-ui/theme@3.4.9(@chakra-ui/styled-system@2.12.4(react@19.2.5))(react@19.2.5)': dependencies: '@chakra-ui/anatomy': 2.3.6 - '@chakra-ui/styled-system': 2.12.4(react@19.2.0) - '@chakra-ui/theme-tools': 2.2.9(@chakra-ui/styled-system@2.12.4(react@19.2.0))(react@19.2.0) - '@chakra-ui/utils': 2.2.5(react@19.2.0) + '@chakra-ui/styled-system': 2.12.4(react@19.2.5) + '@chakra-ui/theme-tools': 2.2.9(@chakra-ui/styled-system@2.12.4(react@19.2.5))(react@19.2.5) + '@chakra-ui/utils': 2.2.5(react@19.2.5) transitivePeerDependencies: - react - '@chakra-ui/utils@2.2.5(react@19.2.0)': + '@chakra-ui/utils@2.2.5(react@19.2.5)': dependencies: '@types/lodash.mergewith': 4.6.9 lodash.mergewith: 4.6.2 - react: 19.2.0 + react: 19.2.5 '@coinbase/wallet-sdk@3.9.3': dependencies: @@ -7770,7 +7765,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.2)(bufferutil@4.0.9)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@4.1.12)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 @@ -7778,8 +7773,8 @@ snapshots: idb-keyval: 6.2.1 ox: 0.6.9(typescript@5.9.3)(zod@4.1.12) preact: 10.24.2 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - zustand: 5.0.3(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -7790,6 +7785,37 @@ snapshots: - utf-8-validate - zod + '@coral-xyz/anchor-errors@0.30.1': {} + + '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@coral-xyz/anchor-errors': 0.30.1 + '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)) + '@noble/hashes': 1.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) + bn.js: 5.2.2 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + crypto-hash: 1.3.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + snake-case: 3.0.4 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6))': + dependencies: + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) + bn.js: 5.2.2 + buffer-layout: 1.2.2 + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -7798,12 +7824,23 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.6.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.6.0': dependencies: tslib: 2.8.1 @@ -7814,6 +7851,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -7846,19 +7888,19 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0)': + '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.5) '@emotion/utils': 1.4.2 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.2.0 + react: 19.2.5 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 transitivePeerDependencies: - supports-color @@ -7868,30 +7910,30 @@ snapshots: '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.2 - csstype: 3.1.3 + csstype: 3.2.3 '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.2)(react@19.2.0) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.5) '@emotion/utils': 1.4.2 - react: 19.2.0 + react: 19.2.5 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 transitivePeerDependencies: - supports-color '@emotion/unitless@0.10.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.0)': + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.5)': dependencies: - react: 19.2.0 + react: 19.2.5 '@emotion/utils@1.4.2': {} @@ -7975,9 +8017,9 @@ snapshots: '@esbuild/win32-x64@0.25.11': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0)': + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': dependencies: - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -8021,37 +8063,6 @@ snapshots: '@eslint/core': 0.16.0 levn: 0.4.1 - '@ethereum-attestation-service/eas-contracts@1.7.1(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)': - dependencies: - hardhat: 2.22.4(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - c-kzg - - supports-color - - ts-node - - typescript - - utf-8-validate - - '@ethereum-attestation-service/eas-sdk@2.9.0(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': - dependencies: - '@ethereum-attestation-service/eas-contracts': 1.7.1(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10) - '@openzeppelin/merkle-tree': 1.0.8 - ethers: 6.15.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - js-base64: 3.7.8 - lodash: 4.17.21 - multiformats: 9.9.0 - pako: 2.1.0 - semver: 7.7.3 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - transitivePeerDependencies: - - bufferutil - - c-kzg - - supports-color - - ts-node - - typescript - - utf-8-validate - - zod - '@ethereumjs/common@3.2.0': dependencies: '@ethereumjs/util': 8.1.0 @@ -8059,6 +8070,8 @@ snapshots: '@ethereumjs/rlp@4.0.1': {} + '@ethereumjs/rlp@5.0.2': {} + '@ethereumjs/tx@4.2.0': dependencies: '@ethereumjs/common': 3.2.0 @@ -8072,6 +8085,11 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 + '@ethereumjs/util@9.1.0': + dependencies: + '@ethereumjs/rlp': 5.0.2 + ethereum-cryptography: 2.2.1 + '@ethersproject/abi@5.8.0': dependencies: '@ethersproject/address': 5.8.0 @@ -8128,7 +8146,7 @@ snapshots: dependencies: '@ethersproject/bignumber': 5.8.0 - '@ethersproject/hash@5.7.0': + '@ethersproject/hash@5.8.0': dependencies: '@ethersproject/abstract-signer': 5.8.0 '@ethersproject/address': 5.8.0 @@ -8140,17 +8158,10 @@ snapshots: '@ethersproject/properties': 5.8.0 '@ethersproject/strings': 5.8.0 - '@ethersproject/hash@5.8.0': + '@ethersproject/keccak256@5.7.0': dependencies: - '@ethersproject/abstract-signer': 5.8.0 - '@ethersproject/address': 5.8.0 - '@ethersproject/base64': 5.8.0 - '@ethersproject/bignumber': 5.8.0 '@ethersproject/bytes': 5.8.0 - '@ethersproject/keccak256': 5.8.0 - '@ethersproject/logger': 5.8.0 - '@ethersproject/properties': 5.8.0 - '@ethersproject/strings': 5.8.0 + js-sha3: 0.8.0 '@ethersproject/keccak256@5.8.0': dependencies: @@ -8172,6 +8183,12 @@ snapshots: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + '@ethersproject/signing-key@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 @@ -8181,23 +8198,26 @@ snapshots: elliptic: 6.6.1 hash.js: 1.1.7 - '@ethersproject/strings@5.8.0': + '@ethersproject/solidity@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/strings@5.7.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/constants': 5.8.0 '@ethersproject/logger': 5.8.0 - '@ethersproject/transactions@5.7.0': + '@ethersproject/strings@5.8.0': dependencies: - '@ethersproject/address': 5.8.0 - '@ethersproject/bignumber': 5.8.0 '@ethersproject/bytes': 5.8.0 '@ethersproject/constants': 5.8.0 - '@ethersproject/keccak256': 5.8.0 '@ethersproject/logger': 5.8.0 - '@ethersproject/properties': 5.8.0 - '@ethersproject/rlp': 5.8.0 - '@ethersproject/signing-key': 5.8.0 '@ethersproject/transactions@5.8.0': dependencies: @@ -8221,15 +8241,11 @@ snapshots: '@fastify/busboy@2.1.1': {} - '@fontsource/inter@5.2.8': {} - - '@fontsource/londrina-solid@5.2.7': {} - - '@gemini-wallet/core@0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))': + '@gemini-wallet/core@0.2.0(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))': dependencies: '@metamask/rpc-errors': 7.0.2 eventemitter3: 5.0.1 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - supports-color @@ -8237,6 +8253,8 @@ snapshots: dependencies: graphql: 16.11.0 + '@hey-api/client-fetch@0.8.4': {} + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': @@ -8255,87 +8273,181 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.2.3 optional: true + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + '@img/sharp-darwin-x64@0.34.4': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.3 optional: true + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + '@img/sharp-libvips-darwin-arm64@1.2.3': optional: true + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + '@img/sharp-libvips-darwin-x64@1.2.3': optional: true + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + '@img/sharp-libvips-linux-arm64@1.2.3': optional: true + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + '@img/sharp-libvips-linux-arm@1.2.3': optional: true + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + '@img/sharp-libvips-linux-ppc64@1.2.3': optional: true - '@img/sharp-libvips-linux-s390x@1.2.3': + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true '@img/sharp-libvips-linux-x64@1.2.3': optional: true + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.3': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + '@img/sharp-linux-arm64@0.34.4': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.3 optional: true + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + '@img/sharp-linux-arm@0.34.4': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.3 optional: true + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + '@img/sharp-linux-ppc64@0.34.4': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.2.3 optional: true + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + '@img/sharp-linux-s390x@0.34.4': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.3 optional: true + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + '@img/sharp-linux-x64@0.34.4': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.3 optional: true + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + '@img/sharp-linuxmusl-arm64@0.34.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 optional: true + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + '@img/sharp-linuxmusl-x64@0.34.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.3 optional: true + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + '@img/sharp-wasm32@0.34.4': dependencies: '@emnapi/runtime': 1.6.0 optional: true + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.10.0 + optional: true + '@img/sharp-win32-arm64@0.34.4': optional: true + '@img/sharp-win32-arm64@0.34.5': + optional: true + '@img/sharp-win32-ia32@0.34.4': optional: true + '@img/sharp-win32-ia32@0.34.5': + optional: true + '@img/sharp-win32-x64@0.34.4': optional: true + '@img/sharp-win32-x64@0.34.5': + optional: true + '@inquirer/external-editor@1.0.2(@types/node@20.19.23)': dependencies: chardet: 2.1.0 @@ -8345,7 +8457,8 @@ snapshots: '@inquirer/figures@1.0.14': {} - '@ioredis/commands@1.4.0': {} + '@ioredis/commands@1.4.0': + optional: true '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -8363,6 +8476,7 @@ snapshots: dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 + optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -8397,14 +8511,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/eth-sig-util@4.0.1': - dependencies: - ethereumjs-abi: 0.6.8 - ethereumjs-util: 6.2.1 - ethjs-util: 0.1.6 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - '@metamask/json-rpc-engine@7.3.3': dependencies: '@metamask/rpc-errors': 6.4.0 @@ -8478,7 +8584,7 @@ snapshots: dependencies: openapi-fetch: 0.13.8 - '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.16)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.16)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.6))': dependencies: '@metamask/sdk-analytics': 0.0.5 bufferutil: 4.0.9 @@ -8488,7 +8594,7 @@ snapshots: eciesjs: 0.4.16 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.6) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: @@ -8498,13 +8604,13 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.33.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.33.1(bufferutil@4.0.9)(utf-8-validate@6.0.6)': dependencies: '@babel/runtime': 7.28.4 '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 '@metamask/sdk-analytics': 0.0.5 - '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.16)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.16)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.6)) '@metamask/sdk-install-modal-web': 0.32.1 '@paulmillr/qr': 0.2.1 bowser: 2.12.1 @@ -8516,7 +8622,7 @@ snapshots: obj-multiplex: 1.0.0 pump: 3.0.3 readable-stream: 3.6.2 - socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + socket.io-client: 4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.6) tslib: 2.8.1 util: 0.12.5 uuid: 8.3.2 @@ -8582,8 +8688,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@msgpack/msgpack@3.1.2': {} - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.6.0 @@ -8591,44 +8695,47 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@15.5.6': {} + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@next/env@16.2.4': {} '@next/eslint-plugin-next@16.0.0': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.5.6': + '@next/swc-darwin-arm64@16.2.4': optional: true - '@next/swc-darwin-x64@15.5.6': + '@next/swc-darwin-x64@16.2.4': optional: true - '@next/swc-linux-arm64-gnu@15.5.6': + '@next/swc-linux-arm64-gnu@16.2.4': optional: true - '@next/swc-linux-arm64-musl@15.5.6': + '@next/swc-linux-arm64-musl@16.2.4': optional: true - '@next/swc-linux-x64-gnu@15.5.6': + '@next/swc-linux-x64-gnu@16.2.4': optional: true - '@next/swc-linux-x64-musl@15.5.6': + '@next/swc-linux-x64-musl@16.2.4': optional: true - '@next/swc-win32-arm64-msvc@15.5.6': + '@next/swc-win32-arm64-msvc@16.2.4': optional: true - '@next/swc-win32-x64-msvc@15.5.6': + '@next/swc-win32-x64-msvc@16.2.4': optional: true '@noble/ciphers@1.2.1': {} '@noble/ciphers@1.3.0': {} - '@noble/curves@1.2.0': - dependencies: - '@noble/hashes': 1.3.2 - '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 @@ -8655,8 +8762,6 @@ snapshots: '@noble/hashes@1.2.0': {} - '@noble/hashes@1.3.2': {} - '@noble/hashes@1.4.0': {} '@noble/hashes@1.7.0': {} @@ -8681,49 +8786,29 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nomicfoundation/edr-darwin-arm64@0.3.8': {} - - '@nomicfoundation/edr-darwin-x64@0.3.8': {} + '@nomicfoundation/edr-darwin-arm64@0.12.0-next.23': {} - '@nomicfoundation/edr-linux-arm64-gnu@0.3.8': {} + '@nomicfoundation/edr-darwin-x64@0.12.0-next.23': {} - '@nomicfoundation/edr-linux-arm64-musl@0.3.8': {} + '@nomicfoundation/edr-linux-arm64-gnu@0.12.0-next.23': {} - '@nomicfoundation/edr-linux-x64-gnu@0.3.8': {} - - '@nomicfoundation/edr-linux-x64-musl@0.3.8': {} - - '@nomicfoundation/edr-win32-x64-msvc@0.3.8': {} - - '@nomicfoundation/edr@0.3.8': - dependencies: - '@nomicfoundation/edr-darwin-arm64': 0.3.8 - '@nomicfoundation/edr-darwin-x64': 0.3.8 - '@nomicfoundation/edr-linux-arm64-gnu': 0.3.8 - '@nomicfoundation/edr-linux-arm64-musl': 0.3.8 - '@nomicfoundation/edr-linux-x64-gnu': 0.3.8 - '@nomicfoundation/edr-linux-x64-musl': 0.3.8 - '@nomicfoundation/edr-win32-x64-msvc': 0.3.8 + '@nomicfoundation/edr-linux-arm64-musl@0.12.0-next.23': {} - '@nomicfoundation/ethereumjs-common@4.0.4': - dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.4 - transitivePeerDependencies: - - c-kzg + '@nomicfoundation/edr-linux-x64-gnu@0.12.0-next.23': {} - '@nomicfoundation/ethereumjs-rlp@5.0.4': {} + '@nomicfoundation/edr-linux-x64-musl@0.12.0-next.23': {} - '@nomicfoundation/ethereumjs-tx@5.0.4': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 - ethereum-cryptography: 0.1.3 + '@nomicfoundation/edr-win32-x64-msvc@0.12.0-next.23': {} - '@nomicfoundation/ethereumjs-util@9.0.4': + '@nomicfoundation/edr@0.12.0-next.23': dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.4 - ethereum-cryptography: 0.1.3 + '@nomicfoundation/edr-darwin-arm64': 0.12.0-next.23 + '@nomicfoundation/edr-darwin-x64': 0.12.0-next.23 + '@nomicfoundation/edr-linux-arm64-gnu': 0.12.0-next.23 + '@nomicfoundation/edr-linux-arm64-musl': 0.12.0-next.23 + '@nomicfoundation/edr-linux-x64-gnu': 0.12.0-next.23 + '@nomicfoundation/edr-linux-x64-musl': 0.12.0-next.23 + '@nomicfoundation/edr-win32-x64-msvc': 0.12.0-next.23 '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': optional: true @@ -8761,7 +8846,8 @@ snapshots: '@opentelemetry/api': 1.9.0 optional: true - '@opentelemetry/api@1.9.0': {} + '@opentelemetry/api@1.9.0': + optional: true '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': dependencies: @@ -9030,6 +9116,10 @@ snapshots: '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) optional: true + '@openzeppelin/contracts@3.4.1-solc-0.7-2': {} + + '@openzeppelin/contracts@3.4.2-solc-0.7': {} + '@openzeppelin/merkle-tree@1.0.8': dependencies: '@metamask/abi-utils': 2.0.4 @@ -9037,10 +9127,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@oxc-project/types@0.132.0': {} + '@paulmillr/qr@0.2.1': {} '@pkgr/core@0.2.9': {} + '@polka/url@1.0.0-next.29': {} + '@popperjs/core@2.11.8': {} '@prisma/instrumentation@6.11.1(@opentelemetry/api@1.9.0)': @@ -9051,54 +9145,67 @@ snapshots: - supports-color optional: true - '@rainbow-me/rainbowkit@2.2.9(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@rainbow-me/rainbowkit@2.2.9(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))': + dependencies: + '@tanstack/react-query': 5.90.5(react@19.2.5) '@vanilla-extract/css': 1.17.3(babel-plugin-macros@3.1.0) '@vanilla-extract/dynamic': 2.1.4 '@vanilla-extract/sprinkles': 1.6.4(@vanilla-extract/css@1.17.3(babel-plugin-macros@3.1.0)) clsx: 2.1.1 - cuer: 0.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-remove-scroll: 2.6.2(@types/react@19.2.2)(react@19.2.0) + cuer: 0.0.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.5) ua-parser-js: 1.0.41 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) transitivePeerDependencies: - '@types/react' - babel-plugin-macros - typescript - '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - valtio: 1.13.2(@types/react@19.2.2)(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9127,14 +9234,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0))(zod@4.1.12) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.1.12) lit: 3.3.0 - valtio: 1.13.2(@types/react@19.2.2)(react@19.2.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9167,13 +9274,13 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0))(zod@4.1.12)': + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.1.12)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0))(zod@4.1.12) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.1.12) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -9204,11 +9311,11 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) lit: 3.3.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -9239,16 +9346,16 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0))(zod@4.1.12)': + '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.1.12)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - valtio: 1.13.2(@types/react@19.2.2)(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9277,9 +9384,9 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-wallet@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.8 '@walletconnect/logger': 2.1.2 zod: 3.22.4 @@ -9288,21 +9395,21 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-pay': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@reown/appkit-common': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0))(zod@4.1.12) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0))(zod@4.1.12) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.1.12) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.1.12) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) '@walletconnect/types': 2.21.0(ioredis@5.8.2) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) bs58: 6.0.0 - valtio: 1.13.2(@types/react@19.2.2)(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9331,15 +9438,66 @@ snapshots: - utf-8-validate - zod + '@rolldown/binding-android-arm64@1.0.2': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.2': + optional: true + + '@rolldown/binding-darwin-x64@1.0.2': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.2': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.2': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.2': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.2': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.2': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.2': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.2': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + '@rollup/plugin-commonjs@28.0.1(rollup@4.52.5)': dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.52.5) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) is-reference: 1.2.1 - magic-string: 0.30.19 - picomatch: 4.0.3 + magic-string: 0.30.21 + picomatch: 4.0.4 optionalDependencies: rollup: 4.52.5 optional: true @@ -9348,7 +9506,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.52.5 optional: true @@ -9421,9 +9579,9 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -9431,10 +9589,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - bufferutil - typescript @@ -9467,7 +9625,7 @@ snapshots: '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 @@ -9608,7 +9766,7 @@ snapshots: '@sentry/types': 5.30.0 tslib: 1.14.1 - '@sentry/nextjs@9.46.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.102.1)': + '@sentry/nextjs@9.46.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@16.2.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(webpack@5.102.1)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.37.0 @@ -9617,11 +9775,11 @@ snapshots: '@sentry/core': 9.46.0 '@sentry/node': 9.46.0 '@sentry/opentelemetry': 9.46.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) - '@sentry/react': 9.46.0(react@19.2.0) + '@sentry/react': 9.46.0(react@19.2.5) '@sentry/vercel-edge': 9.46.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@sentry/webpack-plugin': 3.6.1(webpack@5.102.1) chalk: 3.0.0 - next: 15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + next: 16.2.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) resolve: 1.22.8 rollup: 4.52.5 stacktrace-parser: 0.1.11 @@ -9714,12 +9872,12 @@ snapshots: '@sentry/core': 9.46.0 optional: true - '@sentry/react@9.46.0(react@19.2.0)': + '@sentry/react@9.46.0(react@19.2.5)': dependencies: '@sentry/browser': 9.46.0 '@sentry/core': 9.46.0 hoist-non-react-statics: 3.3.2 - react: 19.2.0 + react: 19.2.5 optional: true '@sentry/tracing@5.30.0': @@ -9761,26 +9919,26 @@ snapshots: - supports-color optional: true - '@smartinvoicexyz/constants@0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@smartinvoicexyz/constants@0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@smartinvoicexyz/graphql@0.1.28(@types/node@20.19.23)(@types/react@19.2.2)(bufferutil@4.0.9)(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@smartinvoicexyz/graphql@0.1.28(@types/node@20.19.23)(@types/react@19.2.14)(bufferutil@4.0.9)(graphql@16.11.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@apollo/client': 3.14.0(@types/react@19.2.2)(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@apollo/client': 3.14.0(@types/react@19.2.14)(graphql@16.11.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) - '@smartinvoicexyz/constants': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@smartinvoicexyz/shared': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@smartinvoicexyz/constants': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@smartinvoicexyz/shared': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) graphql-request: 7.3.1(graphql@16.11.0) graphql-tag: 2.12.6(graphql@16.11.0) - graphql-zeus: 6.0.0(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + graphql-zeus: 6.0.0(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) lodash: 4.17.21 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -9798,23 +9956,23 @@ snapshots: - utf-8-validate - zod - '@smartinvoicexyz/shared@0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@smartinvoicexyz/shared@0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@smartinvoicexyz/constants': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@smartinvoicexyz/constants': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@smartinvoicexyz/types@0.1.28(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/node@20.19.23)(@types/react@19.2.2)(bufferutil@4.0.9)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@smartinvoicexyz/types@0.1.28(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/node@20.19.23)(@types/react@19.2.14)(bufferutil@4.0.9)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(graphql@16.11.0)(react-dom@19.2.5(react@19.2.5))(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@chakra-ui/react': 2.10.9(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@smartinvoicexyz/constants': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@smartinvoicexyz/graphql': 0.1.28(@types/node@20.19.23)(@types/react@19.2.2)(bufferutil@4.0.9)(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@smartinvoicexyz/shared': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - react: 19.2.0 - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@chakra-ui/react': 2.10.9(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@smartinvoicexyz/constants': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@smartinvoicexyz/graphql': 0.1.28(@types/node@20.19.23)(@types/react@19.2.14)(bufferutil@4.0.9)(graphql@16.11.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@smartinvoicexyz/shared': 0.1.28(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + react: 19.2.5 + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@emotion/react' - '@emotion/styled' @@ -9836,98 +9994,136 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@stablelib/aead@1.0.1': {} - - '@stablelib/binary@1.0.1': + '@solana/buffer-layout@4.0.1': dependencies: - '@stablelib/int': 1.0.1 - - '@stablelib/bytes@1.0.1': {} + buffer: 6.0.3 - '@stablelib/chacha20poly1305@1.0.1': + '@solana/codecs-core@2.3.0(typescript@5.9.3)': dependencies: - '@stablelib/aead': 1.0.1 - '@stablelib/binary': 1.0.1 - '@stablelib/chacha': 1.0.1 - '@stablelib/constant-time': 1.0.1 - '@stablelib/poly1305': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 - '@stablelib/chacha@1.0.1': + '@solana/codecs-numbers@2.3.0(typescript@5.9.3)': dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 - '@stablelib/constant-time@1.0.1': {} + '@solana/errors@2.3.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 14.0.3 + typescript: 5.9.3 - '@stablelib/ed25519@1.0.3': + '@solana/web3.js@1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@stablelib/random': 1.0.2 - '@stablelib/sha512': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@babel/runtime': 7.28.4 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@solana/buffer-layout': 4.0.1 + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + agentkeepalive: 4.6.0 + bn.js: 5.2.2 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.6) + node-fetch: 2.7.0 + rpc-websockets: 9.3.9 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate - '@stablelib/hash@1.0.1': {} + '@standard-schema/spec@1.1.0': {} - '@stablelib/hkdf@1.0.1': + '@swc/helpers@0.5.15': dependencies: - '@stablelib/hash': 1.0.1 - '@stablelib/hmac': 1.0.1 - '@stablelib/wipe': 1.0.1 + tslib: 2.8.1 - '@stablelib/hmac@1.0.1': + '@tailwindcss/node@4.2.4': dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.0 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.4 - '@stablelib/int@1.0.1': {} + '@tailwindcss/oxide-android-arm64@4.2.4': + optional: true - '@stablelib/keyagreement@1.0.1': - dependencies: - '@stablelib/bytes': 1.0.1 + '@tailwindcss/oxide-darwin-arm64@4.2.4': + optional: true - '@stablelib/poly1305@1.0.1': - dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@tailwindcss/oxide-darwin-x64@4.2.4': + optional: true - '@stablelib/random@1.0.2': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@tailwindcss/oxide-freebsd-x64@4.2.4': + optional: true - '@stablelib/sha256@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4': + optional: true - '@stablelib/sha512@1.0.1': - dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.2.4': + optional: true - '@stablelib/wipe@1.0.1': {} + '@tailwindcss/oxide-linux-x64-gnu@4.2.4': + optional: true - '@stablelib/x25519@1.0.3': - dependencies: - '@stablelib/keyagreement': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/wipe': 1.0.1 + '@tailwindcss/oxide-linux-x64-musl@4.2.4': + optional: true - '@standard-schema/spec@1.0.0': {} + '@tailwindcss/oxide-wasm32-wasi@4.2.4': + optional: true - '@swc/helpers@0.5.15': - dependencies: - tslib: 2.8.1 + '@tailwindcss/oxide-win32-arm64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.2.4': + optional: true + + '@tailwindcss/oxide@4.2.4': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-arm64': 4.2.4 + '@tailwindcss/oxide-darwin-x64': 4.2.4 + '@tailwindcss/oxide-freebsd-x64': 4.2.4 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.4 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.4 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.4 + '@tailwindcss/oxide-linux-x64-musl': 4.2.4 + '@tailwindcss/oxide-wasm32-wasi': 4.2.4 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.4 + + '@tailwindcss/postcss@4.2.4': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.2.4 + '@tailwindcss/oxide': 4.2.4 + postcss: 8.5.13 + tailwindcss: 4.2.4 + + '@tailwindcss/typography@0.5.19(tailwindcss@4.2.4)': + dependencies: + postcss-selector-parser: 6.0.10 + tailwindcss: 4.2.4 '@tanstack/query-core@5.90.5': {} - '@tanstack/react-query@5.90.5(react@19.2.0)': + '@tanstack/react-query@5.90.5(react@19.2.5)': dependencies: '@tanstack/query-core': 5.90.5 - react: 19.2.0 + react: 19.2.5 '@tsconfig/node10@1.0.11': {} @@ -9942,32 +10138,32 @@ snapshots: tslib: 2.8.1 optional: true - '@types/bn.js@4.11.6': - dependencies: - '@types/node': 20.19.23 - - '@types/bn.js@5.2.0': + '@types/chai@5.2.3': dependencies: - '@types/node': 20.19.23 + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/connect@3.4.38': dependencies: '@types/node': 20.19.23 - optional: true '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 + '@types/deep-eql@4.0.2': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 '@types/estree': 1.0.8 + optional: true '@types/eslint@9.6.1': dependencies: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + optional: true '@types/estree-jsx@1.0.5': dependencies: @@ -9983,9 +10179,9 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/hoist-non-react-statics@3.3.7(@types/react@19.2.2)': + '@types/hoist-non-react-statics@3.3.7(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 hoist-non-react-statics: 3.3.2 '@types/json-schema@7.0.15': {} @@ -9998,8 +10194,6 @@ snapshots: '@types/lodash@4.17.20': {} - '@types/lru-cache@5.1.1': {} - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -10013,20 +10207,14 @@ snapshots: '@types/node@11.15.54': {} + '@types/node@12.20.55': {} + '@types/node@20.19.23': dependencies: undici-types: 6.21.0 - '@types/node@22.7.5': - dependencies: - undici-types: 6.19.8 - '@types/parse-json@4.0.2': {} - '@types/pbkdf2@3.1.2': - dependencies: - '@types/node': 20.19.23 - '@types/pg-pool@2.0.6': dependencies: '@types/pg': 8.6.1 @@ -10039,17 +10227,13 @@ snapshots: pg-types: 2.2.0 optional: true - '@types/react-dom@19.2.2(@types/react@19.2.2)': + '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - '@types/react@19.2.2': + '@types/react@19.2.14': dependencies: - csstype: 3.1.3 - - '@types/secp256k1@4.0.7': - dependencies: - '@types/node': 20.19.23 + csstype: 3.2.3 '@types/shimmer@1.2.0': optional: true @@ -10059,25 +10243,31 @@ snapshots: '@types/node': 20.19.23 optional: true - '@types/to-ico@1.1.3': - dependencies: - '@types/node': 20.19.23 - '@types/trusted-types@2.0.7': {} '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)': + '@types/uuid@10.0.0': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 20.19.23 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 20.19.23 + + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -10086,14 +10276,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.2 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -10116,13 +10306,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -10146,13 +10336,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.38.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.46.2 '@typescript-eslint/types': 8.46.2 '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -10164,6 +10354,70 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@uniswap/lib@4.0.1-alpha': {} + + '@uniswap/sdk-core@7.13.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/strings': 5.7.0 + big.js: 5.2.2 + decimal.js-light: 2.5.1 + jsbi: 3.2.5 + tiny-invariant: 1.3.3 + toformat: 2.0.0 + tslib: 2.8.1 + + '@uniswap/swap-router-contracts@1.3.1(hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6))': + dependencies: + '@openzeppelin/contracts': 3.4.2-solc-0.7 + '@uniswap/v2-core': 1.0.1 + '@uniswap/v3-core': 1.0.1 + '@uniswap/v3-periphery': 1.4.4 + dotenv: 14.3.2 + hardhat-watcher: 2.5.0(hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6)) + transitivePeerDependencies: + - hardhat + + '@uniswap/v2-core@1.0.1': {} + + '@uniswap/v3-core@1.0.0': {} + + '@uniswap/v3-core@1.0.1': {} + + '@uniswap/v3-periphery@1.4.4': + dependencies: + '@openzeppelin/contracts': 3.4.2-solc-0.7 + '@uniswap/lib': 4.0.1-alpha + '@uniswap/v2-core': 1.0.1 + '@uniswap/v3-core': 1.0.1 + base64-sol: 1.0.1 + + '@uniswap/v3-sdk@3.30.0(hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6))': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/solidity': 5.8.0 + '@uniswap/sdk-core': 7.13.0 + '@uniswap/swap-router-contracts': 1.3.1(hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6)) + '@uniswap/v3-periphery': 1.4.4 + '@uniswap/v3-staker': 1.0.0 + jsbi: 3.2.5 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + tslib: 2.8.1 + transitivePeerDependencies: + - hardhat + + '@uniswap/v3-staker@1.0.0': + dependencies: + '@openzeppelin/contracts': 3.4.1-solc-0.7-2 + '@uniswap/v3-core': 1.0.0 + '@uniswap/v3-periphery': 1.4.4 + '@unrs/resolver-binding-android-arm-eabi@1.11.1': optional: true @@ -10223,12 +10477,6 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vanilla-extract/babel-plugin-debug-ids@1.2.2': - dependencies: - '@babel/core': 7.28.4 - transitivePeerDependencies: - - supports-color - '@vanilla-extract/css@1.17.3(babel-plugin-macros@3.1.0)': dependencies: '@emotion/hash': 0.9.2 @@ -10252,7 +10500,7 @@ snapshots: '@vanilla-extract/private': 1.0.9 css-what: 6.2.2 cssesc: 3.0.0 - csstype: 3.1.3 + csstype: 3.2.3 dedent: 1.7.0(babel-plugin-macros@3.1.0) deep-object-diff: 1.1.9 deepmerge: 4.3.1 @@ -10267,31 +10515,6 @@ snapshots: dependencies: '@vanilla-extract/private': 1.0.9 - '@vanilla-extract/integration@8.0.4(babel-plugin-macros@3.1.0)': - dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) - '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 - '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - dedent: 1.7.0(babel-plugin-macros@3.1.0) - esbuild: 0.25.11 - eval: 0.1.8 - find-up: 5.0.0 - javascript-stringify: 2.1.0 - mlly: 1.8.0 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - '@vanilla-extract/next-plugin@2.4.14(babel-plugin-macros@3.1.0)(next@15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(webpack@5.102.1)': - dependencies: - '@vanilla-extract/webpack-plugin': 2.3.22(babel-plugin-macros@3.1.0)(webpack@5.102.1) - next: 15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - webpack - '@vanilla-extract/private@1.0.9': {} '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.17.4(babel-plugin-macros@3.1.0))': @@ -10306,39 +10529,78 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0) - '@vanilla-extract/webpack-plugin@2.3.22(babel-plugin-macros@3.1.0)(webpack@5.102.1)': + '@vitest/expect@4.1.7': dependencies: - '@vanilla-extract/integration': 8.0.4(babel-plugin-macros@3.1.0) - debug: 4.4.3(supports-color@8.1.1) - loader-utils: 2.0.4 - picocolors: 1.1.1 - webpack: 5.102.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vercel/oidc@3.0.3': {} - - '@wagmi/connectors@6.1.0(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))(zod@4.1.12)': + '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6))': dependencies: - '@base-org/account': 1.1.1(@types/react@19.2.2)(bufferutil@4.0.9)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@4.1.12) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.2)(bufferutil@4.0.9)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(zod@4.1.12) - '@gemini-wallet/core': 0.2.0(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@metamask/sdk': 0.33.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.19(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@vitest/spy': 4.1.7 + estree-walker: 3.0.3 + magic-string: 0.30.21 optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' + vite: 8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6) + + '@vitest/pretty-format@4.1.7': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.7': + dependencies: + '@vitest/utils': 4.1.7 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.7': + dependencies: + '@vitest/pretty-format': 4.1.7 + '@vitest/utils': 4.1.7 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.7': {} + + '@vitest/ui@4.1.7(vitest@4.1.7)': + dependencies: + '@vitest/utils': 4.1.7 + fflate: 0.8.3 + flatted: 3.4.2 + pathe: 2.0.3 + sirv: 3.0.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vitest: 4.1.7(@opentelemetry/api@1.9.0)(@types/node@20.19.23)(@vitest/ui@4.1.7)(vite@8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)) + + '@vitest/utils@4.1.7': + dependencies: + '@vitest/pretty-format': 4.1.7 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@wagmi/connectors@6.1.0(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))(zod@4.1.12)': + dependencies: + '@base-org/account': 1.1.1(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@4.1.12) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.0.9)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(zod@4.1.12) + '@gemini-wallet/core': 0.2.0(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@metamask/sdk': 0.33.1(bufferutil@4.0.9)(utf-8-validate@6.0.6) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + porto: 0.2.19(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' @@ -10366,12 +10628,12 @@ snapshots: - wagmi - zod - '@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))': + '@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.9.3) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - zustand: 5.0.0(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + zustand: 5.0.0(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) optionalDependencies: '@tanstack/query-core': 5.90.5 typescript: 5.9.3 @@ -10381,96 +10643,13 @@ snapshots: - react - use-sync-external-store - '@walletconnect/auth-client@2.1.2(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': - dependencies: - '@ethersproject/hash': 5.8.0 - '@ethersproject/transactions': 5.8.0 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@walletconnect/core': 2.22.4(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/utils': 2.22.4(ioredis@5.8.2)(typescript@5.9.3)(zod@4.1.12) - events: 3.3.0 - isomorphic-unfetch: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - typescript - - uploadthing - - utf-8-validate - - zod - - '@walletconnect/core@2.17.1(bufferutil@4.0.9)(ioredis@5.8.2)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.1(ioredis@5.8.2) - '@walletconnect/utils': 2.17.1(ioredis@5.8.2) - '@walletconnect/window-getters': 1.0.1 - events: 3.3.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/core@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/core@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@6.0.6) '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 @@ -10478,7 +10657,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0(ioredis@5.8.2) - '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -10508,13 +10687,13 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/core@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@6.0.6) '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 @@ -10522,7 +10701,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1(ioredis@5.8.2) - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -10552,66 +10731,22 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.22.4(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': - dependencies: - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 3.0.0 - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.1.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.22.4(ioredis@5.8.2) - '@walletconnect/utils': 2.22.4(ioredis@5.8.2)(typescript@5.9.3)(zod@4.1.12) - '@walletconnect/window-getters': 1.0.1 - es-toolkit: 1.39.3 - events: 3.3.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - typescript - - uploadthing - - utf-8-validate - - zod - '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/types': 2.21.1(ioredis@5.8.2) - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -10678,22 +10813,12 @@ snapshots: '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.0.9)(utf-8-validate@6.0.6)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10)': - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/safe-json': 1.0.2 - events: 3.3.0 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -10728,24 +10853,10 @@ snapshots: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - '@walletconnect/logger@3.0.0': - dependencies: - '@walletconnect/safe-json': 1.0.2 - pino: 10.0.0 - '@walletconnect/relay-api@1.0.11': dependencies: '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/relay-auth@1.0.4': - dependencies: - '@stablelib/ed25519': 1.0.3 - '@stablelib/random': 1.0.2 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - tslib: 1.14.1 - uint8arrays: 3.1.1 - '@walletconnect/relay-auth@1.1.0': dependencies: '@noble/curves': 1.8.0 @@ -10758,50 +10869,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.17.1(bufferutil@4.0.9)(ioredis@5.8.2)(utf-8-validate@5.0.10)': + '@walletconnect/sign-client@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@walletconnect/core': 2.17.1(bufferutil@4.0.9)(ioredis@5.8.2)(utf-8-validate@5.0.10) - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.1(ioredis@5.8.2) - '@walletconnect/utils': 2.17.1(ioredis@5.8.2) - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - ioredis - - uploadthing - - utf-8-validate - - '@walletconnect/sign-client@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': - dependencies: - '@walletconnect/core': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/core': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0(ioredis@5.8.2) - '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -10828,16 +10905,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/sign-client@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@walletconnect/core': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/core': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1(ioredis@5.8.2) - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -10868,35 +10945,6 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/types@2.17.1(ioredis@5.8.2)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 2.1.2 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - '@walletconnect/types@2.21.0(ioredis@5.8.2)': dependencies: '@walletconnect/events': 1.0.1 @@ -10955,177 +11003,20 @@ snapshots: - ioredis - uploadthing - '@walletconnect/types@2.22.4(ioredis@5.8.2)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.2 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 3.0.0 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@walletconnect/types': 2.21.0(ioredis@5.8.2) - '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - es-toolkit: 1.33.0 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - typescript - - uploadthing - - utf-8-validate - - zod - - '@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': - dependencies: - '@walletconnect/events': 1.0.1 - '@walletconnect/jsonrpc-http-connection': 1.0.8 - '@walletconnect/jsonrpc-provider': 1.0.14 - '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@walletconnect/types': 2.21.1(ioredis@5.8.2) - '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - es-toolkit: 1.33.0 - events: 3.3.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - bufferutil - - db0 - - encoding - - ioredis - - typescript - - uploadthing - - utf-8-validate - - zod - - '@walletconnect/utils@2.17.1(ioredis@5.8.2)': - dependencies: - '@ethersproject/hash': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.0.4 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.17.1(ioredis@5.8.2) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - detect-browser: 5.3.0 - elliptic: 6.5.7 - query-string: 7.1.3 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@react-native-async-storage/async-storage' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - db0 - - ioredis - - uploadthing - - '@walletconnect/utils@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': - dependencies: - '@noble/ciphers': 1.2.1 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.1.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/types': 2.21.0(ioredis@5.8.2) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - bs58: 6.0.0 - detect-browser: 5.3.0 - query-string: 7.1.3 - uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/utils': 2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + es-toolkit: 1.33.0 + events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11145,31 +11036,27 @@ snapshots: - aws4fetch - bufferutil - db0 + - encoding - ioredis - typescript - uploadthing - utf-8-validate - zod - '@walletconnect/utils@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@noble/ciphers': 1.2.1 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@walletconnect/events': 1.0.1 + '@walletconnect/jsonrpc-http-connection': 1.0.8 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/relay-api': 1.0.11 - '@walletconnect/relay-auth': 1.1.0 - '@walletconnect/safe-json': 1.0.2 - '@walletconnect/time': 1.0.2 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) '@walletconnect/types': 2.21.1(ioredis@5.8.2) - '@walletconnect/window-getters': 1.0.1 - '@walletconnect/window-metadata': 1.0.1 - bs58: 6.0.0 - detect-browser: 5.3.0 - query-string: 7.1.3 - uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + '@walletconnect/utils': 2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + es-toolkit: 1.33.0 + events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11189,34 +11076,32 @@ snapshots: - aws4fetch - bufferutil - db0 + - encoding - ioredis - typescript - uploadthing - utf-8-validate - zod - '@walletconnect/utils@2.22.4(ioredis@5.8.2)(typescript@5.9.3)(zod@4.1.12)': + '@walletconnect/utils@2.21.0(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@msgpack/msgpack': 3.1.2 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.7 - '@noble/hashes': 1.8.0 - '@scure/base': 1.2.6 + '@noble/ciphers': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) - '@walletconnect/logger': 3.0.0 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.22.4(ioredis@5.8.2) + '@walletconnect/types': 2.21.0(ioredis@5.8.2) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 - blakejs: 1.2.1 bs58: 6.0.0 detect-browser: 5.3.0 - ox: 0.9.3(typescript@5.9.3)(zod@4.1.12) - uint8arrays: 3.1.1 + query-string: 7.1.3 + uint8arrays: 3.1.0 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11234,22 +11119,33 @@ snapshots: - '@vercel/functions' - '@vercel/kv' - aws4fetch + - bufferutil - db0 - ioredis - typescript - uploadthing + - utf-8-validate - zod - '@walletconnect/web3wallet@1.16.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)': + '@walletconnect/utils@2.21.1(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)': dependencies: - '@walletconnect/auth-client': 2.1.2(bufferutil@4.0.9)(ioredis@5.8.2)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) - '@walletconnect/core': 2.17.1(bufferutil@4.0.9)(ioredis@5.8.2)(utf-8-validate@5.0.10) - '@walletconnect/jsonrpc-provider': 1.0.14 + '@noble/ciphers': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.17.1(bufferutil@4.0.9)(ioredis@5.8.2)(utf-8-validate@5.0.10) - '@walletconnect/types': 2.17.1(ioredis@5.8.2) - '@walletconnect/utils': 2.17.1(ioredis@5.8.2) + '@walletconnect/keyvaluestorage': 1.1.1(ioredis@5.8.2) + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.21.1(ioredis@5.8.2) + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.0 + viem: 2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11269,7 +11165,6 @@ snapshots: - aws4fetch - bufferutil - db0 - - encoding - ioredis - typescript - uploadthing @@ -11289,20 +11184,26 @@ snapshots: dependencies: '@webassemblyjs/helper-numbers': 1.13.2 '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + optional: true - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + '@webassemblyjs/floating-point-hex-parser@1.13.2': + optional: true - '@webassemblyjs/helper-api-error@1.13.2': {} + '@webassemblyjs/helper-api-error@1.13.2': + optional: true - '@webassemblyjs/helper-buffer@1.14.1': {} + '@webassemblyjs/helper-buffer@1.14.1': + optional: true '@webassemblyjs/helper-numbers@1.13.2': dependencies: '@webassemblyjs/floating-point-hex-parser': 1.13.2 '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 + optional: true - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + optional: true '@webassemblyjs/helper-wasm-section@1.14.1': dependencies: @@ -11310,16 +11211,20 @@ snapshots: '@webassemblyjs/helper-buffer': 1.14.1 '@webassemblyjs/helper-wasm-bytecode': 1.13.2 '@webassemblyjs/wasm-gen': 1.14.1 + optional: true '@webassemblyjs/ieee754@1.13.2': dependencies: '@xtuc/ieee754': 1.2.0 + optional: true '@webassemblyjs/leb128@1.13.2': dependencies: '@xtuc/long': 4.2.2 + optional: true - '@webassemblyjs/utf8@1.13.2': {} + '@webassemblyjs/utf8@1.13.2': + optional: true '@webassemblyjs/wasm-edit@1.14.1': dependencies: @@ -11331,6 +11236,7 @@ snapshots: '@webassemblyjs/wasm-opt': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 '@webassemblyjs/wast-printer': 1.14.1 + optional: true '@webassemblyjs/wasm-gen@1.14.1': dependencies: @@ -11339,6 +11245,7 @@ snapshots: '@webassemblyjs/ieee754': 1.13.2 '@webassemblyjs/leb128': 1.13.2 '@webassemblyjs/utf8': 1.13.2 + optional: true '@webassemblyjs/wasm-opt@1.14.1': dependencies: @@ -11346,6 +11253,7 @@ snapshots: '@webassemblyjs/helper-buffer': 1.14.1 '@webassemblyjs/wasm-gen': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 + optional: true '@webassemblyjs/wasm-parser@1.14.1': dependencies: @@ -11355,11 +11263,13 @@ snapshots: '@webassemblyjs/ieee754': 1.13.2 '@webassemblyjs/leb128': 1.13.2 '@webassemblyjs/utf8': 1.13.2 + optional: true '@webassemblyjs/wast-printer@1.14.1': dependencies: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + optional: true '@wry/caches@1.0.1': dependencies: @@ -11377,9 +11287,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@xtuc/ieee754@1.2.0': {} + '@xtuc/ieee754@1.2.0': + optional: true - '@xtuc/long@4.2.2': {} + '@xtuc/long@4.2.2': + optional: true '@zag-js/dom-query@0.31.1': {} @@ -11389,22 +11301,26 @@ snapshots: dependencies: '@zag-js/dom-query': 0.31.1 + '@zoralabs/coins-sdk@0.4.9(abitype@1.2.3(typescript@5.9.3)(zod@4.1.12))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))': + dependencies: + '@hey-api/client-fetch': 0.8.4 + '@zoralabs/protocol-deployments': 0.7.5 + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + + '@zoralabs/protocol-deployments@0.7.5': {} + abitype@1.0.8(typescript@5.9.3)(zod@4.1.12): optionalDependencies: typescript: 5.9.3 zod: 4.1.12 - abitype@1.1.0(typescript@5.9.3)(zod@3.22.4): + abitype@1.2.3(typescript@5.9.3)(zod@3.22.4): optionalDependencies: typescript: 5.9.3 zod: 3.22.4 - abitype@1.1.0(typescript@5.9.3)(zod@4.1.12): - optionalDependencies: - typescript: 5.9.3 - zod: 4.1.12 - - abitype@1.1.1(typescript@5.9.3)(zod@4.1.12): + abitype@1.2.3(typescript@5.9.3)(zod@4.1.12): optionalDependencies: typescript: 5.9.3 zod: 4.1.12 @@ -11422,6 +11338,7 @@ snapshots: acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: acorn: 8.15.0 + optional: true acorn-jsx@5.3.2(acorn@8.15.0): dependencies: @@ -11437,27 +11354,21 @@ snapshots: adm-zip@0.5.16: {} - aes-js@4.0.0-beta.5: {} - agent-base@6.0.2: dependencies: debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - ai@5.0.80(zod@4.1.12): - dependencies: - '@ai-sdk/gateway': 2.0.1(zod@4.1.12) - '@ai-sdk/provider': 2.0.0 - '@ai-sdk/provider-utils': 3.0.12(zod@4.1.12) - '@opentelemetry/api': 1.9.0 - zod: 4.1.12 - ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -11466,6 +11377,7 @@ snapshots: dependencies: ajv: 8.17.1 fast-deep-equal: 3.1.3 + optional: true ajv@6.12.6: dependencies: @@ -11495,10 +11407,6 @@ snapshots: ansi-regex@6.2.2: {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -11625,13 +11533,7 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 - arrify@1.0.1: {} - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - - assert-plus@1.0.0: {} + assertion-error@2.0.1: {} ast-types-flow@0.0.8: {} @@ -11643,8 +11545,6 @@ snapshots: async@3.2.6: {} - asynckit@0.4.0: {} - atomic-sleep@1.0.0: {} atomically@1.7.0: {} @@ -11653,20 +11553,8 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - aws-sign2@0.7.0: {} - - aws4@1.13.2: {} - axe-core@4.11.0: {} - axios@1.12.2: - dependencies: - follow-redirects: 1.15.11(debug@4.4.3) - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axobject-query@4.1.0: {} babel-plugin-macros@3.1.0: @@ -11675,6 +11563,10 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.11 + babel-plugin-react-compiler@1.0.0: + dependencies: + '@babel/types': 7.28.4 + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -11687,18 +11579,16 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.19: {} + base64-sol@1.0.1: {} - bcrypt-pbkdf@1.0.2: - dependencies: - tweetnacl: 0.14.5 + baseline-browser-mapping@2.10.27: {} + + baseline-browser-mapping@2.8.19: {} big.js@5.2.2: {} big.js@6.2.2: {} - bignumber.js@2.4.0: {} - bignumber.js@9.3.1: {} binary-extensions@2.3.0: {} @@ -11715,13 +11605,7 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blakejs@1.2.1: {} - - bmp-js@0.0.1: {} - - bmp-js@0.0.3: {} - - bn.js@4.12.2: {} + bn.js@4.12.3: {} bn.js@5.2.2: {} @@ -11742,6 +11626,12 @@ snapshots: transitivePeerDependencies: - supports-color + borsh@0.7.0: + dependencies: + bn.js: 5.2.2 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + bowser@2.12.1: {} boxen@5.1.2: @@ -11772,15 +11662,6 @@ snapshots: browser-stdout@1.3.1: {} - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.7 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - browserslist@4.26.3: dependencies: baseline-browser-mapping: 2.8.19 @@ -11797,28 +11678,11 @@ snapshots: dependencies: base-x: 5.0.1 - bs58check@2.1.2: - dependencies: - bs58: 4.0.1 - create-hash: 1.2.0 - safe-buffer: 5.2.1 - - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - buffer-crc32@0.2.13: {} - buffer-equal@0.0.1: {} - - buffer-fill@1.0.0: {} - buffer-from@1.1.2: {} - buffer-xor@1.0.3: {} + buffer-layout@1.2.2: {} buffer@5.7.1: dependencies: @@ -11861,21 +11725,9 @@ snapshots: caniuse-lite@1.0.30001751: {} - caseless@0.12.0: {} - ccount@2.0.1: {} - centra@2.7.0: - dependencies: - follow-redirects: 1.15.11(debug@4.4.3) - transitivePeerDependencies: - - debug - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + chai@6.2.2: {} chalk@3.0.0: dependencies: @@ -11916,19 +11768,31 @@ snapshots: dependencies: readdirp: 4.1.2 - chrome-trace-event@1.0.4: {} + chrome-trace-event@1.0.4: + optional: true ci-info@2.0.0: {} - cipher-base@1.0.7: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - to-buffer: 1.2.2 - cjs-module-lexer@1.4.3: optional: true + clanker-sdk@4.2.16(@types/node@20.19.23)(typescript@5.9.3)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)): + dependencies: + '@openzeppelin/merkle-tree': 1.0.8 + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) + commander: 14.0.3 + inquirer: 8.2.7(@types/node@20.19.23) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + zod: 4.1.12 + transitivePeerDependencies: + - '@types/node' + - supports-color + - typescript + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + clean-stack@2.2.0: {} cli-boxes@2.2.1: {} @@ -11943,6 +11807,8 @@ snapshots: cli-spinners@2.9.2: {} + cli-width@3.0.0: {} + cli-width@4.1.0: {} client-only@0.0.1: {} @@ -11977,33 +11843,26 @@ snapshots: clsx@2.1.1: {} - cluster-key-slot@1.1.2: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 + cluster-key-slot@1.1.2: + optional: true color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} color2k@2.0.3: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} command-exists@1.2.9: {} + commander@14.0.3: {} + commander@2.20.3: {} - commander@3.0.2: {} + commander@8.3.0: {} commondir@1.0.1: optional: true @@ -12030,9 +11889,7 @@ snapshots: pkg-up: 3.1.0 semver: 7.7.3 - confbox@0.1.8: {} - - config-maker@0.0.6(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10): + config-maker@0.0.6(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6): dependencies: adm-zip: 0.5.16 archiver: 5.3.2 @@ -12055,7 +11912,7 @@ snapshots: run-async: 2.4.1 ts-node: 10.9.2(@types/node@20.19.23)(typescript@5.9.3) ts-patch: 3.3.0 - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6) yargs: 17.7.2 transitivePeerDependencies: - '@swc/core' @@ -12088,8 +11945,6 @@ snapshots: dependencies: toggle-selection: 1.0.6 - core-util-is@1.0.2: {} - core-util-is@1.0.3: {} cosmiconfig@7.1.0: @@ -12107,23 +11962,6 @@ snapshots: crc-32: 1.2.2 readable-stream: 3.6.2 - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.7 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.3 - sha.js: 2.4.12 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.7 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.3 - safe-buffer: 5.2.1 - sha.js: 2.4.12 - create-require@1.1.1: {} cross-fetch@3.2.0: @@ -12156,26 +11994,26 @@ snapshots: dependencies: uncrypto: 0.1.3 + crypto-hash@1.3.0: {} + css-what@6.2.2: {} cssesc@3.0.0: {} csstype@3.1.3: {} - cuer@0.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3): + csstype@3.2.3: {} + + cuer@0.0.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3): dependencies: qr: 0.5.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: typescript: 5.9.3 damerau-levenshtein@1.0.8: {} - dashdash@1.14.1: - dependencies: - assert-plus: 1.0.0 - data-uri-to-buffer@4.0.1: {} data-view-buffer@1.0.2: @@ -12230,6 +12068,10 @@ snapshots: decamelize@4.0.0: {} + decimal.js-light@2.5.1: {} + + decimal.js@10.6.0: {} + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -12268,17 +12110,18 @@ snapshots: defu@6.1.4: {} - delayed-stream@1.0.0: {} + delay@5.0.0: {} - denque@2.1.0: {} + denque@2.1.0: + optional: true depd@2.0.0: {} dequal@2.0.3: {} - derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0)): + derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5)): dependencies: - valtio: 1.13.2(@types/react@19.2.2)(react@19.2.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) destr@2.0.5: {} @@ -12296,7 +12139,7 @@ snapshots: diff@4.0.2: {} - diff@5.2.0: {} + diff@5.2.2: {} dijkstrajs@1.0.3: {} @@ -12304,30 +12147,17 @@ snapshots: dependencies: esutils: 2.0.3 - dom-serializer@2.0.0: + dot-case@3.0.4: dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - dom-walk@0.1.2: {} - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 + no-case: 3.0.4 + tslib: 2.8.1 dot-prop@6.0.1: dependencies: is-obj: 2.0.0 + dotenv@14.3.2: {} + dotenv@16.6.1: {} dotenv@17.2.3: {} @@ -12345,11 +12175,6 @@ snapshots: readable-stream: 3.6.2 stream-shift: 1.0.3 - ecc-jsbn@0.1.2: - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - eciesjs@0.4.16: dependencies: '@ecies/ciphers': 0.2.4(@noble/ciphers@1.3.0) @@ -12361,19 +12186,9 @@ snapshots: electron-to-chromium@1.5.238: {} - elliptic@6.5.7: - dependencies: - bn.js: 4.12.2 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - elliptic@6.6.1: dependencies: - bn.js: 4.12.2 + bn.js: 4.12.3 brorand: 1.1.0 hash.js: 1.1.7 hmac-drbg: 1.0.1 @@ -12385,8 +12200,6 @@ snapshots: emoji-regex@9.2.2: {} - emojis-list@3.0.0: {} - encode-utf8@1.0.3: {} encodeurl@1.0.2: {} @@ -12397,12 +12210,12 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + engine.io-client@6.6.3(bufferutil@4.0.9)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 engine.io-parser: 5.2.3 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.6) xmlhttprequest-ssl: 2.1.2 transitivePeerDependencies: - bufferutil @@ -12411,18 +12224,16 @@ snapshots: engine.io-parser@5.2.3: {} - enhanced-resolve@5.18.3: + enhanced-resolve@5.21.0: dependencies: graceful-fs: 4.2.11 - tapable: 2.3.0 + tapable: 2.3.3 enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - entities@4.5.0: {} - entities@6.0.1: {} env-paths@2.2.1: {} @@ -12511,7 +12322,10 @@ snapshots: iterator.prototype: 1.1.5 safe-array-concat: 1.1.3 - es-module-lexer@1.7.0: {} + es-module-lexer@1.7.0: + optional: true + + es-module-lexer@2.1.0: {} es-object-atoms@1.1.1: dependencies: @@ -12536,9 +12350,11 @@ snapshots: es-toolkit@1.33.0: {} - es-toolkit@1.39.3: {} + es6-promise@4.2.8: {} - es6-promise@3.3.1: {} + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 esbuild@0.25.11: optionalDependencies: @@ -12579,18 +12395,18 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@16.0.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3): + eslint-config-next@16.0.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: '@next/eslint-plugin-next': 16.0.0 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.38.0) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.38.0) - eslint-plugin-react: 7.37.5(eslint@9.38.0) - eslint-plugin-react-hooks: 7.0.0(eslint@9.38.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-react: 7.37.5(eslint@9.38.0(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.0.0(eslint@9.38.0(jiti@2.6.1)) globals: 16.4.0 - typescript-eslint: 8.46.2(eslint@9.38.0)(typescript@5.9.3) + typescript-eslint: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -12599,9 +12415,9 @@ snapshots: - eslint-plugin-import-x - supports-color - eslint-config-prettier@8.3.0(eslint@9.38.0): + eslint-config-prettier@8.3.0(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -12611,33 +12427,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.38.0): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.38.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) get-tsconfig: 4.13.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - eslint: 9.38.0 + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.38.0) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.38.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -12646,9 +12462,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.38.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12660,13 +12476,13 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.38.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.38.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -12676,7 +12492,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -12685,28 +12501,28 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.3.0(eslint@9.38.0))(eslint@9.38.0)(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@8.3.0(eslint@9.38.0(jiti@2.6.1)))(eslint@9.38.0(jiti@2.6.1))(prettier@3.6.2): dependencies: - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 8.3.0(eslint@9.38.0) + eslint-config-prettier: 8.3.0(eslint@9.38.0(jiti@2.6.1)) - eslint-plugin-react-hooks@7.0.0(eslint@9.38.0): + eslint-plugin-react-hooks@7.0.0(eslint@9.38.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.4 '@babel/parser': 7.28.4 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.1.12 zod-validation-error: 4.0.2(zod@4.1.12) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.38.0): + eslint-plugin-react@7.37.5(eslint@9.38.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -12714,7 +12530,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -12728,20 +12544,21 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.38.0): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) - eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0): + eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1)): dependencies: - eslint: 9.38.0 + eslint: 9.38.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + optional: true eslint-scope@8.4.0: dependencies: @@ -12752,9 +12569,9 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.38.0: + eslint@9.38.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.1 @@ -12788,6 +12605,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -12805,7 +12624,8 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} + estraverse@4.3.0: + optional: true estraverse@5.3.0: {} @@ -12814,6 +12634,10 @@ snapshots: estree-walker@2.0.2: optional: true + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@2.0.3: {} etag@1.8.1: {} @@ -12845,24 +12669,6 @@ snapshots: dependencies: fast-safe-stringify: 2.1.1 - ethereum-cryptography@0.1.3: - dependencies: - '@types/pbkdf2': 3.1.2 - '@types/secp256k1': 4.0.7 - blakejs: 1.2.1 - browserify-aes: 1.2.0 - bs58check: 2.1.2 - create-hash: 1.2.0 - create-hmac: 1.1.7 - hash.js: 1.1.7 - keccak: 3.0.4 - pbkdf2: 3.1.5 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - scrypt-js: 3.0.1 - secp256k1: 4.0.4 - setimmediate: 1.0.5 - ethereum-cryptography@1.2.0: dependencies: '@noble/hashes': 1.2.0 @@ -12880,62 +12686,19 @@ snapshots: 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 - - ethereumjs-abi@0.6.8: - dependencies: - bn.js: 4.12.2 - ethereumjs-util: 6.2.1 - - ethereumjs-util@6.2.1: - dependencies: - '@types/bn.js': 4.11.6 - bn.js: 4.12.2 - create-hash: 1.2.0 - elliptic: 6.6.1 - ethereum-cryptography: 0.1.3 - ethjs-util: 0.1.6 - rlp: 2.2.7 - - ethers@6.15.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethjs-util@0.1.6: - dependencies: - is-hex-prefixed: 1.0.0 - strip-hex-prefix: 1.0.0 - - eval@0.1.8: - dependencies: - '@types/node': 20.19.23 - require-like: 0.1.2 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 eventemitter2@6.4.9: {} + eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} events@3.3.0: {} - eventsource-parser@3.0.6: {} - - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - execa@1.0.0: dependencies: cross-spawn: 6.0.6 @@ -12970,7 +12733,7 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 - exif-parser@0.1.12: {} + expect-type@1.3.0: {} express@4.21.2: dependencies: @@ -13015,7 +12778,7 @@ snapshots: readable-stream: 3.6.2 webextension-polyfill: 0.10.0 - extsprintf@1.3.0: {} + eyes@0.1.8: {} fast-deep-equal@3.1.3: {} @@ -13045,6 +12808,8 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-stable-stringify@1.0.0: {} + fast-uri@3.1.0: {} fastq@1.19.1: @@ -13055,11 +12820,21 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + fflate@0.8.3: {} + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + figures@5.0.0: dependencies: escape-string-regexp: 5.0.0 @@ -13069,8 +12844,6 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-type@3.9.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -13091,10 +12864,6 @@ snapshots: find-root@1.1.0: {} - find-up@2.1.0: - dependencies: - locate-path: 2.0.0 - find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -13120,11 +12889,13 @@ snapshots: flatted@3.3.3: {} + flatted@3.4.2: {} + focus-lock@1.3.6: dependencies: tslib: 2.8.1 - follow-redirects@1.15.11(debug@4.4.3): + follow-redirects@1.16.0(debug@4.4.3): optionalDependencies: debug: 4.4.3(supports-color@8.1.1) @@ -13132,34 +12903,18 @@ snapshots: dependencies: is-callable: 1.2.7 - forever-agent@0.6.1: {} - - form-data@2.3.3: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - form-data@4.0.4: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 - formik@2.4.6(@types/react@19.2.2)(react@19.2.0): + formik@2.4.6(@types/react@19.2.14)(react@19.2.5): dependencies: - '@types/hoist-non-react-statics': 3.3.7(@types/react@19.2.2) + '@types/hoist-non-react-statics': 3.3.7(@types/react@19.2.14) deepmerge: 2.2.1 hoist-non-react-statics: 3.3.2 lodash: 4.17.21 lodash-es: 4.17.21 - react: 19.2.0 + react: 19.2.5 react-fast-compare: 2.0.4 tiny-warning: 1.0.3 tslib: 2.8.1 @@ -13173,15 +12928,15 @@ snapshots: fp-ts@1.19.3: {} - framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + framer-motion@12.23.24(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: motion-dom: 12.23.23 motion-utils: 12.23.6 tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.4.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) framesync@6.1.2: dependencies: @@ -13191,14 +12946,6 @@ snapshots: fs-constants@1.0.0: {} - fs-extra@0.30.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 2.4.0 - klaw: 1.3.1 - path-is-absolute: 1.0.1 - rimraf: 2.7.1 - fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -13249,11 +12996,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-stream@2.3.1: - dependencies: - object-assign: 4.1.1 - pinkie-promise: 2.0.1 - get-stream@4.1.0: dependencies: pump: 3.0.3 @@ -13270,9 +13012,7 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 - getpass@0.1.7: - dependencies: - assert-plus: 1.0.0 + github-slugger@2.0.0: {} glob-parent@5.1.2: dependencies: @@ -13282,16 +13022,8 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - - glob@7.2.0: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + glob-to-regexp@0.4.1: + optional: true glob@7.2.3: dependencies: @@ -13324,11 +13056,6 @@ snapshots: kind-of: 6.0.3 which: 4.0.0 - global@4.4.0: - dependencies: - min-document: 2.19.0 - process: 0.11.10 - globals@14.0.0: {} globals@16.4.0: {} @@ -13369,9 +13096,9 @@ snapshots: graphql-js-tree: 1.0.9 json-schema: 0.3.0 - graphql-zeus@6.0.0(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10): + graphql-zeus@6.0.0(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6): dependencies: - config-maker: 0.0.6(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + config-maker: 0.0.6(@types/node@20.19.23)(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) cross-fetch: 3.2.0 graphql-zeus-core: 6.0.0 graphql-zeus-jsonschema: 6.0.0 @@ -13403,71 +13130,62 @@ snapshots: ufo: 1.6.1 uncrypto: 0.1.3 - har-schema@2.0.0: {} - - har-validator@5.1.5: + hardhat-watcher@2.5.0(hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6)): dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 + chokidar: 3.6.0 + hardhat: 2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6) - hardhat@2.22.4(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@5.0.10): + hardhat@2.28.6(bufferutil@4.0.9)(ts-node@10.9.2(@types/node@20.19.23)(typescript@5.9.3))(typescript@5.9.3)(utf-8-validate@6.0.6): dependencies: + '@ethereumjs/util': 9.1.0 '@ethersproject/abi': 5.8.0 - '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/edr': 0.3.8 - '@nomicfoundation/ethereumjs-common': 4.0.4 - '@nomicfoundation/ethereumjs-tx': 5.0.4 - '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/edr': 0.12.0-next.23 '@nomicfoundation/solidity-analyzer': 0.1.2 '@sentry/node': 5.30.0 - '@types/bn.js': 5.2.0 - '@types/lru-cache': 5.1.1 adm-zip: 0.4.16 aggregate-error: 3.1.0 ansi-escapes: 4.3.2 boxen: 5.1.2 - chalk: 2.4.2 - chokidar: 3.6.0 + chokidar: 4.0.3 ci-info: 2.0.0 debug: 4.4.3(supports-color@8.1.1) enquirer: 2.4.1 env-paths: 2.2.1 ethereum-cryptography: 1.2.0 - ethereumjs-abi: 0.6.8 - find-up: 2.1.0 + find-up: 5.0.0 fp-ts: 1.19.3 fs-extra: 7.0.1 - glob: 7.2.0 - immutable: 4.3.7 + immutable: 4.3.8 io-ts: 1.10.4 + json-stream-stringify: 3.1.6 keccak: 3.0.4 lodash: 4.17.21 + micro-eth-signer: 0.14.0 mnemonist: 0.38.5 mocha: 10.8.2 p-map: 4.0.0 + picocolors: 1.1.1 raw-body: 2.5.2 resolve: 1.17.0 semver: 6.3.1 - solc: 0.7.3(debug@4.4.3) + solc: 0.8.26(debug@4.4.3) source-map-support: 0.5.21 stacktrace-parser: 0.1.11 + tinyglobby: 0.2.16 tsort: 0.0.1 undici: 5.29.0 uuid: 8.3.2 - ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6) optionalDependencies: ts-node: 10.9.2(@types/node@20.19.23)(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - bufferutil - - c-kzg - supports-color - utf-8-validate has-bigints@1.1.0: {} - has-flag@3.0.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.2: @@ -13484,13 +13202,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - hash-base@3.1.2: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - to-buffer: 1.2.2 - hash.js@1.1.7: dependencies: inherits: 2.0.4 @@ -13511,6 +13222,14 @@ snapshots: vfile-location: 5.0.3 web-namespaces: 2.0.1 + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 @@ -13567,6 +13286,10 @@ snapshots: web-namespaces: 2.0.1 zwitch: 2.0.4 + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -13599,32 +13322,10 @@ snapshots: hono@4.10.2: {} - html-dom-parser@5.1.1: - dependencies: - domhandler: 5.0.3 - htmlparser2: 10.0.0 - - html-react-parser@5.2.7(@types/react@19.2.2)(react@19.2.0): - dependencies: - domhandler: 5.0.3 - html-dom-parser: 5.1.1 - react: 19.2.0 - react-property: 2.0.2 - style-to-js: 1.1.18 - optionalDependencies: - '@types/react': 19.2.2 - html-url-attributes@3.0.1: {} html-void-elements@3.0.0: {} - htmlparser2@10.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 6.0.1 - http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -13633,12 +13334,6 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-signature@1.2.0: - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.18.0 - https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -13650,6 +13345,10 @@ snapshots: human-signals@3.0.1: {} + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -13668,9 +13367,7 @@ snapshots: ignore@7.0.5: {} - image-size@0.5.5: {} - - immutable@4.3.7: {} + immutable@4.3.8: {} import-fresh@3.3.1: dependencies: @@ -13700,6 +13397,26 @@ snapshots: inline-style-parser@0.2.4: {} + inquirer@8.2.7(@types/node@20.19.23): + dependencies: + '@inquirer/external-editor': 1.0.2(@types/node@20.19.23) + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' + inquirer@9.3.8(@types/node@20.19.23): dependencies: '@inquirer/external-editor': 1.0.2(@types/node@20.19.23) @@ -13740,13 +13457,14 @@ snapshots: standard-as-callback: 2.1.0 transitivePeerDependencies: - supports-color - - ip-regex@1.0.3: {} + optional: true ipaddr.js@1.9.1: {} iron-webcrypto@1.2.1: {} + is-absolute-url@4.0.1: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -13821,8 +13539,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-function@1.0.2: {} - is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 @@ -13835,8 +13551,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-hex-prefixed@1.0.0: {} - is-hexadecimal@2.0.1: {} is-interactive@1.0.0: {} @@ -13899,8 +13613,6 @@ snapshots: dependencies: which-typed-array: 1.1.19 - is-typedarray@1.0.0: {} - is-unicode-supported@0.1.0: {} is-unicode-supported@1.3.0: {} @@ -13928,29 +13640,17 @@ snapshots: isexe@3.1.1: {} - isomorphic-fetch@3.0.0: - dependencies: - node-fetch: 2.7.0 - whatwg-fetch: 3.6.20 - transitivePeerDependencies: - - encoding - - isomorphic-unfetch@3.1.0: + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6)): dependencies: - node-fetch: 2.7.0 - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6) - isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + isows@1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.6)): dependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.6) - isows@1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + isows@1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6)): dependencies: - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - - isstream@0.1.2: {} + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6) iterator.prototype@1.1.5: dependencies: @@ -13961,40 +13661,32 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - javascript-stringify@2.1.0: {} + jayson@4.3.0(bufferutil@4.0.9)(utf-8-validate@6.0.6): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6)) + json-stringify-safe: 5.0.1 + stream-json: 1.9.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate jest-worker@27.5.1: dependencies: '@types/node': 20.19.23 merge-stream: 2.0.0 supports-color: 8.1.1 + optional: true - jimp@0.2.28: - dependencies: - bignumber.js: 2.4.0 - bmp-js: 0.0.3 - es6-promise: 3.3.1 - exif-parser: 0.1.12 - file-type: 3.9.0 - jpeg-js: 0.2.0 - load-bmfont: 1.4.2 - mime: 1.6.0 - mkdirp: 0.5.1 - pixelmatch: 4.0.2 - pngjs: 3.4.0 - read-chunk: 1.0.1 - request: 2.88.2 - stream-to-buffer: 0.1.0 - tinycolor2: 1.6.0 - url-regex: 3.2.0 - transitivePeerDependencies: - - debug - - jpeg-js@0.1.2: {} - - jpeg-js@0.2.0: {} - - js-base64@3.7.8: {} + jiti@2.6.1: {} js-sha3@0.8.0: {} @@ -14004,7 +13696,9 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@0.1.1: {} + jsbi@3.2.5: {} + + jsbi@4.3.2: {} jsesc@3.1.0: {} @@ -14027,10 +13721,10 @@ snapshots: json-schema@0.3.0: {} - json-schema@0.4.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} + json-stream-stringify@3.1.6: {} + json-stringify-safe@5.0.1: {} json5@1.0.2: @@ -14039,21 +13733,10 @@ snapshots: json5@2.2.3: {} - jsonfile@2.4.0: - optionalDependencies: - graceful-fs: 4.2.11 - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - jsprim@1.4.2: - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.9 @@ -14075,22 +13758,12 @@ snapshots: kind-of@6.0.3: {} - klaw@1.3.1: - optionalDependencies: - graceful-fs: 4.2.11 - language-subtag-registry@0.3.23: {} language-tags@1.0.9: dependencies: language-subtag-registry: 0.3.23 - lanyard@1.1.2: - dependencies: - isomorphic-fetch: 3.0.0 - transitivePeerDependencies: - - encoding - lazystream@1.0.1: dependencies: readable-stream: 2.3.8 @@ -14100,6 +13773,55 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lines-and-columns@1.2.4: {} lit-element@4.2.1: @@ -14118,31 +13840,8 @@ snapshots: lit-element: 4.2.1 lit-html: 3.3.1 - load-bmfont@1.4.2: - dependencies: - buffer-equal: 0.0.1 - mime: 1.6.0 - parse-bmfont-ascii: 1.0.6 - parse-bmfont-binary: 1.0.6 - parse-bmfont-xml: 1.1.6 - phin: 3.7.1 - xhr: 2.6.0 - xtend: 4.0.2 - transitivePeerDependencies: - - debug - - loader-runner@4.3.1: {} - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - - locate-path@2.0.0: - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 + loader-runner@4.3.1: + optional: true locate-path@3.0.0: dependencies: @@ -14165,9 +13864,8 @@ snapshots: lodash.flatten@4.4.0: {} - lodash.isarguments@3.1.0: {} - - lodash.isequal@4.5.0: {} + lodash.isarguments@3.1.0: + optional: true lodash.isplainobject@4.0.6: {} @@ -14195,6 +13893,10 @@ snapshots: dependencies: js-tokens: 4.0.0 + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -14203,10 +13905,13 @@ snapshots: lru_map@0.3.3: {} - magic-string@0.30.19: + lucide-react@0.469.0(react@19.2.5): + dependencies: + react: 19.2.5 + + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - optional: true magic-string@0.30.8: dependencies: @@ -14219,12 +13924,6 @@ snapshots: math-intrinsics@1.1.0: {} - md5.js@1.3.5: - dependencies: - hash-base: 3.1.2 - inherits: 2.0.4 - safe-buffer: 5.2.1 - mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -14345,6 +14044,11 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-newline-to-break@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-find-and-replace: 3.0.2 + mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 @@ -14394,8 +14098,18 @@ snapshots: methods@1.1.2: {} + micro-eth-signer@0.14.0: + dependencies: + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + micro-packed: 0.7.3 + micro-ftch@0.3.1: {} + micro-packed@0.7.3: + dependencies: + '@scure/base': 1.2.6 + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -14608,10 +14322,6 @@ snapshots: mimic-fn@4.0.0: {} - min-document@2.19.0: - dependencies: - dom-walk: 0.1.2 - minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} @@ -14633,8 +14343,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimist@0.0.8: {} - minimist@1.2.8: {} minipass@4.2.8: @@ -14647,17 +14355,6 @@ snapshots: optionalDependencies: typescript: 5.9.3 - mkdirp@0.5.1: - dependencies: - minimist: 0.0.8 - - mlly@1.8.0: - dependencies: - acorn: 8.15.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - mnemonist@0.38.5: dependencies: obliterator: 2.0.5 @@ -14668,7 +14365,7 @@ snapshots: browser-stdout: 1.3.1 chokidar: 3.6.0 debug: 4.4.3(supports-color@8.1.1) - diff: 5.2.0 + diff: 5.2.2 escape-string-regexp: 4.0.0 find-up: 5.0.0 glob: 8.1.0 @@ -14696,6 +14393,8 @@ snapshots: motion-utils@12.23.6: {} + mrmime@2.0.1: {} + ms@2.0.0: {} ms@2.1.2: {} @@ -14704,47 +14403,62 @@ snapshots: multiformats@9.9.0: {} + mute-stream@0.0.8: {} + mute-stream@1.0.0: {} nanoid@3.3.11: {} + nanoid@3.3.12: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} negotiator@0.6.3: {} - neo-async@2.6.2: {} + neo-async@2.6.2: + optional: true + + next-themes@0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5): + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - next@15.5.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + next@16.2.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@next/env': 15.5.6 + '@next/env': 16.2.4 '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.10.27 caniuse-lite: 1.0.30001751 postcss: 8.4.31 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - styled-jsx: 5.1.6(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + styled-jsx: 5.1.6(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@19.2.5) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.6 - '@next/swc-darwin-x64': 15.5.6 - '@next/swc-linux-arm64-gnu': 15.5.6 - '@next/swc-linux-arm64-musl': 15.5.6 - '@next/swc-linux-x64-gnu': 15.5.6 - '@next/swc-linux-x64-musl': 15.5.6 - '@next/swc-win32-arm64-msvc': 15.5.6 - '@next/swc-win32-x64-msvc': 15.5.6 + '@next/swc-darwin-arm64': 16.2.4 + '@next/swc-darwin-x64': 16.2.4 + '@next/swc-linux-arm64-gnu': 16.2.4 + '@next/swc-linux-arm64-musl': 16.2.4 + '@next/swc-linux-x64-gnu': 16.2.4 + '@next/swc-linux-x64-musl': 16.2.4 + '@next/swc-win32-arm64-msvc': 16.2.4 + '@next/swc-win32-x64-msvc': 16.2.4 '@opentelemetry/api': 1.9.0 - sharp: 0.34.4 + babel-plugin-react-compiler: 1.0.0 + sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros nice-try@1.0.5: {} - node-addon-api@2.0.2: {} + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 - node-addon-api@5.1.0: {} + node-addon-api@2.0.2: {} node-domexception@1.0.0: {} @@ -14780,8 +14494,6 @@ snapshots: dependencies: path-key: 4.0.0 - oauth-sign@0.9.0: {} - obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.5 @@ -14832,6 +14544,8 @@ snapshots: obliterator@2.0.5: {} + obug@2.1.1: {} + ofetch@1.4.1: dependencies: destr: 2.0.5 @@ -14840,8 +14554,6 @@ snapshots: on-exit-leak-free@0.2.0: {} - on-exit-leak-free@2.1.2: {} - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -14913,40 +14625,27 @@ snapshots: os-tmpdir@1.0.2: {} own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - ox@0.6.7(typescript@5.9.3)(zod@4.1.12): - dependencies: - '@adraffy/ens-normalize': 1.11.1 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/bip32': 1.6.2 - '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@4.1.12) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - zod + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 - ox@0.6.9(typescript@5.9.3)(zod@4.1.12): + ox@0.14.20(typescript@5.9.3)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/curves': 1.9.7 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.1(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.3(typescript@5.9.3)(zod@3.22.4) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - zod - ox@0.9.12(typescript@5.9.3)(zod@4.1.12): + ox@0.14.20(typescript@5.9.3)(zod@4.1.12): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -14954,44 +14653,42 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.1(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - zod - ox@0.9.3(typescript@5.9.3)(zod@4.1.12): + ox@0.6.7(typescript@5.9.3)(zod@4.1.12): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.1(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - zod - ox@0.9.6(typescript@5.9.3)(zod@3.22.4): + ox@0.6.9(typescript@5.9.3)(zod@4.1.12): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.1 + '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.22.4) + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - zod - ox@0.9.6(typescript@5.9.3)(zod@4.1.12): + ox@0.9.12(typescript@5.9.3)(zod@4.1.12): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -14999,7 +14696,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@4.1.12) + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -15008,10 +14705,6 @@ snapshots: p-finally@1.0.0: {} - p-limit@1.3.0: - dependencies: - p-try: 1.0.0 - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -15020,10 +14713,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-locate@2.0.0: - dependencies: - p-limit: 1.3.0 - p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -15040,27 +14729,14 @@ snapshots: dependencies: aggregate-error: 3.1.0 - p-try@1.0.0: {} - p-try@2.2.0: {} pako@2.1.0: {} - papaparse@5.5.3: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-bmfont-ascii@1.0.6: {} - - parse-bmfont-binary@1.0.6: {} - - parse-bmfont-xml@1.1.6: - dependencies: - xml-parse-from-string: 1.0.1 - xml2js: 0.5.0 - parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -15071,8 +14747,6 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-headers@2.0.6: {} - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 @@ -15080,10 +14754,6 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-png@1.1.2: - dependencies: - pngjs: 3.4.0 - parse5@7.3.0: dependencies: entities: 6.0.1 @@ -15116,17 +14786,6 @@ snapshots: pathe@2.0.3: {} - pbkdf2@3.1.5: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.3 - safe-buffer: 5.2.1 - sha.js: 2.4.12 - to-buffer: 1.2.2 - - performance-now@2.1.0: {} - pg-int8@1.0.1: optional: true @@ -15142,55 +14801,25 @@ snapshots: postgres-interval: 1.2.0 optional: true - phin@3.7.1: - dependencies: - centra: 2.7.0 - transitivePeerDependencies: - - debug - picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} + picomatch@4.0.4: {} + pify@3.0.0: {} pify@5.0.0: {} - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - pino-abstract-transport@0.5.0: dependencies: duplexify: 4.1.3 split2: 4.2.0 - pino-abstract-transport@2.0.0: - dependencies: - split2: 4.2.0 - pino-std-serializers@4.0.0: {} - pino-std-serializers@7.0.0: {} - - pino@10.0.0: - dependencies: - atomic-sleep: 1.0.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 - process-warning: 5.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - slow-redact: 0.3.2 - sonic-boom: 4.2.0 - thread-stream: 3.1.0 - pino@7.11.0: dependencies: atomic-sleep: 1.0.0 @@ -15205,47 +14834,35 @@ snapshots: sonic-boom: 2.8.0 thread-stream: 0.15.2 - pixelmatch@4.0.2: - dependencies: - pngjs: 3.4.0 - pkg-install@1.0.0: dependencies: '@types/execa': 0.9.0 '@types/node': 11.15.54 execa: 1.0.0 - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.8.0 - pathe: 2.0.3 - pkg-up@3.1.0: dependencies: find-up: 3.0.0 - pngjs@3.4.0: {} - pngjs@5.0.0: {} pony-cause@2.1.11: {} - porto@0.2.19(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12)): + porto@0.2.19(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12)): dependencies: - '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) hono: 4.10.2 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@5.9.3) ox: 0.9.12(typescript@5.9.3)(zod@4.1.12) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) zod: 4.1.12 - zustand: 5.0.8(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)) + zustand: 5.0.8(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) optionalDependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) - react: 19.2.0 + '@tanstack/react-query': 5.90.5(react@19.2.5) + react: 19.2.5 typescript: 5.9.3 - wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12) + wagmi: 2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12) transitivePeerDependencies: - '@types/react' - immer @@ -15253,12 +14870,29 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss@8.4.31: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.13: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: optional: true @@ -15289,10 +14923,6 @@ snapshots: process-warning@1.0.0: {} - process-warning@5.0.0: {} - - process@0.11.10: {} - progress@2.0.3: optional: true @@ -15315,11 +14945,8 @@ snapshots: proxy-compare@2.6.0: {} - proxy-from-env@1.1.0: {} - - psl@1.15.0: - dependencies: - punycode: 2.3.1 + proxy-from-env@1.1.0: + optional: true pump@3.0.3: dependencies: @@ -15345,8 +14972,6 @@ snapshots: dependencies: side-channel: 1.1.0 - qs@6.5.3: {} - query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 @@ -15373,44 +14998,62 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - react-clientside-effect@1.2.8(react@19.2.0): + react-clientside-effect@1.2.8(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 + react: 19.2.5 - react-dom@19.2.0(react@19.2.0): + react-dom@19.2.5(react@19.2.5): dependencies: - react: 19.2.0 + react: 19.2.5 scheduler: 0.27.0 react-fast-compare@2.0.4: {} react-fast-compare@3.2.2: {} - react-focus-lock@2.13.6(@types/react@19.2.2)(react@19.2.0): + react-focus-lock@2.13.6(@types/react@19.2.14)(react@19.2.5): dependencies: '@babel/runtime': 7.28.4 focus-lock: 1.3.6 prop-types: 15.8.1 - react: 19.2.0 - react-clientside-effect: 1.2.8(react@19.2.0) - use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0) - use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.5 + react-clientside-effect: 1.2.8(react@19.2.5) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 react-is@16.13.1: {} - react-markdown@10.1.0(@types/react@19.2.2)(react@19.2.0): + react-markdown@10.1.0(@types/react@19.2.14)(react@19.2.5): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 19.2.14 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.0 + react: 19.2.5 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react-markdown@9.1.0(@types/react@19.2.14)(react@19.2.5): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.2.2 + '@types/react': 19.2.14 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 mdast-util-to-hast: 13.2.0 - react: 19.2.0 + react: 19.2.5 remark-parse: 11.0.0 remark-rehype: 11.1.2 unified: 11.0.5 @@ -15419,72 +15062,68 @@ snapshots: transitivePeerDependencies: - supports-color - react-mde@11.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-mde@11.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - react-polymorphic-types@2.0.0(@types/react@19.2.2): + react-polymorphic-types@2.0.0(@types/react@19.2.14): dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@popperjs/core': 2.11.8 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-fast-compare: 3.2.2 warning: 4.0.3 - react-portal@4.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-portal@4.3.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: prop-types: 15.8.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - react-property@2.0.2: {} - - react-remove-scroll-bar@2.3.8(@types/react@19.2.2)(react@19.2.0): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.0 - react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.5 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - react-remove-scroll@2.6.2(@types/react@19.2.2)(react@19.2.0): + react-remove-scroll@2.6.2(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.0) - react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.5 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0) - use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - react-remove-scroll@2.7.1(@types/react@19.2.2)(react@19.2.0): + react-remove-scroll@2.7.1(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.0) - react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.0) + react: 19.2.5 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.0) - use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.0) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.0): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5): dependencies: get-nonce: 1.0.1 - react: 19.2.0 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 - - react@19.2.0: {} + '@types/react': 19.2.14 - read-chunk@1.0.1: {} + react@19.2.5: {} readable-stream@2.3.8: dependencies: @@ -15514,13 +15153,13 @@ snapshots: real-require@0.1.0: {} - real-require@0.2.0: {} - - redis-errors@1.2.0: {} + redis-errors@1.2.0: + optional: true redis-parser@3.0.0: dependencies: redis-errors: 1.2.0 + optional: true reflect.getprototypeof@1.0.10: dependencies: @@ -15542,10 +15181,28 @@ snapshots: gopd: 1.2.0 set-function-name: 2.0.2 - rehackt@0.1.0(@types/react@19.2.2)(react@19.2.0): + rehackt@0.1.0(@types/react@19.2.14)(react@19.2.5): optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 + '@types/react': 19.2.14 + react: 19.2.5 + + rehype-autolink-headings@7.1.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-heading-rank: 3.0.0 + hast-util-is-element: 3.0.0 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + rehype-external-links@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 rehype-raw@7.0.0: dependencies: @@ -15558,6 +15215,20 @@ snapshots: '@types/hast': 3.0.4 hast-util-sanitize: 5.0.2 + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + + remark-breaks@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-newline-to-break: 2.0.0 + unified: 11.0.5 + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 @@ -15592,29 +15263,6 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - request@2.88.2: - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -15628,21 +15276,8 @@ snapshots: - supports-color optional: true - require-like@0.1.2: {} - require-main-filename@2.0.0: {} - resize-img@1.1.2: - dependencies: - bmp-js: 0.0.1 - file-type: 3.9.0 - get-stream: 2.3.1 - jimp: 0.2.28 - jpeg-js: 0.1.2 - parse-png: 1.1.2 - transitivePeerDependencies: - - debug - resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -15682,18 +15317,26 @@ snapshots: reusify@1.1.0: {} - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - - ripemd160@2.0.3: + rolldown@1.0.2: dependencies: - hash-base: 3.1.2 - inherits: 2.0.4 - - rlp@2.2.7: - dependencies: - bn.js: 5.2.2 + '@oxc-project/types': 0.132.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.2 + '@rolldown/binding-darwin-arm64': 1.0.2 + '@rolldown/binding-darwin-x64': 1.0.2 + '@rolldown/binding-freebsd-x64': 1.0.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.2 + '@rolldown/binding-linux-arm64-gnu': 1.0.2 + '@rolldown/binding-linux-arm64-musl': 1.0.2 + '@rolldown/binding-linux-ppc64-gnu': 1.0.2 + '@rolldown/binding-linux-s390x-gnu': 1.0.2 + '@rolldown/binding-linux-x64-gnu': 1.0.2 + '@rolldown/binding-linux-x64-musl': 1.0.2 + '@rolldown/binding-openharmony-arm64': 1.0.2 + '@rolldown/binding-wasm32-wasi': 1.0.2 + '@rolldown/binding-win32-arm64-msvc': 1.0.2 + '@rolldown/binding-win32-x64-msvc': 1.0.2 rollup@4.52.5: dependencies: @@ -15724,6 +15367,19 @@ snapshots: fsevents: 2.3.3 optional: true + rpc-websockets@9.3.9: + dependencies: + '@swc/helpers': 0.5.15 + '@types/uuid': 10.0.0 + '@types/ws': 8.18.1 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 14.0.0 + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6) + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 6.0.6 + run-async@2.4.1: {} run-async@3.0.0: {} @@ -15736,6 +15392,12 @@ snapshots: dependencies: tslib: 2.8.1 + sablier@2.0.4(@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6))(@solana/web3.js@1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)): + dependencies: + '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -15763,8 +15425,6 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.4.1: {} - scheduler@0.27.0: {} schema-utils@4.3.3: @@ -15773,14 +15433,7 @@ snapshots: ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - - scrypt-js@3.0.1: {} - - secp256k1@4.0.4: - dependencies: - elliptic: 6.6.1 - node-addon-api: 5.1.0 - node-gyp-build: 4.8.4 + optional: true semver@5.7.2: {} @@ -15843,8 +15496,6 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - setimmediate@1.0.5: {} - setprototypeof@1.2.0: {} sha.js@2.4.12: @@ -15882,6 +15533,38 @@ snapshots: '@img/sharp-win32-ia32': 0.34.4 '@img/sharp-win32-x64': 0.34.4 + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -15925,15 +15608,26 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + siginfo@2.0.0: {} + signal-exit@3.0.7: {} - slow-redact@0.3.2: {} + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 - socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + socket.io-client@4.8.1(bufferutil@4.0.9)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.4 - engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + engine.io-client: 6.6.3(bufferutil@4.0.9)(utf-8-validate@6.0.6) socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -15947,15 +15641,13 @@ snapshots: transitivePeerDependencies: - supports-color - solc@0.7.3(debug@4.4.3): + solc@0.8.26(debug@4.4.3): dependencies: command-exists: 1.2.9 - commander: 3.0.2 - follow-redirects: 1.15.11(debug@4.4.3) - fs-extra: 0.30.0 + commander: 8.3.0 + follow-redirects: 1.16.0(debug@4.4.3) js-sha3: 0.8.0 memorystream: 0.3.1 - require-from-string: 2.0.2 semver: 5.7.2 tmp: 0.0.33 transitivePeerDependencies: @@ -15965,10 +15657,6 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - sonic-boom@4.2.0: - dependencies: - atomic-sleep: 1.0.0 - source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -15986,28 +15674,21 @@ snapshots: split2@4.2.0: {} - sshpk@1.18.0: - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - stable-hash@0.0.5: {} + stackback@0.0.2: {} + stacktrace-parser@0.1.11: dependencies: type-fest: 0.7.1 - standard-as-callback@2.1.0: {} + standard-as-callback@2.1.0: + optional: true statuses@2.0.1: {} + std-env@4.1.0: {} + stdin-discarder@0.1.0: dependencies: bl: 5.1.0 @@ -16017,13 +15698,13 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - stream-shift@1.0.3: {} + stream-chain@2.2.5: {} - stream-to-buffer@0.1.0: + stream-json@1.9.1: dependencies: - stream-to: 0.2.2 + stream-chain: 2.2.5 - stream-to@0.2.2: {} + stream-shift@1.0.3: {} strict-uri-encode@2.0.0: {} @@ -16112,10 +15793,6 @@ snapshots: strip-final-newline@3.0.0: {} - strip-hex-prefix@1.0.0: - dependencies: - is-hex-prefixed: 1.0.0 - strip-json-comments@3.1.1: {} style-to-js@1.1.18: @@ -16126,21 +15803,21 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@19.2.0): + styled-jsx@5.1.6(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@19.2.5): dependencies: client-only: 0.0.1 - react: 19.2.0 + react: 19.2.5 optionalDependencies: '@babel/core': 7.28.4 babel-plugin-macros: 3.1.0 stylis@4.2.0: {} + superstruct@0.15.5: {} + superstruct@1.0.4: {} - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 + superstruct@2.0.2: {} supports-color@7.2.0: dependencies: @@ -16152,11 +15829,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.3.6(react@19.2.0): + swr@2.3.6(react@19.2.5): dependencies: dequal: 2.0.3 - react: 19.2.0 - use-sync-external-store: 1.6.0(react@19.2.0) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) symbol-observable@4.0.0: {} @@ -16164,7 +15841,11 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tapable@2.3.0: {} + tailwind-merge@2.6.1: {} + + tailwindcss@4.2.4: {} + + tapable@2.3.3: {} tar-stream@2.2.0: dependencies: @@ -16182,6 +15863,7 @@ snapshots: serialize-javascript: 6.0.2 terser: 5.44.0 webpack: 5.102.1 + optional: true terser@5.44.0: dependencies: @@ -16189,26 +15871,40 @@ snapshots: acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 + optional: true + + text-encoding-utf-8@1.0.2: {} thread-stream@0.15.2: dependencies: real-require: 0.1.0 - thread-stream@3.1.0: - dependencies: - real-require: 0.2.0 + through@2.3.8: {} tiny-case@1.0.3: {} + tiny-invariant@1.3.3: {} + tiny-warning@1.0.3: {} + tinybench@2.9.0: {} + tinycolor2@1.6.0: {} + tinyexec@1.2.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -16219,30 +15915,21 @@ snapshots: safe-buffer: 5.2.1 typed-array-buffer: 1.0.3 - to-ico@1.1.5: - dependencies: - arrify: 1.0.1 - buffer-alloc: 1.2.0 - image-size: 0.5.5 - parse-png: 1.1.2 - resize-img: 1.1.2 - transitivePeerDependencies: - - debug - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + toformat@2.0.0: {} + toggle-selection@1.0.6: {} toidentifier@1.0.1: {} + toml@3.0.0: {} + toposort@2.0.2: {} - tough-cookie@2.5.0: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 + totalist@3.0.1: {} tr46@0.0.3: {} @@ -16296,8 +15983,6 @@ snapshots: tslib@2.4.0: {} - tslib@2.7.0: {} - tslib@2.8.1: {} tsort@0.0.1: {} @@ -16309,16 +15994,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - - tweetnacl-util@0.15.1: {} - - tweetnacl@0.14.5: {} - - tweetnacl@1.0.3: {} - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -16369,13 +16044,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.46.2(eslint@9.38.0)(typescript@5.9.3): + typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0)(typescript@5.9.3) - eslint: 9.38.0 + '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.38.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -16403,16 +16078,12 @@ snapshots: uncrypto@0.1.3: {} - undici-types@6.19.8: {} - undici-types@6.21.0: {} undici@5.29.0: dependencies: '@fastify/busboy': 2.1.1 - unfetch@4.2.0: {} - unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -16506,41 +16177,42 @@ snapshots: dependencies: punycode: 2.3.1 - url-regex@3.2.0: + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5): dependencies: - ip-regex: 1.0.3 - - use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.0): - dependencies: - react: 19.2.0 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.2.2)(react@19.2.0): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): dependencies: detect-node-es: 1.1.0 - react: 19.2.0 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.14 - use-sync-external-store@1.2.0(react@19.2.0): + use-sync-external-store@1.2.0(react@19.2.5): dependencies: - react: 19.2.0 + react: 19.2.5 - use-sync-external-store@1.4.0(react@19.2.0): + use-sync-external-store@1.4.0(react@19.2.5): dependencies: - react: 19.2.0 + react: 19.2.5 - use-sync-external-store@1.6.0(react@19.2.0): + use-sync-external-store@1.6.0(react@19.2.5): dependencies: - react: 19.2.0 + react: 19.2.5 utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 + utf-8-validate@6.0.6: + dependencies: + node-gyp-build: 4.8.4 + optional: true + util-deprecate@1.0.2: {} util@0.12.5: @@ -16553,7 +16225,7 @@ snapshots: utils-merge@1.0.1: {} - uuid@3.4.0: {} + uuid@14.0.0: {} uuid@8.3.2: {} @@ -16561,23 +16233,17 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - valtio@1.13.2(@types/react@19.2.2)(react@19.2.0): + valtio@1.13.2(@types/react@19.2.14)(react@19.2.5): dependencies: - derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.2)(react@19.2.0)) + derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5)) proxy-compare: 2.6.0 - use-sync-external-store: 1.2.0(react@19.2.0) + use-sync-external-store: 1.2.0(react@19.2.5) optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 + '@types/react': 19.2.14 + react: 19.2.5 vary@1.1.2: {} - verror@1.10.0: - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -16593,16 +16259,16 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - viem@2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12): + viem@2.23.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 abitype: 1.0.8(typescript@5.9.3)(zod@4.1.12) - isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + isows: 1.0.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.6)) ox: 0.6.7(typescript@5.9.3)(zod@4.1.12) - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -16610,16 +16276,16 @@ snapshots: - utf-8-validate - zod - viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.22.4): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.22.4) - isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.9.6(typescript@5.9.3)(zod@3.22.4) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + abitype: 1.2.3(typescript@5.9.3)(zod@3.22.4) + isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6)) + ox: 0.14.20(typescript@5.9.3)(zod@3.22.4) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -16627,16 +16293,16 @@ snapshots: - utf-8-validate - zod - viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12): + viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@4.1.12) - isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - ox: 0.9.6(typescript@5.9.3)(zod@4.1.12) - ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + abitype: 1.2.3(typescript@5.9.3)(zod@4.1.12) + isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6)) + ox: 0.14.20(typescript@5.9.3)(zod@4.1.12) + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -16644,14 +16310,57 @@ snapshots: - utf-8-validate - zod - wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12): + vite@8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6): dependencies: - '@tanstack/react-query': 5.90.5(react@19.2.0) - '@wagmi/connectors': 6.1.0(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)))(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.0))(@types/react@19.2.2)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12))(zod@4.1.12))(zod@4.1.12) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.2)(react@19.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.0))(viem@2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12)) - react: 19.2.0 - use-sync-external-store: 1.4.0(react@19.2.0) - viem: 2.38.3(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.1.12) + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + rolldown: 1.0.2 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 20.19.23 + fsevents: 2.3.3 + jiti: 2.6.1 + terser: 5.44.0 + tsx: 4.20.6 + + vitest@4.1.7(@opentelemetry/api@1.9.0)(@types/node@20.19.23)(@vitest/ui@4.1.7)(vite@8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)): + dependencies: + '@vitest/expect': 4.1.7 + '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6)) + '@vitest/pretty-format': 4.1.7 + '@vitest/runner': 4.1.7 + '@vitest/snapshot': 4.1.7 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.3 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.2 + tinyglobby: 0.2.15 + tinyrainbow: 3.1.0 + vite: 8.0.14(@types/node@20.19.23)(jiti@2.6.1)(terser@5.44.0)(tsx@4.20.6) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/node': 20.19.23 + '@vitest/ui': 4.1.7(vitest@4.1.7) + transitivePeerDependencies: + - msw + + wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12): + dependencies: + '@tanstack/react-query': 5.90.5(react@19.2.5) + '@wagmi/connectors': 6.1.0(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)))(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(wagmi@2.18.2(@tanstack/query-core@5.90.5)(@tanstack/react-query@5.90.5(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.0.9)(ioredis@5.8.2)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12))(zod@4.1.12))(zod@4.1.12) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.90.5)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12)) + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) + viem: 2.49.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.1.12) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: @@ -16691,6 +16400,7 @@ snapshots: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + optional: true wcwidth@1.0.1: dependencies: @@ -16704,7 +16414,8 @@ snapshots: webidl-conversions@3.0.1: {} - webpack-sources@3.3.3: {} + webpack-sources@3.3.3: + optional: true webpack-virtual-modules@0.5.0: optional: true @@ -16721,7 +16432,7 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.15.0) browserslist: 4.26.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.21.0 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -16732,7 +16443,7 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.0 + tapable: 2.3.3 terser-webpack-plugin: 5.3.14(webpack@5.102.1) watchpack: 2.4.4 webpack-sources: 3.3.3 @@ -16740,8 +16451,7 @@ snapshots: - '@swc/core' - esbuild - uglify-js - - whatwg-fetch@3.6.20: {} + optional: true whatwg-url@5.0.0: dependencies: @@ -16803,10 +16513,17 @@ snapshots: dependencies: isexe: 3.1.1 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + widest-line@3.1.0: dependencies: string-width: 4.2.3 + wink-porter2-stemmer@2.0.1: {} + word-wrap@1.2.5: {} workerpool@6.5.1: {} @@ -16825,41 +16542,25 @@ snapshots: wrappy@1.0.2: {} - ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.0.9 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.0.9 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.0.9 - utf-8-validate: 5.0.10 + utf-8-validate: 6.0.6 - ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): + ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.0.9 - utf-8-validate: 5.0.10 - - xhr@2.6.0: - dependencies: - global: 4.4.0 - is-function: 1.0.2 - parse-headers: 2.0.6 - xtend: 4.0.2 - - xml-parse-from-string@1.0.1: {} - - xml2js@0.5.0: - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} + utf-8-validate: 6.0.6 xmlhttprequest-ssl@2.1.2: {} @@ -16956,22 +16657,22 @@ snapshots: zod@4.1.12: {} - zustand@5.0.0(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)): + zustand@5.0.0(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)): optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 - use-sync-external-store: 1.4.0(react@19.2.0) + '@types/react': 19.2.14 + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) - zustand@5.0.3(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)): + zustand@5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)): optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 - use-sync-external-store: 1.4.0(react@19.2.0) + '@types/react': 19.2.14 + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) - zustand@5.0.8(@types/react@19.2.2)(react@19.2.0)(use-sync-external-store@1.4.0(react@19.2.0)): + zustand@5.0.8(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)): optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 - use-sync-external-store: 1.4.0(react@19.2.0) + '@types/react': 19.2.14 + react: 19.2.5 + use-sync-external-store: 1.4.0(react@19.2.5) zwitch@2.0.4: {} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 000000000..ae85b2fe4 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +} + +export default config diff --git a/public/fonts/pt-root-ui_bold.ttf b/public/fonts/pt-root-ui_bold.ttf deleted file mode 100644 index 5411caeb7..000000000 Binary files a/public/fonts/pt-root-ui_bold.ttf and /dev/null differ diff --git a/public/fonts/pt-root-ui_bold.woff2 b/public/fonts/pt-root-ui_bold.woff2 deleted file mode 100644 index fa85f8baf..000000000 Binary files a/public/fonts/pt-root-ui_bold.woff2 and /dev/null differ diff --git a/public/fonts/pt-root-ui_medium.ttf b/public/fonts/pt-root-ui_medium.ttf deleted file mode 100644 index ad6fd5129..000000000 Binary files a/public/fonts/pt-root-ui_medium.ttf and /dev/null differ diff --git a/public/fonts/pt-root-ui_medium.woff2 b/public/fonts/pt-root-ui_medium.woff2 deleted file mode 100644 index 827bd2637..000000000 Binary files a/public/fonts/pt-root-ui_medium.woff2 and /dev/null differ diff --git a/public/fonts/pt-root-ui_regular.ttf b/public/fonts/pt-root-ui_regular.ttf deleted file mode 100644 index 72fea6cd2..000000000 Binary files a/public/fonts/pt-root-ui_regular.ttf and /dev/null differ diff --git a/public/fonts/pt-root-ui_regular.woff2 b/public/fonts/pt-root-ui_regular.woff2 deleted file mode 100644 index d7acf577c..000000000 Binary files a/public/fonts/pt-root-ui_regular.woff2 and /dev/null differ diff --git a/sample.env b/sample.env index ad759516e..a0f0427e0 100644 --- a/sample.env +++ b/sample.env @@ -1,25 +1,27 @@ +# ── Required ───────────────────────────────────────────────── +# Network and DAO targeting. `pnpm fetch-dao` reads these to +# resolve your DAO's auction/governor/treasury addresses. NEXT_PUBLIC_NETWORK_TYPE="mainnet" NEXT_PUBLIC_CHAIN_ID="8453" -NEXT_PUBLIC_DAO_TOKEN_ADDRESS="0xe8af882f2f5c79580230710ac0e2344070099432" +NEXT_PUBLIC_DAO_TOKEN_ADDRESS="" -NEXT_PUBLIC_ALCHEMY_API_KEY= +# Required for the wallet Connect button. Free at https://cloud.reown.com. +NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID="" -PINATA_API_KEY= +# ── Recommended ────────────────────────────────────────────── +# Speeds up RPC reads. Without it, public Base/mainnet RPCs are +# slow and ENS resolution on /members is skipped. +NEXT_PUBLIC_ALCHEMY_API_KEY="" -# Tenderly, if you want to use it then set this to false -NEXT_PUBLIC_DISABLE_TENDERLY_SIMULATION="true" -TENDERLY_ACCESS_KEY= -TENDERLY_PROJECT= -TENDERLY_USER= -NEXT_PUBLIC_TENDERLY_RPC_KEY= +# Pinata scoped-key JWT — required for media uploads (Coins, future +# proposal/propdate attachments). Generate at https://app.pinata.cloud +# → API Keys → Scoped Key with pinFileToIPFS + pinJSONToIPFS enabled. +PINATA_API_KEY="" -# AI Summary, if you want to use it then set this to false -NEXT_PUBLIC_DISABLE_AI_SUMMARY="true" -# uses vercel's ai gateway, default ai model is gpt-4-turbo -AI_MODAL= -AI_GATEWAY_API_KEY= +# Optional Pinata public gateway override. Defaults to nouns-builder.mypinata.cloud. +# NEXT_PUBLIC_PINATA_GATEWAY="" -NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID= - -# for caching pinata, tenderly and ai summary & api rate limits -REDIS_URL= +# ── SEO / sitemap ───────────────────────────────────────────── +# Set to your deployed URL (no trailing slash) so sitemap.xml and +# robots.txt point to the correct domain. +# NEXT_PUBLIC_SITE_URL="https://yoursite.com" diff --git a/scripts/switchDao.ts b/scripts/switchDao.ts new file mode 100644 index 000000000..6f2a26de6 --- /dev/null +++ b/scripts/switchDao.ts @@ -0,0 +1,233 @@ +#!/usr/bin/env npx tsx +/* eslint-disable no-console */ + +/** + * Labrat helper: flip the local environment to a different Builder DAO without + * hand-editing .env.local. Updates env vars + theme overrides + regenerates + * src/config/dao.{json,ts} via the existing fetchDaoAddresses script. + * + * Usage + * + * pnpm switch-dao + * pnpm switch-dao 0x [flags] + * + * The first positional arg is either a preset key (defined in + * src/lib/presets.ts — shared with the dev Tweaks panel) OR a raw + * 0x-prefixed token address for any Builder DAO. + * + * When passing a raw token address, the following flags are accepted: + * + * --chain chain id (default 8453, Base mainnet) + * --network mainnet | testnet (default: mainnet) + * --tagline "" hero subtitle (default: blank → keeps existing) + * --accent <#hex> accent color (default: keep existing) + * --radius corner radius in px (default: keep existing) + * --display-font Geist | "Londrina Solid" | "IBM Plex Sans" | Fraunces + * + * After switching, restart `pnpm dev` for the new DAO to take effect. + */ + +import { spawnSync } from 'child_process' +import { existsSync, readFileSync, writeFileSync } from 'fs' +import { join } from 'path' + +import { SWITCHABLE_PRESETS } from '../src/lib/presets' + +type ResolvedTarget = { + label: string + chainId: number + networkType: 'mainnet' | 'testnet' + tokenAddress: string + themeOverrides?: { + tagline?: string + accent?: string + radius?: number + displayFont?: string + } +} + +const ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/ + +function printHelp() { + console.log('Usage:') + console.log(' pnpm switch-dao ') + console.log(' pnpm switch-dao 0x [flags]') + console.log('') + console.log('Switchable presets:') + for (const p of Object.values(SWITCHABLE_PRESETS)) { + console.log( + ` ${p.key.padEnd(10)} — ${p.label} (chain ${p.chain.id}, ${p.tokenAddress})` + ) + } + console.log('') + console.log('Flags (raw-address form only):') + console.log(' --chain chain id (default 8453, Base)') + console.log(' --network ') + console.log(' --tagline ""') + console.log(' --accent <#hex>') + console.log(' --radius ') + console.log(' --display-font ') +} + +function parseFlags(args: string[]): Record { + const out: Record = {} + for (let i = 0; i < args.length; i++) { + const a = args[i] + if (a.startsWith('--')) { + const key = a.slice(2) + const val = args[i + 1] + if (val === undefined || val.startsWith('--')) { + console.error(`❌ Missing value for --${key}`) + process.exit(1) + } + out[key] = val + i++ + } + } + return out +} + +function resolveTarget(): ResolvedTarget { + const args = process.argv.slice(2) + const first = args[0] + + if (!first || first === '--help' || first === '-h') { + printHelp() + process.exit(first ? 0 : 1) + } + + // Preset path + if (!ADDRESS_RE.test(first)) { + const preset = SWITCHABLE_PRESETS[first] + if (!preset) { + console.error(`❌ Unknown preset: ${first}`) + console.error(` Available presets: ${Object.keys(SWITCHABLE_PRESETS).join(', ')}`) + console.error(` Or pass a 0x-prefixed token address directly.`) + process.exit(1) + } + return { + label: preset.label, + chainId: preset.chain.id, + networkType: preset.chain.networkType, + tokenAddress: preset.tokenAddress, + themeOverrides: { + tagline: preset.tagline, + accent: preset.theme.accent, + radius: preset.theme.radius, + displayFont: preset.theme.displayFont, + }, + } + } + + // Raw-address path + const flags = parseFlags(args.slice(1)) + const chainId = parseInt(flags['chain'] ?? '8453', 10) + if (!Number.isFinite(chainId) || chainId <= 0) { + console.error(`❌ Invalid --chain: ${flags['chain']}`) + process.exit(1) + } + const networkType = (flags['network'] ?? 'mainnet') as 'mainnet' | 'testnet' + if (networkType !== 'mainnet' && networkType !== 'testnet') { + console.error(`❌ --network must be mainnet or testnet`) + process.exit(1) + } + + const themeOverrides: ResolvedTarget['themeOverrides'] = {} + if (flags['tagline']) themeOverrides.tagline = flags['tagline'] + if (flags['accent']) themeOverrides.accent = flags['accent'] + if (flags['radius']) { + const r = parseInt(flags['radius'], 10) + if (Number.isFinite(r)) themeOverrides.radius = r + } + if (flags['display-font']) themeOverrides.displayFont = flags['display-font'] + + return { + label: `Custom DAO ${first.slice(0, 6)}…${first.slice(-4)}`, + chainId, + networkType, + tokenAddress: first, + themeOverrides: Object.keys(themeOverrides).length > 0 ? themeOverrides : undefined, + } +} + +/** + * Update .env.local in place. Preserves any keys we don't manage and + * overwrites the DAO-targeting ones. Creates the file if missing. + */ +function updateEnv(target: ResolvedTarget) { + const envPath = join(process.cwd(), '.env.local') + const sample = join(process.cwd(), 'sample.env') + const seed = existsSync(envPath) + ? readFileSync(envPath, 'utf8') + : existsSync(sample) + ? readFileSync(sample, 'utf8') + : '' + + const overrides: Record = { + NEXT_PUBLIC_NETWORK_TYPE: `"${target.networkType}"`, + NEXT_PUBLIC_CHAIN_ID: `"${target.chainId}"`, + NEXT_PUBLIC_DAO_TOKEN_ADDRESS: `"${target.tokenAddress}"`, + } + + const lines = seed.split('\n') + const seen = new Set() + const out: string[] = [] + for (const line of lines) { + const m = line.match(/^([A-Z_][A-Z0-9_]*)=/) + if (m && overrides[m[1]] !== undefined) { + out.push(`${m[1]}=${overrides[m[1]]}`) + seen.add(m[1]) + } else { + out.push(line) + } + } + for (const k of Object.keys(overrides)) { + if (!seen.has(k)) out.push(`${k}=${overrides[k]}`) + } + writeFileSync(envPath, out.join('\n')) + console.log(`✅ .env.local updated`) +} + +/** + * Merge theme overrides into dao.theme.json, preserving any fields the user + * didn't explicitly set this run. For raw-address switches with no theme flags, + * we leave the existing theme alone. + */ +function writeThemeOverrides(target: ResolvedTarget) { + if (!target.themeOverrides) { + console.log('ℹ️ No theme overrides specified; keeping existing dao.theme.json.') + return + } + const path = join(process.cwd(), 'src/config/dao.theme.json') + const existing = existsSync(path) + ? (JSON.parse(readFileSync(path, 'utf8')) as Record) + : {} + const merged = { ...existing, ...target.themeOverrides } + writeFileSync(path, JSON.stringify(merged, null, 2) + '\n') + console.log(`✅ Theme overrides written to ${path}`) +} + +function runFetchDao() { + console.log('') + console.log('🔄 Running pnpm fetch-dao...') + console.log('') + const result = spawnSync('pnpm', ['fetch-dao'], { stdio: 'inherit' }) + if (result.status !== 0) { + console.error('❌ fetch-dao failed') + process.exit(result.status ?? 1) + } +} + +function main() { + const target = resolveTarget() + console.log( + `🔁 Switching template to ${target.label} (chain ${target.chainId}, token ${target.tokenAddress})` + ) + updateEnv(target) + writeThemeOverrides(target) + runFetchDao() + console.log('') + console.log('🎉 Switched. Restart `pnpm dev` for the new DAO to take effect.') +} + +main() diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 000000000..48e62ca51 --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,131 @@ +import type { Metadata } from 'next' + +import { WalletPill } from '@/components/dao/WalletPill' +import { DaoAvatar } from '@/components/DaoAvatar' +import { Markdown } from '@/components/Markdown' +import { daoConfig } from '@/lib/dao.config' +import { getAboutPageData } from '@/lib/dao-data' + +export const metadata: Metadata = { + title: 'About', +} + +export const revalidate = 60 + +export default async function AboutPage() { + const data = await getAboutPageData() + const chainName = daoConfig.chain.name + const treasuryDisplay = trimDecimals(data.treasuryEth, 4) + + const contracts: Array<{ label: string; addr: string }> = [ + { label: 'NFT (Token)', addr: daoConfig.addresses.token }, + { label: 'Auction House', addr: daoConfig.addresses.auction }, + { label: 'Governor', addr: daoConfig.addresses.governor }, + { label: 'Treasury', addr: daoConfig.addresses.treasury }, + { label: 'Metadata', addr: daoConfig.addresses.metadata }, + ] + + return ( +
+
+
+ +
+

+ {daoConfig.name} +

+
{daoConfig.tagline}
+
+
+
+ + + + +
+
+ +
+

+ About {daoConfig.name} +

+ {data.description ?? daoConfig.tagline} +
+ + {data.founders.length > 0 && ( +
+

Founders

+
+ {data.founders.map((f) => ( +
+ +
+ {f.ownershipPct}% share +
+
+ ))} +
+
+ )} + +
+
+

+ Smart contracts +

+
+
    + {contracts.map((c) => ( +
  • + {c.label} + +
  • + ))} +
+
+
+ ) +} + +function KvBlock({ label, value }: { label: string; value: React.ReactNode }) { + return ( +
+
{label}
+
{value}
+
+ ) +} + +function trimDecimals(value: string, max: number): string { + if (!value || !value.includes('.')) return value + const [intPart, decPart] = value.split('.') + return `${intPart}.${decPart.slice(0, max).replace(/0+$/, '') || '0'}` +} diff --git a/src/app/api/dev/apply-theme/route.ts b/src/app/api/dev/apply-theme/route.ts new file mode 100644 index 000000000..692406c6c --- /dev/null +++ b/src/app/api/dev/apply-theme/route.ts @@ -0,0 +1,32 @@ +import { readFileSync, writeFileSync } from 'fs' +import { NextResponse } from 'next/server' +import path from 'path' + +const THEME_PATH = path.join(process.cwd(), 'src/config/dao.theme.json') + +export async function POST(req: Request) { + if (process.env.NODE_ENV === 'production') { + return NextResponse.json({ error: 'Not available in production' }, { status: 403 }) + } + + let body: { accent?: string; radius?: number; displayFont?: string } + try { + body = await req.json() + } catch { + return NextResponse.json({ error: 'Invalid JSON' }, { status: 400 }) + } + + try { + const current = JSON.parse(readFileSync(THEME_PATH, 'utf8')) + const updated = { + ...current, + ...(body.accent !== undefined && { accent: body.accent }), + ...(body.radius !== undefined && { radius: body.radius }), + ...(body.displayFont !== undefined && { displayFont: body.displayFont }), + } + writeFileSync(THEME_PATH, JSON.stringify(updated, null, 2) + '\n', 'utf8') + return NextResponse.json({ ok: true, theme: updated }) + } catch (err) { + return NextResponse.json({ error: String(err) }, { status: 500 }) + } +} diff --git a/src/app/api/feed/route.ts b/src/app/api/feed/route.ts new file mode 100644 index 000000000..4541fee07 --- /dev/null +++ b/src/app/api/feed/route.ts @@ -0,0 +1,171 @@ +import 'server-only' + +import { PUBLIC_DEFAULT_CHAINS } from '@buildeross/constants/chains' +import { FeedEventType, getFeedData } from '@buildeross/sdk/subgraph' +import type { AddressType, CHAIN_ID, FeedResponse } from '@buildeross/types' +import type { NextRequest } from 'next/server' +import { NextResponse } from 'next/server' +import { isAddress } from 'viem' + +import { daoConfig } from '@/lib/dao.config' + +const SUPPORTED_CHAIN_IDS: CHAIN_ID[] = PUBLIC_DEFAULT_CHAINS.map((c) => c.id) +const VALID_EVENT_TYPES = new Set(Object.values(FeedEventType)) + +const EMPTY_RESPONSE: FeedResponse = { items: [], hasMore: false, nextCursor: null } + +export const dynamic = 'force-dynamic' + +export async function GET(req: NextRequest) { + const search = req.nextUrl.searchParams + + const limitRaw = search.get('limit') + let limit = 20 + if (limitRaw !== null) { + const parsed = parseInt(limitRaw, 10) + if (isNaN(parsed) || parsed < 1 || parsed > 33) { + return NextResponse.json( + { error: 'limit must be between 1 and 33' }, + { status: 400 } + ) + } + limit = parsed + } + + let cursor: number | undefined + const cursorRaw = search.get('cursor') + if (cursorRaw) { + const parsed = Number(cursorRaw) + if (isNaN(parsed) || parsed < 0) { + return NextResponse.json( + { error: 'cursor must be a valid positive number' }, + { status: 400 } + ) + } + cursor = parsed + } + + // chainIds — defaults to the configured DAO's chain (template is single-DAO). + let chainIds: CHAIN_ID[] = [daoConfig.chainId] + const chainIdsRaw = search.get('chainIds') + if (chainIdsRaw) { + const ids = chainIdsRaw + .split(',') + .map((id) => id.trim()) + .filter(Boolean) + .map(Number) + for (const id of ids) { + if (isNaN(id) || !SUPPORTED_CHAIN_IDS.includes(id as CHAIN_ID)) { + return NextResponse.json({ error: `Invalid chain ID: ${id}` }, { status: 400 }) + } + } + chainIds = ids as CHAIN_ID[] + } + + // daos — defaults to the configured DAO's token address. + let daos: AddressType[] = [daoConfig.addresses.token.toLowerCase() as AddressType] + const daosRaw = search.get('daos') + if (daosRaw) { + const addrs = daosRaw + .split(',') + .map((d) => d.trim()) + .filter(Boolean) + for (const a of addrs) { + if (!isAddress(a, { strict: false })) { + return NextResponse.json({ error: `Invalid DAO address: ${a}` }, { status: 400 }) + } + } + daos = addrs.map((a) => a.toLowerCase() as AddressType) + } + + let actor: AddressType | undefined + const actorRaw = search.get('actor') + if (actorRaw) { + if (!isAddress(actorRaw, { strict: false })) { + return NextResponse.json({ error: 'Invalid actor address' }, { status: 400 }) + } + actor = actorRaw.toLowerCase() as AddressType + } + + let eventTypes: FeedEventType[] | undefined + const eventTypesRaw = search.get('eventTypes') + if (eventTypesRaw) { + const types = eventTypesRaw + .split(',') + .map((t) => t.trim()) + .filter(Boolean) + for (const t of types) { + if (!VALID_EVENT_TYPES.has(t as FeedEventType)) { + return NextResponse.json({ error: `Invalid event type: ${t}` }, { status: 400 }) + } + } + eventTypes = types as FeedEventType[] + } + + // Template is single-DAO per fork; query a single chain. If the caller asked + // for multiple chains we fan out and merge by timestamp. + const ttl = computeTtl({ daos, eventTypes, actor }) + + try { + let merged: FeedResponse + if (chainIds.length === 1) { + merged = await getFeedData({ + chainId: chainIds[0], + limit, + cursor, + daos, + eventTypes, + actor, + }) + } else { + const perChainLimit = Math.min(Math.ceil(limit / chainIds.length) + 5, 33) + const settled = await Promise.allSettled( + chainIds.map((cid) => + getFeedData({ + chainId: cid, + limit: perChainLimit, + cursor, + daos, + eventTypes, + actor, + }) + ) + ) + merged = mergeFeedResponses(settled, limit) + } + + return NextResponse.json(merged, { + headers: { + 'Cache-Control': `public, s-maxage=${ttl}, stale-while-revalidate=${Math.floor(ttl * 0.5)}`, + }, + }) + } catch (err) { + console.error('[api/feed] failed:', err) + return NextResponse.json(EMPTY_RESPONSE, { status: 200 }) + } +} + +function computeTtl(params: { + daos?: AddressType[] + eventTypes?: FeedEventType[] + actor?: AddressType +}): number { + if (params.actor) return 300 + if (params.eventTypes && params.eventTypes.length > 0) return 180 + if (params.daos && params.daos.length === 1) return 60 + return 60 +} + +function mergeFeedResponses( + settled: PromiseSettledResult[], + limit: number +): FeedResponse { + const items = settled + .flatMap((r) => (r.status === 'fulfilled' ? r.value.items : [])) + .sort((a, b) => b.timestamp - a.timestamp) + const trimmed = items.slice(0, limit) + const hasMore = items.length > limit + if (!hasMore) return { items: trimmed, hasMore: false, nextCursor: null } + const nextCursor = trimmed[trimmed.length - 1]?.timestamp ?? 0 + return { items: trimmed, hasMore: true, nextCursor } +} diff --git a/src/app/api/img-proxy/route.ts b/src/app/api/img-proxy/route.ts new file mode 100644 index 000000000..2e4f7f385 --- /dev/null +++ b/src/app/api/img-proxy/route.ts @@ -0,0 +1,130 @@ +import type { NextRequest } from 'next/server' + +// Same-origin image proxy for the AuctionHero's dominant-color sampler: most +// DAO art hosts (IPFS gateways, Arweave, CDNs) don't send CORS headers, so a +// direct cross-origin canvas read would be tainted. This re-serves the bytes +// with `access-control-allow-origin: *`. +// +// It must NOT become an open SSRF / anonymizing proxy, so it is hardened to: +// - https only, no embedded credentials; +// - refuse hosts that point at loopback / private / link-local / reserved +// ranges or cloud-metadata endpoints (SSRF); +// - refuse redirects (a public host could otherwise 3xx to an internal one); +// - only honor same-site callers (Sec-Fetch-Site / Origin), so other websites +// can't use it as a generic proxy; +// - require an `image/*` response and cap its size. + +export const runtime = 'edge' + +const MAX_BYTES = 15 * 1024 * 1024 // 15 MB + +/** + * Hosts that must never be fetched server-side (SSRF guard). + * + * Note: this inspects the literal host only. The edge runtime has no DNS + * resolution API, so a public name that resolves to an internal IP (incl. DNS + * rebinding) cannot be caught here — that residual is bounded by the https-only + * + no-redirect + image/* + size-cap + same-site checks around the fetch. + */ +function isBlockedHost(hostname: string): boolean { + const h = hostname + .toLowerCase() + .replace(/^\[|\]$/g, '') // strip IPv6 brackets + .replace(/\.+$/, '') // strip trailing dot(s): "localhost." / "10.0.0.1." + + if (h === 'localhost' || h.endsWith('.localhost')) return true + if (h.endsWith('.local') || h.endsWith('.internal')) return true + + // Reject ANY IPv6 literal (contains ':' once brackets are stripped). + // Legitimate image hosts are DNS names or public IPv4 — never IPv6 literals — + // so blocking the whole class closes IPv4-mapped IPv6 (e.g. + // ::ffff:169.254.169.254), loopback, ULA and link-local vectors at once. + if (h.includes(':')) return true + + const v4 = h.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/) + if (v4) { + const a = Number(v4[1]) + const b = Number(v4[2]) + if (a === 0 || a === 127) return true // this-host / loopback + if (a === 10) return true // private + if (a === 172 && b >= 16 && b <= 31) return true // private + if (a === 192 && b === 168) return true // private + if (a === 169 && b === 254) return true // link-local + cloud metadata + if (a === 100 && b >= 64 && b <= 127) return true // CGNAT + if (a >= 224) return true // multicast / reserved + return false + } + + return false +} + +/** + * Block cross-site callers so this can't be used as an anonymizing proxy by + * other websites. Browsers set `Sec-Fetch-Site` automatically and pages cannot + * forge it; we fall back to comparing a same-origin `Origin` header. + */ +function isSameSite(req: NextRequest): boolean { + const site = req.headers.get('sec-fetch-site') + if (site) return site === 'same-origin' || site === 'same-site' || site === 'none' + const origin = req.headers.get('origin') + if (!origin) return true // a non-CORS same-origin image GET sends no Origin + try { + return new URL(origin).host === req.nextUrl.host + } catch { + return false + } +} + +export async function GET(req: NextRequest) { + if (!isSameSite(req)) return new Response('Forbidden', { status: 403 }) + + const target = req.nextUrl.searchParams.get('url') + if (!target) return new Response('Missing ?url', { status: 400 }) + + let url: URL + try { + url = new URL(target) + } catch { + return new Response('Invalid URL', { status: 400 }) + } + if (url.protocol !== 'https:') { + return new Response('Only https URLs allowed', { status: 400 }) + } + if (url.username || url.password) { + return new Response('Credentials not allowed', { status: 400 }) + } + if (isBlockedHost(url.hostname)) { + return new Response('Host not allowed', { status: 403 }) + } + + try { + const upstream = await fetch(url.toString(), { + headers: { Accept: 'image/*' }, + // Edge-cache the upstream response; the underlying image rarely changes. + cache: 'force-cache', + // A redirect could escape the host check (e.g. a public host 3xx-ing to an + // internal one), so reject them outright. The hero tint degrades gracefully. + redirect: 'error', + }) + if (!upstream.ok) { + return new Response(`Upstream ${upstream.status}`, { status: upstream.status }) + } + const contentType = upstream.headers.get('content-type') ?? '' + if (!contentType.startsWith('image/')) { + return new Response('Not an image', { status: 415 }) + } + const declaredLength = Number(upstream.headers.get('content-length') ?? '0') + if (declaredLength > MAX_BYTES) { + return new Response('Image too large', { status: 413 }) + } + return new Response(upstream.body, { + headers: { + 'content-type': contentType, + 'access-control-allow-origin': '*', + 'cache-control': 'public, max-age=86400, s-maxage=86400, immutable', + }, + }) + } catch { + return new Response('Fetch failed', { status: 502 }) + } +} diff --git a/src/app/api/pinata/generate-jwt/route.ts b/src/app/api/pinata/generate-jwt/route.ts new file mode 100644 index 000000000..e2d7fb5ea --- /dev/null +++ b/src/app/api/pinata/generate-jwt/route.ts @@ -0,0 +1,33 @@ +import { NextResponse } from 'next/server' + +import { + assertPinataApiRequest, + generateUploadJWT, + PinataConfigError, + PinataRequestError, + PinataUpstreamError, +} from '@/lib/pinata' + +export const runtime = 'nodejs' + +export async function POST(req: Request) { + try { + assertPinataApiRequest(req) + const result = await generateUploadJWT() + return NextResponse.json(result, { + headers: { 'Cache-Control': 'no-cache, no-store, must-revalidate' }, + }) + } catch (err) { + if (err instanceof PinataConfigError) { + return NextResponse.json({ error: err.message }, { status: 503 }) + } + if (err instanceof PinataRequestError) { + return NextResponse.json({ error: err.message }, { status: err.status }) + } + if (err instanceof PinataUpstreamError) { + return NextResponse.json({ error: err.message }, { status: 502 }) + } + console.error('[api/pinata/generate-jwt]', err) + return NextResponse.json({ error: 'Internal server error' }, { status: 500 }) + } +} diff --git a/src/app/api/pinata/pin-cid/route.ts b/src/app/api/pinata/pin-cid/route.ts new file mode 100644 index 000000000..6714244b4 --- /dev/null +++ b/src/app/api/pinata/pin-cid/route.ts @@ -0,0 +1,40 @@ +import { type NextRequest, NextResponse } from 'next/server' + +import { + assertPinataApiRequest, + PinataConfigError, + PinataRequestError, + PinataUpstreamError, + pinCidToIPFS, +} from '@/lib/pinata' + +export const runtime = 'nodejs' + +export async function POST(req: NextRequest) { + try { + assertPinataApiRequest(req) + const body = (await req.json().catch(() => ({}))) as { + cid?: string + name?: string + group_id?: string + } + const result = await pinCidToIPFS({ + cid: body.cid ?? '', + name: body.name, + group_id: body.group_id, + }) + return NextResponse.json({ text: result.status }) + } catch (err) { + if (err instanceof PinataConfigError) { + return NextResponse.json({ error: err.message }, { status: 503 }) + } + if (err instanceof PinataRequestError) { + return NextResponse.json({ error: err.message }, { status: err.status }) + } + if (err instanceof PinataUpstreamError) { + return NextResponse.json({ error: err.message }, { status: 502 }) + } + console.error('[api/pinata/pin-cid]', err) + return NextResponse.json({ error: 'Internal server error' }, { status: 500 }) + } +} diff --git a/src/app/api/pinata/pin-json/route.ts b/src/app/api/pinata/pin-json/route.ts new file mode 100644 index 000000000..7e325dad7 --- /dev/null +++ b/src/app/api/pinata/pin-json/route.ts @@ -0,0 +1,32 @@ +import { type NextRequest, NextResponse } from 'next/server' + +import { + assertPinataApiRequest, + PinataConfigError, + PinataRequestError, + PinataUpstreamError, + pinJsonToIPFS, +} from '@/lib/pinata' + +export const runtime = 'nodejs' + +export async function POST(req: NextRequest) { + try { + assertPinataApiRequest(req) + const body = await req.json().catch(() => null) + const result = await pinJsonToIPFS(body) + return NextResponse.json(result) + } catch (err) { + if (err instanceof PinataConfigError) { + return NextResponse.json({ error: err.message }, { status: 503 }) + } + if (err instanceof PinataRequestError) { + return NextResponse.json({ error: err.message }, { status: err.status }) + } + if (err instanceof PinataUpstreamError) { + return NextResponse.json({ error: err.message }, { status: 502 }) + } + console.error('[api/pinata/pin-json]', err) + return NextResponse.json({ error: 'Internal server error' }, { status: 500 }) + } +} diff --git a/src/app/api/pinata/upload-url/route.ts b/src/app/api/pinata/upload-url/route.ts new file mode 100644 index 000000000..a8ffc6b48 --- /dev/null +++ b/src/app/api/pinata/upload-url/route.ts @@ -0,0 +1,32 @@ +import { type NextRequest, NextResponse } from 'next/server' + +import { + assertPinataApiRequest, + createSignedUploadUrl, + PinataConfigError, + PinataRequestError, + PinataUpstreamError, +} from '@/lib/pinata' + +export const runtime = 'nodejs' + +export async function POST(req: NextRequest) { + try { + assertPinataApiRequest(req) + const body = (await req.json().catch(() => ({}))) as { type?: string } + const result = await createSignedUploadUrl(body.type ?? '') + return NextResponse.json(result) + } catch (err) { + if (err instanceof PinataConfigError) { + return NextResponse.json({ error: err.message }, { status: 503 }) + } + if (err instanceof PinataRequestError) { + return NextResponse.json({ error: err.message }, { status: err.status }) + } + if (err instanceof PinataUpstreamError) { + return NextResponse.json({ error: err.message }, { status: 502 }) + } + console.error('[api/pinata/upload-url]', err) + return NextResponse.json({ error: 'Internal server error' }, { status: 500 }) + } +} diff --git a/src/app/api/treasury/transfers/route.ts b/src/app/api/treasury/transfers/route.ts new file mode 100644 index 000000000..fd8dfb587 --- /dev/null +++ b/src/app/api/treasury/transfers/route.ts @@ -0,0 +1,188 @@ +import { NextResponse } from 'next/server' + +import { daoConfig } from '@/lib/dao.config' + +// Alchemy network slugs per chain +const ALCHEMY_NETWORK: Record = { + 1: 'eth-mainnet', + 10: 'opt-mainnet', + 8453: 'base-mainnet', + 7777777: 'zora-mainnet', +} + +// Cache at the edge for 5 minutes (Vercel / Cloudflare) +export const revalidate = 300 + +type AlchemyTransfer = { + blockNum: string + hash: string + from: string + to: string | null + value: number | null + asset: string | null + category: string + metadata: { blockTimestamp?: string } + rawContract?: { value?: string; decimal?: string } +} + +type Transfer = { + hash: string + dir: 'in' | 'out' + from: string + to: string + asset: string + amount: string + amountNum: number + timestamp: number + blockNum: number +} + +async function fetchTransfers( + apiKey: string, + network: string, + treasury: string, + direction: 'in' | 'out', + pageKey?: string +): Promise<{ transfers: AlchemyTransfer[]; pageKey?: string }> { + const body = { + id: 1, + jsonrpc: '2.0', + method: 'alchemy_getAssetTransfers', + params: [ + { + ...(direction === 'in' ? { toAddress: treasury } : { fromAddress: treasury }), + category: ['external', 'erc20', 'erc721', 'erc1155'], + withMetadata: true, + excludeZeroValue: true, + maxCount: '0x64', // 100 per page + order: 'desc', + ...(pageKey ? { pageKey } : {}), + }, + ], + } + + const res = await fetch(`https://${network}.g.alchemy.com/v2/${apiKey}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(body), + next: { revalidate: 300 }, + }) + + if (!res.ok) throw new Error(`Alchemy ${res.status}`) + const json = await res.json() + if (json.error) throw new Error(json.error.message ?? 'Alchemy error') + return { + transfers: json.result?.transfers ?? [], + pageKey: json.result?.pageKey, + } +} + +// Heuristic spam filter: airdropped phishing tokens that smuggle URLs or +// promo phrases into the token symbol field. Real ERC-20 symbols are short +// and alphanumeric, so anything with a domain, marketing language, or +// special punctuation is almost certainly hostile dust. +function isSpamAsset(asset: string | null): boolean { + if (!asset) return false + const s = asset.toLowerCase() + if ( + /https?:\/\/|www\.|t\.me|telegram|\.com|\.me|\.io|\.xyz|\.net|\.org|\.app|\.gift|\.fund|\.live|\.site|\.link|\.bond|\.finance/.test( + s + ) + ) + return true + if (/claim|airdrop|reward|visit|bonus|gift|winner|voucher|promo/.test(s)) return true + if (/[*!?@#$%^&()\[\]{}<>]/.test(asset)) return true + if (asset.length > 20) return true + return false +} + +function formatAmount(t: AlchemyTransfer): { amount: string; amountNum: number } { + if (t.value !== null && t.value !== undefined) { + const n = t.value + return { + amountNum: n, + amount: + n < 0.0001 + ? n.toExponential(2) + : n.toLocaleString('en-US', { maximumFractionDigits: 4 }), + } + } + // ERC-721/1155 — no value, show count + return { amountNum: 1, amount: '1' } +} + +export async function GET(req: Request) { + const apiKey = process.env.NEXT_PUBLIC_ALCHEMY_API_KEY + if (!apiKey) { + return NextResponse.json({ error: 'No Alchemy API key configured' }, { status: 503 }) + } + + const network = ALCHEMY_NETWORK[daoConfig.chainId] + if (!network) { + return NextResponse.json( + { error: `Unsupported chainId ${daoConfig.chainId}` }, + { status: 400 } + ) + } + + const { searchParams } = new URL(req.url) + // Each direction paginates independently — Alchemy returns a separate cursor + // for the in- and out-bound queries, so they must be tracked separately. A + // single shared pageKey mixes cursors and yields duplicates/errors past page 1. + const pageKeyIn = searchParams.get('pageKeyIn') ?? undefined + const pageKeyOut = searchParams.get('pageKeyOut') ?? undefined + const dir = (searchParams.get('dir') ?? 'all') as 'in' | 'out' | 'all' + + const treasury = daoConfig.addresses.treasury.toLowerCase() + + try { + const fetches: Promise<{ transfers: AlchemyTransfer[]; pageKey?: string }>[] = [] + + if (dir === 'in' || dir === 'all') + fetches.push(fetchTransfers(apiKey, network, treasury, 'in', pageKeyIn)) + if (dir === 'out' || dir === 'all') + fetches.push(fetchTransfers(apiKey, network, treasury, 'out', pageKeyOut)) + + const results = await Promise.all(fetches) + + const rawIn = dir === 'out' ? [] : (results[0]?.transfers ?? []) + const rawOut = dir === 'in' ? [] : (results[dir === 'all' ? 1 : 0]?.transfers ?? []) + const nextPageKeyIn = dir === 'out' ? undefined : results[0]?.pageKey + const nextPageKeyOut = + dir === 'in' ? undefined : results[dir === 'all' ? 1 : 0]?.pageKey + + const normalize = (list: AlchemyTransfer[], direction: 'in' | 'out'): Transfer[] => + list + .filter((t) => !isSpamAsset(t.asset)) + .map((t) => { + const { amount, amountNum } = formatAmount(t) + const ts = t.metadata.blockTimestamp + ? Math.floor(new Date(t.metadata.blockTimestamp).getTime() / 1000) + : 0 + return { + hash: t.hash, + dir: direction, + from: t.from, + to: t.to ?? '', + asset: t.asset ?? 'ETH', + amount, + amountNum, + timestamp: ts, + blockNum: parseInt(t.blockNum, 16), + } + }) + + const all: Transfer[] = [...normalize(rawIn, 'in'), ...normalize(rawOut, 'out')].sort( + (a, b) => b.timestamp - a.timestamp + ) + + return NextResponse.json({ + transfers: all, + nextPageKeyIn, + nextPageKeyOut, + }) + } catch (err) { + console.error('[treasury/transfers]', err) + return NextResponse.json({ error: 'Failed to load transfers' }, { status: 500 }) + } +} diff --git a/src/app/auction/[id]/opengraph-image.tsx b/src/app/auction/[id]/opengraph-image.tsx new file mode 100644 index 000000000..fa06000cd --- /dev/null +++ b/src/app/auction/[id]/opengraph-image.tsx @@ -0,0 +1,189 @@ +import { ImageResponse } from 'next/og' + +import { daoConfig } from '@/lib/dao.config' +import { getAuctionPageData } from '@/lib/dao-data' +import { OG_CONTENT_TYPE, OG_SIZE, ogColors, resolveIpfs, trimEth } from '@/lib/og-utils' + +export const alt = `${daoConfig.name} auction` +export const size = OG_SIZE +export const contentType = OG_CONTENT_TYPE +export const revalidate = 60 + +type Params = Promise<{ id: string }> + +export default async function AuctionOGImage({ params }: { params: Params }) { + const { id } = await params + const tokenId = parseInt(id, 10) + const c = ogColors() + const tokenLabel = daoConfig.name.split(' ')[0] + const logoUrl = resolveIpfs(daoConfig.image) + + let topBidEth: string | null = null + let bidderShort: string | null = null + + if (Number.isFinite(tokenId) && tokenId >= 0) { + try { + const data = await getAuctionPageData(tokenId) + topBidEth = data.topBidEth + bidderShort = data.bidderShort + } catch { + /* fall through with defaults */ + } + } + + return new ImageResponse( + ( +
+ {/* Left — accent block (skip remote artwork: nouns.build returns + webp which Satori can't decode in the OG runtime). */} +
+ #{tokenId} +
+ + {/* Right — info */} +
+ {/* DAO row */} +
+ {logoUrl && ( + {daoConfig.name} + )} +
+ {daoConfig.name} +
+
+ {chainName(daoConfig.chainId)} +
+
+ + {/* Title block */} +
+
+ Live auction +
+
+ {tokenLabel} #{tokenId} +
+
+ + {/* Bid block */} +
+
+ {topBidEth ? 'Top bid' : 'Status'} +
+
+ {topBidEth ? `${trimEth(topBidEth)} ETH` : 'No bids yet'} +
+ {bidderShort && ( +
+ held by + {bidderShort} +
+ )} +
+
+
+ ), + OG_SIZE + ) +} + +function chainName(id: number): string { + return ( + { + 1: 'Ethereum', + 10: 'Optimism', + 8453: 'Base', + 7777777: 'Zora', + }[id] ?? `Chain ${id}` + ) +} diff --git a/src/app/auction/[id]/page.tsx b/src/app/auction/[id]/page.tsx new file mode 100644 index 000000000..c05cedad5 --- /dev/null +++ b/src/app/auction/[id]/page.tsx @@ -0,0 +1,264 @@ +import { ChevronLeft, ChevronRight } from 'lucide-react' +import Link from 'next/link' +import { notFound } from 'next/navigation' + +import { AuctionAnalytics } from '@/components/dao/AuctionAnalytics' +import { AuctionArt } from '@/components/dao/AuctionArt' +import { AuctionPoller } from '@/components/dao/AuctionPoller' +import { BidForm } from '@/components/dao/BidForm' +import { BidHistory } from '@/components/dao/BidHistory' +import { SettleAuctionAction } from '@/components/dao/SettleAuctionAction' +import { ThreeDArtCard } from '@/components/dao/ThreeDArtCard' +import { daoConfig, fallbackArtPalette } from '@/lib/dao.config' +import { getAuctionPageData, getAuctionPriceHistory } from '@/lib/dao-data' +import { cn, resolveIpfs } from '@/lib/utils' + +export const revalidate = 30 + +type Params = Promise<{ id: string }> + +export default async function AuctionPage({ params }: { params: Params }) { + const { id } = await params + const tokenId = parseInt(id, 10) + if (!Number.isFinite(tokenId) || tokenId < 0) notFound() + + const [data, chartData] = await Promise.all([ + getAuctionPageData(tokenId), + getAuctionPriceHistory(365), + ]) + const tokenLabel = daoConfig.name.split(' ')[0] + const palette = fallbackArtPalette() + + const hasOpenAuction = !!data.endTimeUnix && data.endTimeUnix > data.nowUnixSec + const endsIn = data.endTimeUnix ? formatEndsIn(data.endTimeUnix, data.nowUnixSec) : null + const minBidEth = data.topBidEth + ? trimDecimals((Number(data.topBidEth) * 1.02).toFixed(6), 4) + : null + const topBidNum = data.topBidEth ? Number(data.topBidEth) : 0 + + const bidAmounts = data.bids + .map((b) => Number(b.amountEth)) + .filter((n) => Number.isFinite(n)) + const bidStats = { + count: data.bids.length, + uniqueBidders: new Set(data.bids.map((b) => b.bidder.toLowerCase())).size, + low: bidAmounts.length ? Math.min(...bidAmounts) : null, + high: bidAmounts.length ? Math.max(...bidAmounts) : null, + } + + return ( +
+ + +
+
+ + {data.image ? ( + // eslint-disable-next-line @next/next/no-img-element + {data.name + ) : ( + + )} + +
+ +
+ + +

+ {data.name ?? `${tokenLabel} #${data.tokenId}`} +

+ +
+ + + + +
+ + {hasOpenAuction ? ( + + ) : ( + <> +
+ This auction has ended.{' '} + {data.nextTokenId != null && ( + + See next auction → + + )} +
+ + + )} +
+
+ +
+
+

Bid history

+
+
+ + + + +
+ ({ + amount: trimDecimals(b.amountEth, 4), + addr: b.bidderShort, + }))} + /> +
+ + +
+ ) +} + +function AuctionNav({ + tokenId, + isLatest, + prevId, + nextId, + endTimeUnix, +}: { + tokenId: number + isLatest: boolean + prevId: number | null + nextId: number | null + endTimeUnix: number | null +}) { + const date = endTimeUnix + ? new Date(endTimeUnix * 1000).toLocaleDateString(undefined, { + month: 'short', + day: '2-digit', + year: 'numeric', + }) + : null + + return ( +
+ {prevId != null ? ( + + + + ) : ( + + )} + {nextId != null ? ( + + + + ) : ( + + )} + {isLatest && ( + + Latest auction + + )} + {date && ( + + Token #{tokenId} · {date} + + )} +
+ ) +} + +function Kv({ label, value, mono }: { label: string; value: string; mono?: boolean }) { + return ( +
+
{label}
+
+ {value} +
+
+ ) +} + +function trimDecimals(value: string, max: number): string { + if (!value) return value + if (!value.includes('.')) return value + const [intPart, decPart] = value.split('.') + return `${intPart}.${decPart.slice(0, max).replace(/0+$/, '') || '0'}` +} + +function formatEndsIn(unixSec: number, nowUnixSec: number): string { + const diff = (unixSec - nowUnixSec) * 1000 + if (diff <= 0) return 'Ended' + const h = Math.floor(diff / (1000 * 60 * 60)) + const m = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)) + if (h >= 24) return `${Math.floor(h / 24)}d ${h % 24}h` + return `${h}h ${m}m` +} diff --git a/src/app/auction/latest/page.tsx b/src/app/auction/latest/page.tsx new file mode 100644 index 000000000..59affafc9 --- /dev/null +++ b/src/app/auction/latest/page.tsx @@ -0,0 +1,34 @@ +import { Auction_OrderBy, OrderDirection, SubgraphSDK } from '@buildeross/sdk/subgraph' +import { redirect } from 'next/navigation' + +import { daoConfig } from '@/lib/dao.config' + +export const revalidate = 30 + +/** + * Resolve "the current auction" for this DAO by tokenId and redirect. + * Used by the Header nav link so it always points to the live auction + * regardless of fork. + * + * Note: `redirect()` works by throwing a NEXT_REDIRECT — keep it outside the + * try/catch. + */ +export default async function LatestAuctionRedirect() { + const tokenAddressLc = daoConfig.addresses.token.toLowerCase() as `0x${string}` + + let tokenId: number | null = null + try { + const resp = await SubgraphSDK.connect(daoConfig.chainId).findAuctions({ + where: { dao: tokenAddressLc }, + orderBy: Auction_OrderBy.EndTime, + orderDirection: OrderDirection.Desc, + first: 1, + }) + const auction = resp.auctions[0] + if (auction) tokenId = Number(auction.token.tokenId) + } catch (e) { + console.error('[auction/latest] failed to resolve current auction:', e) + } + + redirect(tokenId !== null ? `/auction/${tokenId}` : '/auction/0') +} diff --git a/src/app/coins/CoinsListView.tsx b/src/app/coins/CoinsListView.tsx new file mode 100644 index 000000000..f8b027c98 --- /dev/null +++ b/src/app/coins/CoinsListView.tsx @@ -0,0 +1,91 @@ +'use client' + +import { SWR_KEYS } from '@buildeross/constants/swrKeys' +import { daoZoraCoinsRequest } from '@buildeross/sdk/subgraph' +import { isChainIdSupportedByCoining } from '@buildeross/utils' +import useSWR from 'swr' + +import { CoinCard } from '@/components/coins/CoinCard' +import { daoConfig } from '@/lib/dao.config' + +export function CoinsListView() { + const supported = isChainIdSupportedByCoining(daoConfig.chainId) + + const { data, isLoading, error } = useSWR( + supported + ? ([ + SWR_KEYS.DAO_INFO, + 'zora-coins', + daoConfig.chainId, + daoConfig.addresses.token, + ] as const) + : null, + async ([, , chainId, daoAddress]) => + daoZoraCoinsRequest(daoAddress as string, chainId as number, 100), + { + refreshInterval: 30_000, + revalidateOnFocus: false, + } + ) + + if (!supported) { + return ( +
+

Coins are not supported on this chain

+

+ Builder's Zora content-coin factory is only deployed on Base and Base + Sepolia. +

+
+ ) + } + + return ( +
+

+ Zora content coins backed by {daoConfig.name}'s creator coin. +

+ + {error && ( +
+ Failed to load coins: {(error as Error).message} +
+ )} + + {isLoading && !data ? ( +
+ {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) => ( +
+
+
+
+
+
+
+ ))} +
+ ) : null} + + {!isLoading && (!data || data.length === 0) && ( +
+

No coins have been launched in this DAO yet.

+

+ Be the first — every trade routes through {daoConfig.name}'s creator + coin, so the DAO benefits. +

+
+ )} + + {data && data.length > 0 && ( +
+ {data.map((coin) => ( + + ))} +
+ )} +
+ ) +} diff --git a/src/app/coins/ContentTabs.tsx b/src/app/coins/ContentTabs.tsx new file mode 100644 index 000000000..272c90511 --- /dev/null +++ b/src/app/coins/ContentTabs.tsx @@ -0,0 +1,54 @@ +'use client' + +import { isChainIdSupportedByCoining } from '@buildeross/utils' +import Link from 'next/link' + +import { daoConfig } from '@/lib/dao.config' +import { isDroposalSupported } from '@/lib/proposal-tx' +import { cn } from '@/lib/utils' + +type Props = { + active: 'coins' | 'droposals' +} + +type Tab = { + key: 'coins' | 'droposals' + label: string + href: string +} + +export function ContentTabs({ active }: Props) { + const tabs: Tab[] = [] + if (isChainIdSupportedByCoining(daoConfig.chainId)) { + tabs.push({ key: 'coins', label: 'Coins', href: '/coins?tab=coins' }) + } + if (isDroposalSupported()) { + tabs.push({ key: 'droposals', label: 'Droposals', href: '/coins?tab=droposals' }) + } + + // Nothing to switch between — the hub renders the not-supported card instead. + if (tabs.length <= 1) return null + + return ( + + ) +} diff --git a/src/app/coins/DroposalsListView.tsx b/src/app/coins/DroposalsListView.tsx new file mode 100644 index 000000000..14d344de5 --- /dev/null +++ b/src/app/coins/DroposalsListView.tsx @@ -0,0 +1,83 @@ +'use client' + +import useSWR from 'swr' + +import { DroposalCard } from '@/components/coins/DroposalCard' +import { daoConfig } from '@/lib/dao.config' +import { getDroposals } from '@/lib/droposals' +import { isDroposalSupported } from '@/lib/proposal-tx' + +export function DroposalsListView() { + const supported = isDroposalSupported() + + const { data, isLoading, error } = useSWR( + supported + ? (['droposals', daoConfig.chainId, daoConfig.addresses.token] as const) + : null, + () => getDroposals(100), + { + refreshInterval: 30_000, + revalidateOnFocus: false, + } + ) + + if (!supported) { + return ( +
+

Droposals are not supported on this chain

+

+ The Zora NFT Creator factory droposals deploy through is only available on Base. +

+
+ ) + } + + return ( +
+

+ NFT editions deployed by {daoConfig.name} through governance, mintable on Zora. +

+ + {error && ( +
+ Failed to load droposals: {(error as Error).message} +
+ )} + + {isLoading && !data ? ( +
+ {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) => ( +
+
+
+
+
+
+
+ ))} +
+ ) : null} + + {!isLoading && (!data || data.length === 0) && ( +
+

No droposals have been created in this DAO yet.

+

+ A droposal is a governance proposal that deploys a Zora NFT edition — pass one + and it shows up here. +

+
+ )} + + {data && data.length > 0 && ( +
+ {data.map((item) => ( + + ))} +
+ )} +
+ ) +} diff --git a/src/app/coins/[address]/page.tsx b/src/app/coins/[address]/page.tsx new file mode 100644 index 000000000..ecd03a9c9 --- /dev/null +++ b/src/app/coins/[address]/page.tsx @@ -0,0 +1,62 @@ +import { zoraCoinRequest } from '@buildeross/sdk/subgraph' +import { isChainIdSupportedByCoining } from '@buildeross/utils' +import { ChevronLeft } from 'lucide-react' +import type { Metadata } from 'next' +import Link from 'next/link' +import { notFound } from 'next/navigation' +import { getAddress, isAddress } from 'viem' + +import { CoinDetailLoader } from '@/components/coins/CoinDetailLoader' +import { assertCoinsEnabled } from '@/lib/coins-gate' +import { daoConfig } from '@/lib/dao.config' + +export const revalidate = 30 + +type Params = Promise<{ address: string }> + +export async function generateMetadata({ + params, +}: { + params: Params +}): Promise { + const { address } = await params + if (!isAddress(address) || !isChainIdSupportedByCoining(daoConfig.chainId)) { + return { title: 'Coin' } + } + const coin = await zoraCoinRequest(address, daoConfig.chainId) + if (!coin) return { title: 'Coin' } + return { + title: `${coin.name ?? 'Coin'} ($${coin.symbol ?? ''})`, + description: `Zora content coin in the ${daoConfig.name} context.`, + alternates: { canonical: `/coins/${address}` }, + } +} + +export default async function CoinDetailPage({ params }: { params: Params }) { + assertCoinsEnabled() + const { address } = await params + if (!isAddress(address)) notFound() + if (!isChainIdSupportedByCoining(daoConfig.chainId)) notFound() + + // Try server-side once. If the subgraph hasn't indexed yet (typical right + // after a deploy), pass `null` and let the client component poll until it + // does. We don't `notFound()` on null for a valid address — the loader + // surfaces an indexing state with an escape hatch. + const initial = await zoraCoinRequest(address, daoConfig.chainId) + const checksummed = getAddress(address) + + return ( +
+
+ + + All coins + +
+ +
+ ) +} diff --git a/src/app/coins/new/page.tsx b/src/app/coins/new/page.tsx new file mode 100644 index 000000000..851409a7f --- /dev/null +++ b/src/app/coins/new/page.tsx @@ -0,0 +1,31 @@ +import { ChevronLeft } from 'lucide-react' +import type { Metadata } from 'next' +import Link from 'next/link' + +import { CoinCreateForm } from '@/components/coins/CoinCreateForm' +import { assertCoinsEnabled } from '@/lib/coins-gate' +import { daoConfig } from '@/lib/dao.config' + +export const metadata: Metadata = { + title: 'Create coin', + description: `Launch a Zora content coin backed by ${daoConfig.name}'s creator coin.`, + alternates: { canonical: '/coins/new' }, +} + +export default function NewCoinPage() { + assertCoinsEnabled() + return ( +
+
+ + + All coins + +
+ +
+ ) +} diff --git a/src/app/coins/page.tsx b/src/app/coins/page.tsx new file mode 100644 index 000000000..083bebc56 --- /dev/null +++ b/src/app/coins/page.tsx @@ -0,0 +1,86 @@ +import { isChainIdSupportedByCoining } from '@buildeross/utils' +import { Plus } from 'lucide-react' +import type { Metadata } from 'next' +import Link from 'next/link' + +import { Button } from '@/components/ui/button' +import { assertCoinsEnabled } from '@/lib/coins-gate' +import { daoConfig } from '@/lib/dao.config' +import { isDroposalSupported } from '@/lib/proposal-tx' + +import { CoinsListView } from './CoinsListView' +import { ContentTabs } from './ContentTabs' +import { DroposalsListView } from './DroposalsListView' + +export const metadata: Metadata = { + title: 'Content', + description: `Coins and NFT editions backed by ${daoConfig.name}.`, + alternates: { canonical: '/coins' }, +} + +type SearchParams = Promise<{ tab?: string }> + +export default async function ContentPage({ + searchParams, +}: { + searchParams: SearchParams +}) { + // Gate consistently with the Header, which only surfaces /coins when the + // feature flag is on. Without this, the route stays reachable directly even + // when coins are disabled in daoConfig. + assertCoinsEnabled() + + const tab = (await searchParams).tab === 'droposals' ? 'droposals' : 'coins' + + const coinsSupported = isChainIdSupportedByCoining(daoConfig.chainId) + const droposalsSupported = isDroposalSupported() + + // The top-right create action follows the active tab: "Create coin" deep-links + // to the coin wizard, "Create droposal" to the proposal wizard (droposals are + // created as governance proposals). Hidden when the active tab is unsupported. + const createAction = + tab === 'droposals' + ? droposalsSupported + ? { href: '/proposals/new', label: 'Create droposal' } + : null + : coinsSupported + ? { href: '/coins/new', label: 'Create coin' } + : null + + return ( +
+
+
+

+ Content +

+

+ Coins and NFT editions created in the {daoConfig.name} context. +

+
+ {createAction && ( + + + + )} +
+ + {!coinsSupported && !droposalsSupported ? ( +
+

Content is not supported on this chain

+

+ Zora content coins and droposals are only available on Base. +

+
+ ) : ( + <> + + {tab === 'droposals' ? : } + + )} +
+ ) +} diff --git a/src/app/dev/auction-hero/page.tsx b/src/app/dev/auction-hero/page.tsx new file mode 100644 index 000000000..dd619d14c --- /dev/null +++ b/src/app/dev/auction-hero/page.tsx @@ -0,0 +1,180 @@ +'use client' + +import { AuctionHero } from '@/components/dao/AuctionHero' +import { fallbackArtPalette } from '@/lib/dao.config' + +// Neutral self-contained gradient so the harness exercises the image-render +// path without referencing any specific DAO's artwork. (Replaced a hardcoded +// foreign-DAO renderer URL — see git history if you need a real token image.) +const SAMPLE_IMAGE = + 'data:image/svg+xml;utf8,' + +const palette = fallbackArtPalette() +const tokenLabel = 'Sample DAO' + +const now = Math.floor(Date.now() / 1000) + +const states: { + title: string + description: string + props: Parameters[0] +}[] = [ + { + title: 'No active auction', + description: 'auction = null — empty state', + props: { auction: null, palette, tokenLabel }, + }, + { + title: 'Live — plenty of time', + description: 'endTimeUnix > 1h, has top bid + bidder', + props: { + auction: { + tokenId: 56, + name: 'Sample DAO #56', + image: SAMPLE_IMAGE, + endTimeUnix: now + 60 * 60 * 12, + topBidEth: '0.42', + bidderShort: '0x3a21…5ead', + }, + palette, + tokenLabel, + }, + }, + { + title: 'Live — urgent (<1h)', + description: 'countdown turns warning color', + props: { + auction: { + tokenId: 57, + name: 'Sample DAO #57', + image: SAMPLE_IMAGE, + endTimeUnix: now + 60 * 45, + topBidEth: '0.085', + bidderShort: '0x9f12…ab44', + }, + palette, + tokenLabel, + }, + }, + { + title: 'Live — critical (<5min)', + description: 'countdown turns destructive color', + props: { + auction: { + tokenId: 58, + name: 'Sample DAO #58', + image: SAMPLE_IMAGE, + endTimeUnix: now + 90, + topBidEth: '1.337', + bidderShort: '0xbeef…cafe', + }, + palette, + tokenLabel, + }, + }, + { + title: 'Live — no bids yet', + description: 'topBidEth = null, bidderShort = null', + props: { + auction: { + tokenId: 59, + name: 'Sample DAO #59', + image: SAMPLE_IMAGE, + endTimeUnix: now + 60 * 60 * 6, + topBidEth: null, + bidderShort: null, + }, + palette, + tokenLabel, + }, + }, + { + title: 'Ended — awaiting settlement (with bid)', + description: 'endTimeUnix in the past, has bidder → settle CTA', + props: { + auction: { + tokenId: 60, + name: 'Sample DAO #60', + image: SAMPLE_IMAGE, + endTimeUnix: now - 60 * 30, + topBidEth: '0.0001', + bidderShort: '0x3a21…5ead', + }, + palette, + tokenLabel, + }, + }, + { + title: 'Ended — no bids', + description: 'ended with topBidEth = null', + props: { + auction: { + tokenId: 61, + name: 'Sample DAO #61', + image: SAMPLE_IMAGE, + endTimeUnix: now - 60 * 5, + topBidEth: null, + bidderShort: null, + }, + palette, + tokenLabel, + }, + }, + { + title: 'Live — fallback art (no image)', + description: 'image = null → AuctionArt SVG fallback', + props: { + auction: { + tokenId: 62, + name: 'Sample DAO #62', + image: null, + endTimeUnix: now + 60 * 60 * 3, + topBidEth: '0.21', + bidderShort: '0xfeed…1234', + }, + palette, + tokenLabel, + }, + }, + { + title: 'Live — long token name', + description: 'stress-test heading wrap', + props: { + auction: { + tokenId: 63, + name: 'Sample DAO #63 — A Very Long Token Name For Layout Testing', + image: SAMPLE_IMAGE, + endTimeUnix: now + 60 * 60 * 2, + topBidEth: '12.500001', + bidderShort: '0xdead…0001', + }, + palette, + tokenLabel, + }, + }, +] + +export default function AuctionHeroStatesPage() { + return ( +
+
+

+ AuctionHero — all states +

+

+ Visual matrix of every render path. Countdowns run live from page load. +

+
+ + {states.map((s) => ( +
+
+

{s.title}

+

{s.description}

+
+ +
+ ))} +
+ ) +} diff --git a/src/app/dev/layout.tsx b/src/app/dev/layout.tsx new file mode 100644 index 000000000..52eae9a56 --- /dev/null +++ b/src/app/dev/layout.tsx @@ -0,0 +1,14 @@ +import { notFound } from 'next/navigation' +import type { ReactNode } from 'react' + +/** + * Dev-only visual harnesses (`/dev/*`) — the proposal-state matrix and the + * AuctionHero state matrix. They render fixtures, not DAO data, and must never + * be reachable in a deployed fork (crawlable, brand-confusing, dead weight). + * Gating here covers every `/dev/*` page from one server boundary and mirrors + * the `NODE_ENV` guard already used by `/api/dev/apply-theme`. + */ +export default function DevLayout({ children }: { children: ReactNode }) { + if (process.env.NODE_ENV === 'production') notFound() + return <>{children} +} diff --git a/src/app/dev/proposal/page.tsx b/src/app/dev/proposal/page.tsx new file mode 100644 index 000000000..60453ebdd --- /dev/null +++ b/src/app/dev/proposal/page.tsx @@ -0,0 +1,788 @@ +'use client' + +import { encodeFunctionData, formatEther, parseEther, parseUnits } from 'viem' + +import { ProposalActions } from '@/components/dao/ProposalActions' +import { ProposalDetailView } from '@/components/dao/ProposalDetailView' +import { ProposalTransactionList } from '@/components/dao/ProposalTransactionList' +import { ProposalVotesList } from '@/components/dao/ProposalVotesList' +import { StatusBadge } from '@/components/dao/StatusBadge' +import { TreasuryInsufficientBadge } from '@/components/dao/TreasuryInsufficientBadge' +import { VoteBar } from '@/components/dao/VoteBar' +import { VotingPowerExplainer } from '@/components/dao/VotingPowerExplainer' +import { daoConfig } from '@/lib/dao.config' +import type { + ProposalDetail, + ProposalDetailVote, + ProposalSummary, + ProposalTransaction, +} from '@/lib/dao-data' +import type { ProposalStatus } from '@/lib/types' + +// Countdowns and relative labels run live from page load — `now` is sampled +// once so every fixture is consistent within a render. +const now = Math.floor(Date.now() / 1000) +const DAY = 86_400 +const HOUR = 3_600 +const MIN = 60 + +const STATUSES: ProposalStatus[] = [ + 'pending', + 'active', + 'cancelled', + 'defeated', + 'succeeded', + 'queued', + 'expired', + 'executed', + 'vetoed', +] + +// ── Fixtures ─────────────────────────────────────────────────── + +const HASH = ('0x' + 'ab'.repeat(32)) as `0x${string}` +const DESC_HASH = ('0x' + 'cd'.repeat(32)) as `0x${string}` +const PROPOSER = '0x3a21d6f2c8b1a09e4f5c7d8e9a0b1c2d3e4f5ead' +const RECIPIENT = '0x1b3c4d5e6f7081920a1b2c3d4e5f60718293a4b5' +const USDC_BASE = '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913' +const RANDOM_ERC20 = '0x4200000000000000000000000000000000000042' + +function short(addr: string) { + return addr.length < 10 ? addr : `${addr.slice(0, 6)}…${addr.slice(-4)}` +} + +function fakeAddr(i: number) { + return '0x' + (0x2000 + i).toString(16).padStart(40, '0') +} + +// Mirrors the (fixed) relativeLabel in dao-data so each fixture's header copy +// matches exactly what the real route would render for the same dates. +function ago(sec: number): string { + const days = Math.floor((now - sec) / DAY) + if (days < 1) return 'today' + if (days === 1) return '1 day ago' + if (days < 30) return `${days} days ago` + const months = Math.floor(days / 30) + return months === 1 ? '1 month ago' : `${months} months ago` +} + +type Offsets = { + timeCreated: number + voteStart: number + voteEnd: number + expiresAt?: number | null + executedAt?: number | null +} + +function endsLabelFor(status: ProposalStatus, o: Offsets): string { + if (status === 'pending') return 'Voting opens soon' + if (status === 'active') { + const days = Math.floor((now - o.voteStart) / DAY) + return days <= 0 ? 'Active now' : `Started ${days}d ago` + } + if (status === 'succeeded') return 'Ready to queue' + if (status === 'queued') return 'Awaiting execution' + if (status === 'executed' && o.executedAt) return `Executed ${ago(o.executedAt)}` + if (status === 'expired' && o.expiresAt) return `Expired ${ago(o.expiresAt)}` + if (status === 'defeated') return `Voting ended ${ago(o.voteEnd)}` + return `Created ${ago(o.timeCreated)}` +} + +type Tallies = { for: number; against: number; abstain: number; quorum: number } + +function buildDetail( + status: ProposalStatus, + o: Offsets, + over: { + title?: string + tallies?: Tallies + treasuryInsufficient?: boolean + description?: string + transactions?: ProposalTransaction[] + votes?: ProposalDetailVote[] + nftImages?: Record + proposerEns?: string | null + } = {} +): ProposalDetail { + const t = over.tallies ?? { for: 0, against: 0, abstain: 0, quorum: 10 } + const summary: ProposalSummary = { + id: 42, + proposalNumber: 42, + title: over.title ?? `Demo ${status} proposal`, + status, + proposer: PROPOSER, + proposerEns: over.proposerEns ?? null, + date: new Date(o.timeCreated * 1000).toLocaleDateString(undefined, { + month: 'short', + day: '2-digit', + year: 'numeric', + }), + forVotes: t.for, + againstVotes: t.against, + abstainVotes: t.abstain, + quorum: t.quorum, + endsLabel: endsLabelFor(status, o), + voteEnd: o.voteEnd, + requested: { eth: 0, usdc: 0 }, + treasuryInsufficient: over.treasuryInsufficient ?? false, + thumbnail: null, + proposerStats: null, + recentVotes: [], + } + return { + summary, + proposalIdHash: HASH, + descriptionHash: DESC_HASH, + description: over.description ?? '', + proposerFull: PROPOSER, + proposerEns: over.proposerEns ?? null, + snapshotBlockNumber: 0, + voteStart: o.voteStart, + voteEnd: o.voteEnd, + transactions: over.transactions ?? [], + nftImages: over.nftImages ?? {}, + voteCount: (over.votes ?? []).length, + votes: over.votes ?? [], + } +} + +// ── Transaction calldata builders ────────────────────────────── + +const ERC20_ABI = [ + { + type: 'function', + name: 'transfer', + stateMutability: 'nonpayable', + inputs: [ + { name: 'to', type: 'address' }, + { name: 'amount', type: 'uint256' }, + ], + outputs: [{ name: '', type: 'bool' }], + }, +] as const + +const ERC721_ABI = [ + { + type: 'function', + name: 'transferFrom', + stateMutability: 'nonpayable', + inputs: [ + { name: 'from', type: 'address' }, + { name: 'to', type: 'address' }, + { name: 'tokenId', type: 'uint256' }, + ], + outputs: [], + }, +] as const + +function tx(target: string, calldata: string, valueWei = BigInt(0)): ProposalTransaction { + return { + target, + targetShort: short(target), + valueWei, + valueEth: formatEther(valueWei), + calldata, + calldataPreview: calldata.length > 14 ? `${calldata.slice(0, 10)}…` : calldata, + } +} + +const erc20Transfer = (to: string, amount: bigint) => + encodeFunctionData({ + abi: ERC20_ABI, + functionName: 'transfer', + args: [to as `0x${string}`, amount], + }) + +const erc721Transfer = (from: string, to: string, tokenId: bigint) => + encodeFunctionData({ + abi: ERC721_ABI, + functionName: 'transferFrom', + args: [from as `0x${string}`, to as `0x${string}`, tokenId], + }) + +const SAMPLE_MD = `## Summary + +This proposal funds the next quarter of protocol development across three +workstreams. It requests **12.5 ETH** plus **1,500 USDC** from the treasury. + +### Milestones + +1. Ship the new auction settlement flow +2. Migrate the subgraph to the v3 schema +3. Audit + launch the governance dashboard + +See the [forum thread](https://example.com) for full context. + +> Voting opens after the standard delay.` + +// ── State fixtures (full ProposalDetailView) ─────────────────── + +const stateTiles: { title: string; description: string; detail: ProposalDetail }[] = [ + { + title: 'Pending — voting opens in 6h', + description: + 'now < voteStart · VotePanel shows a live "opens in" countdown (no choice form). endsLabel = "Voting opens soon".', + detail: buildDetail( + 'pending', + { timeCreated: now - HOUR, voteStart: now + 6 * HOUR, voteEnd: now + 30 * HOUR }, + { tallies: { for: 0, against: 0, abstain: 0, quorum: 8 } } + ), + }, + { + title: 'Active — voting open', + description: + 'voteStart ≤ now < voteEnd · header shows a LIVE "Voting ends in 2d 6h" countdown (not creation age); choice form enabled.', + detail: buildDetail( + 'active', + { + timeCreated: now - 3 * DAY, + voteStart: now - 2 * DAY, + voteEnd: now + 2 * DAY + 6 * HOUR, + }, + { tallies: { for: 18, against: 4, abstain: 2, quorum: 10 }, description: SAMPLE_MD } + ), + }, + { + title: 'Succeeded — passed, not yet queued', + description: + 'now > voteEnd, for>against & for≥quorum, no expiresAt · endsLabel = "Ready to queue" (was creation age). ProposalActions shows Queue.', + detail: buildDetail( + 'succeeded', + { timeCreated: now - 4 * DAY, voteStart: now - 3 * DAY, voteEnd: now - DAY }, + { tallies: { for: 620, against: 90, abstain: 20, quorum: 400 } } + ), + }, + { + title: 'Queued — in timelock', + description: + 'passed + expiresAt in the future · endsLabel = "Awaiting execution". Execute card reads proposalEta() onchain → "Checking timelock…" here (see the timelock matrix below for the eta states).', + detail: buildDetail( + 'queued', + { + timeCreated: now - 9 * DAY, + voteStart: now - 8 * DAY, + voteEnd: now - DAY, + expiresAt: now + 2 * DAY, + }, + { tallies: { for: 120, against: 20, abstain: 0, quorum: 100 } } + ), + }, + { + title: 'Defeated — against won', + description: + 'now > voteEnd, against>for · endsLabel = "Voting ended 1 day ago" (anchored on voteEnd, not creation).', + detail: buildDetail( + 'defeated', + { timeCreated: now - 3 * DAY, voteStart: now - 2 * DAY, voteEnd: now - DAY }, + { tallies: { for: 12, against: 40, abstain: 3, quorum: 30 } } + ), + }, + { + title: 'Defeated — quorum not met', + description: + 'for>against but for +}[] = [ + { + title: 'No transactions', + description: 'transactions.length === 0', + txs: [], + }, + { + title: 'Send ETH', + description: "calldata '0x' + value → send-eth", + txs: [tx(RECIPIENT, '0x', parseEther('0.25'))], + }, + { + title: 'Send USDC', + description: 'ERC-20 transfer to Base USDC → send-usdc, 1,500 USDC', + txs: [tx(USDC_BASE, erc20Transfer(RECIPIENT, parseUnits('1500', 6)))], + }, + { + title: 'Send tokens (unknown ERC-20)', + description: + 'transfer on an address not in the allowlist → "(unknown amount) tokens"', + txs: [tx(RANDOM_ERC20, erc20Transfer(RECIPIENT, parseUnits('100', 18)))], + }, + { + title: 'Send NFT (DAO token, with artwork)', + description: 'transferFrom on the DAO token + nftImages → artwork thumbnail', + txs: [ + tx( + daoConfig.addresses.token, + erc721Transfer(daoConfig.addresses.treasury, RECIPIENT, BigInt(42)) + ), + ], + nftImages: { '42': daoConfig.image }, + }, + { + title: 'Custom call', + description: 'unknown selector → custom card with raw calldata', + txs: [ + tx( + RECIPIENT, + '0xdeadbeef0000000000000000000000000000000000000000000000000000000000000001' + ), + ], + }, + { + title: 'Multiple transactions', + description: 'mixed batch → count badge + row variety', + txs: [ + tx(RECIPIENT, '0x', parseEther('1')), + tx(USDC_BASE, erc20Transfer(RECIPIENT, parseUnits('500', 6))), + tx(RECIPIENT, '0xabcdef01'), + ], + }, +] + +// ── Vote-list variants ───────────────────────────────────────── + +const v = ( + voter: string, + support: ProposalDetailVote['support'], + weight: number, + reason: string | null = null, + ens: string | null = null +): ProposalDetailVote => ({ + voter, + voterShort: short(voter), + voterEns: ens, + support, + weight, + reason, +}) + +const fewVotes: ProposalDetailVote[] = [ + v( + fakeAddr(1), + 'for', + 120, + 'Strongly support — this unblocks the Q3 roadmap.', + 'alice.eth' + ), + v(fakeAddr(2), 'against', 64, 'Treasury impact is too high right now.'), + v(fakeAddr(3), 'abstain', 1, null), +] + +const manyVotes: ProposalDetailVote[] = Array.from({ length: 18 }, (_, i) => + v( + fakeAddr(100 + i), + (['for', 'against', 'abstain'] as const)[i % 3], + Math.max(1, 90 - i * 4), + i % 4 === 0 ? `Reason ${i + 1}: rationale for this vote.` : null, + i % 5 === 0 ? `voter${i}.eth` : null + ) +) + +const allForVotes: ProposalDetailVote[] = [ + v(fakeAddr(50), 'for', 30, 'Yes.'), + v(fakeAddr(51), 'for', 22), + v(fakeAddr(52), 'for', 12, 'Agreed.'), + v(fakeAddr(53), 'abstain', 4), + v(fakeAddr(54), 'abstain', 2), +] + +const voteTiles: { title: string; description: string; votes: ProposalDetailVote[] }[] = [ + { title: 'No votes', description: 'empty state', votes: [] }, + { + title: 'Few votes (mixed, reasons, ENS)', + description: 'for+reason+ENS · against+reason · abstain no-reason', + votes: fewVotes, + }, + { + title: '18 votes — expand', + description: 'renders 12, then "Show 6 more"', + votes: manyVotes, + }, + { + title: 'Filter empty state', + description: '5 for / 0 against / 2 abstain · select "Against" → "No against votes."', + votes: allForVotes, + }, +] + +// ── VoteBar variants ─────────────────────────────────────────── + +const voteBarTiles: { title: string; props: Parameters[0] }[] = [ + { + title: 'Populated, quorum mid-bar', + props: { forV: 18, against: 4, abstain: 2, quorum: 10, height: 14, showLabels: true }, + }, + { + title: 'Quorum > total (pinned 100%)', + props: { forV: 3, against: 1, abstain: 0, quorum: 50, height: 14, showLabels: true }, + }, + { + title: 'No quorum marker (quorum 0)', + props: { forV: 8, against: 2, abstain: 1, quorum: 0, height: 14, showLabels: true }, + }, + { + title: 'Empty (0 / 0 / 0)', + props: { forV: 0, against: 0, abstain: 0, quorum: 5, height: 14, showLabels: true }, + }, +] + +// ── VotingPowerExplainer variants ────────────────────────────── + +const powerTiles: { title: string; props: Parameters[0] }[] = + [ + { title: "none — can't vote", props: { scenario: 'none' } }, + { title: 'delegated away', props: { scenario: 'delegated' } }, + { title: 'eligible (12 votes)', props: { scenario: 'eligible', votingPower: 12 } }, + { + title: 'pending · opens in 2d', + props: { scenario: 'pending', voteStart: now + 2 * DAY }, + }, + { + title: 'pending · opens in 6h', + props: { scenario: 'pending', voteStart: now + 6 * HOUR }, + }, + { + title: 'pending · opens in 45m', + props: { scenario: 'pending', voteStart: now + 45 * MIN }, + }, + { + title: 'pending · opens in 30s', + props: { scenario: 'pending', voteStart: now + 30 }, + }, + { + title: 'incoming (override-only, unreachable in prod)', + props: { scenario: 'incoming' }, + }, + ] + +// ── ProposalActions: role × timelock matrix ──────────────────── + +type ActionProps = Parameters[0] + +const queuedDetail = buildDetail('queued', { + timeCreated: now - 9 * DAY, + voteStart: now - 8 * DAY, + voteEnd: now - DAY, + expiresAt: now + 2 * DAY, +}) +const succeededDetail = buildDetail('succeeded', { + timeCreated: now - 4 * DAY, + voteStart: now - 3 * DAY, + voteEnd: now - DAY, +}) +const pendingDetail = buildDetail('pending', { + timeCreated: now - HOUR, + voteStart: now + 6 * HOUR, + voteEnd: now + 30 * HOUR, +}) +const activeDetail = buildDetail('active', { + timeCreated: now - 3 * DAY, + voteStart: now - 2 * DAY, + voteEnd: now + 2 * DAY, +}) + +const actionTiles: { title: string; description: string; props: ActionProps }[] = [ + { + title: 'Pending · proposer', + description: 'Cancel only', + props: { detail: pendingDetail, statusOverride: 'pending', isProposerOverride: true }, + }, + { + title: 'Pending · vetoer', + description: 'Veto only', + props: { detail: pendingDetail, statusOverride: 'pending', isVetoerOverride: true }, + }, + { + title: 'Active · proposer', + description: 'Cancel only', + props: { detail: activeDetail, statusOverride: 'active', isProposerOverride: true }, + }, + { + title: 'Active · vetoer', + description: 'Veto only', + props: { detail: activeDetail, statusOverride: 'active', isVetoerOverride: true }, + }, + { + title: 'Succeeded · anyone', + description: 'Queue (no role gate)', + props: { detail: succeededDetail, statusOverride: 'succeeded' }, + }, + { + title: 'Succeeded · proposer + vetoer', + description: 'Queue + Cancel + Veto', + props: { + detail: succeededDetail, + statusOverride: 'succeeded', + isProposerOverride: true, + isVetoerOverride: true, + }, + }, + { + title: 'Queued · eta in 2 days', + description: 'Execute disabled · "Available in 2d 0h"', + props: { detail: queuedDetail, statusOverride: 'queued', etaOverride: now + 2 * DAY }, + }, + { + title: 'Queued · eta in 90s', + description: 'Execute disabled · "Available in 1m"', + props: { detail: queuedDetail, statusOverride: 'queued', etaOverride: now + 90 }, + }, + { + title: 'Queued · timelock elapsed', + description: 'Execute ENABLED · "Timelock elapsed."', + props: { detail: queuedDetail, statusOverride: 'queued', etaOverride: now - 1 }, + }, + { + title: 'Queued · eta unknown', + description: 'read in flight · "Checking timelock…"', + props: { detail: queuedDetail, statusOverride: 'queued', etaOverride: null }, + }, + { + title: 'Queued · proposer + vetoer, elapsed', + description: 'Execute + Cancel + Veto', + props: { + detail: queuedDetail, + statusOverride: 'queued', + etaOverride: now - 1, + isProposerOverride: true, + isVetoerOverride: true, + }, + }, +] + +// ── Layout primitives ────────────────────────────────────────── + +function Section({ + title, + blurb, + children, +}: { + title: string + blurb: string + children: React.ReactNode +}) { + return ( +
+
+

{title}

+

{blurb}

+
+ {children} +
+ ) +} + +function Tile({ + title, + description, + children, +}: { + title: string + description?: string + children: React.ReactNode +}) { + return ( +
+
+

{title}

+ {description ?

{description}

: null} +
+ {children} +
+ ) +} + +export default function ProposalStatesPage() { + return ( +
+
+

+ Proposal detail — all states +

+

+ Visual matrix of every render path. Countdowns and relative labels run live from + page load; fixtures stamp every time field relative to now. +

+
+ +
+
+ {stateTiles.map((s) => ( + + + + ))} +
+
+ +
+
+ {actionTiles.map((a) => ( + + + + ))} +
+
+ +
+
+ {powerTiles.map((p) => ( + + + + ))} +
+
+ +
+
+ {txTiles.map((t) => ( + + + + ))} +
+
+ +
+
+ {voteTiles.map((t) => ( + + + + ))} +
+
+ +
+
+ {voteBarTiles.map((t) => ( + + + + ))} +
+
+ +
+
+
+ {STATUSES.map((s) => ( + + ))} +
+
+ {STATUSES.map((s) => ( + + ))} +
+
+ + +
+
+
+
+ ) +} diff --git a/src/app/droposals/[id]/page.tsx b/src/app/droposals/[id]/page.tsx new file mode 100644 index 000000000..0538758fc --- /dev/null +++ b/src/app/droposals/[id]/page.tsx @@ -0,0 +1,56 @@ +import { ChevronLeft } from 'lucide-react' +import type { Metadata } from 'next' +import Link from 'next/link' +import { notFound } from 'next/navigation' + +import { DroposalDetail } from '@/components/coins/DroposalDetail' +import { assertCoinsEnabled } from '@/lib/coins-gate' +import { daoConfig } from '@/lib/dao.config' +import { getDroposalByNumber } from '@/lib/droposals' + +export const revalidate = 30 + +type Params = Promise<{ id: string }> + +export async function generateMetadata({ + params, +}: { + params: Params +}): Promise { + const { id } = await params + const n = Number.parseInt(id, 10) + if (Number.isNaN(n)) return { title: 'Droposal' } + const data = await getDroposalByNumber(n) + if (!data) return { title: 'Droposal' } + return { + title: `${data.name || data.title} ($${data.symbol})`, + description: + data.description ?? `Zora NFT edition deployed by ${daoConfig.name} governance.`, + alternates: { canonical: `/droposals/${id}` }, + } +} + +export default async function DroposalDetailPage({ params }: { params: Params }) { + assertCoinsEnabled() + const { id } = await params + const n = Number.parseInt(id, 10) + if (Number.isNaN(n)) notFound() + + const data = await getDroposalByNumber(n) + if (!data) notFound() + + return ( +
+
+ + + All content + +
+ +
+ ) +} diff --git a/src/app/error.tsx b/src/app/error.tsx new file mode 100644 index 000000000..7b7079e82 --- /dev/null +++ b/src/app/error.tsx @@ -0,0 +1,49 @@ +'use client' + +import { RefreshCw } from 'lucide-react' +import { useEffect } from 'react' + +export default function GlobalError({ + error, + reset, +}: { + error: Error & { digest?: string } + reset: () => void +}) { + useEffect(() => { + console.error('[app error]', error) + }, [error]) + + return ( +
+
+ +
+
+

+ Something went wrong +

+

+ Couldn't load this page +

+

+ There was an error fetching on-chain data. This is usually temporary — try + again. +

+ {error.digest && ( +

+ Digest: {error.digest} +

+ )} +
+ +
+ ) +} diff --git a/src/app/feed/FeedView.tsx b/src/app/feed/FeedView.tsx new file mode 100644 index 000000000..276aee786 --- /dev/null +++ b/src/app/feed/FeedView.tsx @@ -0,0 +1,549 @@ +'use client' + +import { useFeed } from '@buildeross/hooks' +import { FeedEventType } from '@buildeross/sdk/subgraph' +import type { FeedItem } from '@buildeross/types' +import { Loader2 } from 'lucide-react' +import Link from 'next/link' +import { useEffect, useMemo, useRef, useState } from 'react' +import { formatEther, isAddressEqual, zeroAddress } from 'viem' + +import { ActorIdentity } from '@/components/feed/ActorIdentity' +import { + type EventCategory, + EventTypeChip, + QuoteBlock, + VoteSupportBadge, +} from '@/components/feed/primitives' +import { daoConfig } from '@/lib/dao.config' +import { cn, resolveIpfs } from '@/lib/utils' + +const ALL_EVENT_TYPES = Object.values(FeedEventType) + +type CategoryKey = 'all' | 'proposals' | 'auctions' | 'coins' + +const CATEGORY_TO_EVENT_TYPES: Record = { + all: undefined, + proposals: [ + FeedEventType.ProposalCreated, + FeedEventType.ProposalVoted, + FeedEventType.ProposalUpdated, + FeedEventType.ProposalExecuted, + ], + auctions: [ + FeedEventType.AuctionCreated, + FeedEventType.AuctionBidPlaced, + FeedEventType.AuctionSettled, + ], + coins: [ + FeedEventType.ClankerTokenCreated, + FeedEventType.ZoraCoinCreated, + FeedEventType.ZoraDropCreated, + ], +} + +const FILTERS: { key: CategoryKey; label: string }[] = [ + { key: 'all', label: 'All' }, + { key: 'proposals', label: 'Proposals' }, + { key: 'auctions', label: 'Auctions' }, + { key: 'coins', label: 'Coins' }, +] + +export function FeedView() { + const [category, setCategory] = useState('all') + + const eventTypes = CATEGORY_TO_EVENT_TYPES[category] ?? ALL_EVENT_TYPES + + const { items, hasMore, isLoading, isLoadingMore, error, fetchNextPage } = useFeed({ + chainIds: [daoConfig.chainId], + daos: [daoConfig.addresses.token], + eventTypes, + limit: 20, + }) + + const sentinelRef = useRef(null) + useEffect(() => { + const node = sentinelRef.current + if (!node) return + const observer = new IntersectionObserver( + (entries) => { + if (entries[0]?.isIntersecting && hasMore && !isLoadingMore) { + void fetchNextPage() + } + }, + { rootMargin: '300px' } + ) + observer.observe(node) + return () => observer.disconnect() + }, [hasMore, isLoadingMore, fetchNextPage]) + + const grouped = useMemo(() => groupByDay(items), [items]) + + return ( +
+
+
+

+ Feed +

+

Real-time activity from {daoConfig.name}.

+
+
+ {FILTERS.map((f) => ( + + ))} +
+
+ + {isLoading ? ( + + ) : error ? ( +
+ Couldn't load the feed. Try again in a moment. +
+ ) : items.length === 0 ? ( +
+ No activity in this category yet. +
+ ) : ( +
+ {grouped.map((group) => ( +
+
+

+ {group.label} +

+ +
+
    + {group.items.map((item) => ( +
  • + +
  • + ))} +
+
+ ))} +
+ {isLoadingMore && ( +
+ +
+ )} +
+ )} +
+ ) +} + +// ── Card wrapper ────────────────────────────────────────────── + +function Card({ + actor, + time, + category, + children, +}: { + /** Omit for events with no meaningful actor (e.g. auctions settled with no bid). */ + actor?: React.ReactNode + time: string + category: EventCategory + children: React.ReactNode +}) { + return ( +
+
+
+ {actor} + + {actor ? '· ' : ''} + {time} + +
+ +
+
{children}
+
+ ) +} + +// ── Per-item renderer ───────────────────────────────────────── + +function FeedCard({ item }: { item: FeedItem }) { + const time = relativeTimeAgo(item.timestamp * 1000) + + switch (item.type) { + case 'AUCTION_BID_PLACED': + return ( + } + time={time} + category="auction-bid" + > + +

+ bid {formatBidEth(item.amount)} ETH on{' '} + + {item.tokenName || `#${item.tokenId}`} + +

+ {item.bidComment ? {item.bidComment} : null} +
+
+ ) + + case 'AUCTION_CREATED': + return ( + } + time={time} + category="auction" + > + +

+ auction started for{' '} + + {item.tokenName || `#${item.tokenId}`} + +

+
+
+ ) + + case 'AUCTION_SETTLED': { + const noBids = + isAddressEqual(item.winner, zeroAddress) || + BigInt(item.amount || '0') === BigInt(0) + return ( + } + time={time} + category="auction-settled" + > + + {noBids ? ( +

+ + {item.tokenName || `#${item.tokenId}`} + {' '} + settled with no bids +

+ ) : ( +

+ won{' '} + + {item.tokenName || `#${item.tokenId}`} + {' '} + for {formatBidEth(item.amount)} ETH +

+ )} +
+
+ ) + } + + case 'PROPOSAL_CREATED': + return ( + } + time={time} + category="proposal" + > +

+ created{' '} + + #{item.proposalNumber} {item.proposalTitle} + +

+
+ ) + + case 'PROPOSAL_VOTED': + return ( + } time={time} category="vote"> +
+
+ + on + + #{item.proposalNumber} {item.proposalTitle} + + {item.weight ? ( + + · {formatVoteWeight(item.weight)}{' '} + {Number(item.weight) === 1 ? 'vote' : 'votes'} + + ) : null} +
+ {item.reason ? {item.reason} : null} +
+
+ ) + + case 'PROPOSAL_UPDATED': + return ( + } + time={time} + category="proposal" + > +

+ posted an update on{' '} + + #{item.proposalNumber} {item.proposalTitle} + +

+ {item.message ? {item.message} : null} +
+ ) + + case 'PROPOSAL_EXECUTED': + return ( + } + time={time} + category="executed" + > +

+ proposal{' '} + + #{item.proposalNumber} {item.proposalTitle} + {' '} + executed +

+
+ ) + + case 'CLANKER_TOKEN_CREATED': + return ( + } time={time} category="coin"> + +

+ launched{' '} + + ${item.tokenSymbol} + {' '} + {item.tokenName ? `· ${item.tokenName}` : null} +

+
+
+ ) + + case 'ZORA_COIN_CREATED': + return ( + } time={time} category="coin"> +
+

+ launched{' '} + + ${item.coinSymbol} + {' '} + {item.coinName ? `· ${item.coinName}` : null} +

+
+
+ ) + + case 'ZORA_DROP_CREATED': + return ( + } + time={time} + category="coin" + > + +

+ created drop{' '} + + {item.dropName} + +

+
+
+ ) + + default: + return null + } +} + +// ── Body with optional left thumbnail ───────────────────────── + +function BodyWithThumb({ + image, + name, + children, +}: { + image?: string | null + name?: string | null + children: React.ReactNode +}) { + const src = image ? safeImageSrc(image) : null + + return ( +
+ {src ? ( + // template doesn't configure remotePatterns and many feed images are + // direct render endpoints (nouns.build/api/renderer) that don't need + // optimization. Plain avoids whitelisting every CDN. + {name + ) : null} +
{children}
+
+ ) +} + +function safeImageSrc(src: string): string | null { + if (!src) return null + if (src.startsWith('ipfs://')) return resolveIpfs(src) + if (src.startsWith('http://') || src.startsWith('https://')) return src + return null +} + +// ── Skeleton ────────────────────────────────────────────────── + +function FeedSkeleton() { + return ( +
+ {Array.from({ length: 5 }).map((_, i) => ( +
+
+
+ + +
+ +
+
+ +
+
+
+
+
+
+ ))} +
+ ) +} + +// ── Utilities ───────────────────────────────────────────────── + +function formatBidEth(amountWei: string): string { + try { + return trimDec(formatEther(BigInt(amountWei)), 4) + } catch { + return amountWei + } +} + +function formatVoteWeight(weight: string): string { + const n = Number(weight) + if (isNaN(n)) return weight + if (n >= 1000) return `${(n / 1000).toFixed(1).replace(/\.0$/, '')}K` + return Math.round(n).toString() +} + +function trimDec(value: string, max: number): string { + if (!value.includes('.')) return value + const [intPart, decPart] = value.split('.') + const sliced = decPart.slice(0, max).replace(/0+$/, '') + return sliced ? `${intPart}.${sliced}` : intPart +} + +function relativeTimeAgo(ms: number): string { + const diffSec = Math.floor((Date.now() - ms) / 1000) + if (diffSec < 60) return `${diffSec}s ago` + const m = Math.floor(diffSec / 60) + if (m < 60) return `${m}m ago` + const h = Math.floor(m / 60) + if (h < 24) return `${h}h ago` + const d = Math.floor(h / 24) + if (d < 30) return `${d}d ago` + const mo = Math.floor(d / 30) + return `${mo}mo ago` +} + +function groupByDay(items: FeedItem[]): Array<{ + dayKey: number + label: string + items: FeedItem[] +}> { + const map = new Map() + for (const it of items) { + const d = new Date(it.timestamp * 1000) + const key = Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()) + if (!map.has(key)) map.set(key, []) + map.get(key)!.push(it) + } + const entries = Array.from(map.entries()).sort((a, b) => b[0] - a[0]) + const now = new Date() + const todayKey = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()) + return entries.map(([key, dayItems]) => ({ + dayKey: key, + label: dayLabel(key, todayKey), + items: dayItems, + })) +} + +function dayLabel(dayKey: number, todayKey: number): string { + const diffDays = Math.round((todayKey - dayKey) / (1000 * 60 * 60 * 24)) + if (diffDays === 0) return 'Today' + if (diffDays === 1) return 'Yesterday' + if (diffDays < 7) return `${diffDays} days ago` + const d = new Date(dayKey) + return d.toLocaleDateString('en-US', { + month: 'short', + day: 'numeric', + year: d.getUTCFullYear() !== new Date().getUTCFullYear() ? 'numeric' : undefined, + timeZone: 'UTC', + }) +} diff --git a/src/app/feed/page.tsx b/src/app/feed/page.tsx new file mode 100644 index 000000000..82f09c94a --- /dev/null +++ b/src/app/feed/page.tsx @@ -0,0 +1,15 @@ +import type { Metadata } from 'next' + +import { daoConfig } from '@/lib/dao.config' + +import { FeedView } from './FeedView' + +export const metadata: Metadata = { + title: 'Feed', + description: `Real-time activity from ${daoConfig.name}: proposals, votes, auctions and on-chain events.`, + alternates: { canonical: '/feed' }, +} + +export default function FeedPage() { + return +} diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 000000000..8e82d6d42 --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,164 @@ +@import 'tailwindcss'; +@plugin '@tailwindcss/typography'; + +@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *)); + +@theme { + --font-sans: var(--font-geist), system-ui, -apple-system, 'Segoe UI', sans-serif; + --font-mono: var(--font-geist-mono), ui-monospace, 'SF Mono', Menlo, monospace; + --font-display: var(--font-display-active), var(--font-geist), system-ui, sans-serif; + + --color-bg: var(--bg); + --color-fg: var(--fg); + --color-fg-2: var(--fg-2); + --color-muted-fg: var(--muted-fg); + --color-surface: var(--surface); + --color-surface-2: var(--surface-2); + --color-surface-3: var(--surface-3); + --color-border: var(--border); + --color-border-strong: var(--border-strong); + + --color-accent: var(--accent); + --color-accent-strong: var(--accent-strong); + --color-accent-fg: var(--accent-fg); + + --color-success: var(--success); + --color-destructive: var(--destructive); + --color-warning: var(--warning); + + --color-vote-for: var(--vote-for); + --color-vote-against: var(--vote-against); + --color-vote-abstain: var(--vote-abstain); + + --radius-xs: calc(var(--radius) * 0.25); + --radius-sm: calc(var(--radius) * 0.4); + --radius-md: calc(var(--radius) * 0.7); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) * 1.4); +} + +:root { + --accent: #2563eb; + --accent-strong: color-mix(in oklab, #2563eb 80%, black); + --accent-fg: #ffffff; + --radius: 12px; + + --bg: #fafafa; + --surface: #ffffff; + --surface-2: #f4f4f5; + --surface-3: #ededee; + --border: #e5e5e7; + --border-strong: #d4d4d7; + --fg: #0b0b0c; + --fg-2: #2a2a2e; + --muted-fg: #71717a; + + --success: #16a34a; + --destructive: #dc2626; + --warning: #ea580c; + + --vote-for: #16a34a; + --vote-against: #dc2626; + --vote-abstain: #a1a1aa; +} + +[data-theme='dark'] { + --accent-fg: #ffffff; + + --bg: #09090b; + --surface: #131316; + --surface-2: #1c1c20; + --surface-3: #26262b; + --border: #26262b; + --border-strong: #3a3a40; + --fg: #fafafa; + --fg-2: #d4d4d7; + --muted-fg: #9a9aa2; +} + +/* Applied to content sitting on a colored hero band: rebinds tokens to + white-on-translucent so child widgets (bid form, settle panel, success / + error states) read against an arbitrary tint. `--accent` is intentionally + NOT rebound — the primary action button keeps its brand color. */ +[data-theme='tint'] { + --surface: rgba(255, 255, 255, 0.1); + --surface-2: rgba(255, 255, 255, 0.12); + --surface-3: rgba(255, 255, 255, 0.16); + --border: rgba(255, 255, 255, 0.25); + --border-strong: rgba(255, 255, 255, 0.4); + --fg: #ffffff; + --fg-2: rgba(255, 255, 255, 0.85); + --muted-fg: rgba(255, 255, 255, 0.7); + --success: #ffffff; + --destructive: #fecaca; + --warning: #fde68a; +} + +/* Applied to content on a LIGHT colored hero band: forces the light-theme + tokens (white surfaces, dark text) regardless of the page's light/dark mode, + so child widgets read against the light tint. */ +[data-theme='tint-light'] { + --surface: #ffffff; + --surface-2: #f4f4f5; + --surface-3: #ededee; + --border: #e5e5e7; + --border-strong: #d4d4d7; + --fg: #0b0b0c; + --fg-2: #2a2a2e; + --muted-fg: #71717a; + --success: #16a34a; + --destructive: #dc2626; + --warning: #ea580c; +} + +@keyframes marquee { + from { + transform: translateX(0); + } + to { + transform: translateX(-50%); + } +} + +@layer base { + * { + box-sizing: border-box; + } + html, + body { + margin: 0; + padding: 0; + overflow-x: clip; + } + body { + background: var(--bg); + color: var(--fg); + font-family: var(--font-sans); + font-size: 15px; + line-height: 1.55; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + } + button { + font-family: inherit; + cursor: pointer; + } + input, + textarea, + select { + font-family: inherit; + color: inherit; + } +} + +/** + * Nudges a page header's right-hand control (button / filter pills / search) + * down so its TOP edge meets the CAP-HEIGHT of the adjacent display heading + * rather than the heading's line-box top. The big `clamp(36px,5vw,56px)` + * display font leaves a leading gap above its capitals; this offset (~0.18× the + * font size, tracked with the same clamp curve so it scales with the heading) + * cancels that gap, landing the control level with the visible title text. + */ +@utility cap-nudge { + margin-top: clamp(6.5px, 0.9vw, 10px); +} diff --git a/src/app/icon.tsx b/src/app/icon.tsx new file mode 100644 index 000000000..2ab3fd5b3 --- /dev/null +++ b/src/app/icon.tsx @@ -0,0 +1,50 @@ +import { ImageResponse } from 'next/og' + +import { daoConfig } from '@/lib/dao.config' +import { resolveIpfs } from '@/lib/utils' + +export const size = { width: 32, height: 32 } +export const contentType = 'image/png' +export const revalidate = 86400 + +export default async function Icon() { + const src = resolveIpfs(daoConfig.image) + + try { + return new ImageResponse( + ( + + ), + { ...size } + ) + } catch { + return new ImageResponse( + ( +
+ {daoConfig.name[0]} +
+ ), + { ...size } + ) + } +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 000000000..51bc32f72 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,109 @@ +import './globals.css' + +import type { Metadata } from 'next' +import { + Fraunces, + Geist, + Geist_Mono, + IBM_Plex_Sans, + Londrina_Solid, +} from 'next/font/google' + +import { Footer } from '@/components/Footer' +import { Header } from '@/components/Header' +import { MainContainer } from '@/components/MainContainer' +import { TweaksPanel } from '@/components/TweaksPanel' +import { daoConfig } from '@/lib/dao.config' + +import { Providers } from './providers' + +const geistSans = Geist({ + variable: '--font-geist', + subsets: ['latin'], +}) + +const geistMono = Geist_Mono({ + variable: '--font-geist-mono', + subsets: ['latin'], +}) + +const londrina = Londrina_Solid({ + variable: '--font-londrina', + weight: ['400', '900'], + subsets: ['latin'], +}) + +const ibmPlex = IBM_Plex_Sans({ + variable: '--font-ibm-plex', + weight: ['400', '600', '700'], + subsets: ['latin'], +}) + +const fraunces = Fraunces({ + variable: '--font-fraunces', + subsets: ['latin'], +}) + +const DISPLAY_FONT_VAR: Record = { + Geist: 'var(--font-geist)', + 'Londrina Solid': 'var(--font-londrina)', + 'IBM Plex Sans': 'var(--font-ibm-plex)', + Fraunces: 'var(--font-fraunces)', +} + +const siteUrl = + process.env.NEXT_PUBLIC_SITE_URL || + process.env.VERCEL_PROJECT_PRODUCTION_URL || + process.env.VERCEL_URL || + 'http://localhost:3000' +const metadataBase = new URL(siteUrl.startsWith('http') ? siteUrl : `https://${siteUrl}`) + +export const metadata: Metadata = { + metadataBase, + title: { + default: daoConfig.name, + template: `%s | ${daoConfig.name}`, + }, + description: daoConfig.tagline, +} + +export default function RootLayout({ children }: { children: React.ReactNode }) { + const { accent, radius, displayFont } = daoConfig.theme + const resolvedFont = DISPLAY_FONT_VAR[displayFont] + if (!resolvedFont) { + console.warn( + `[layout] Unknown displayFont "${displayFont}" in dao.config — falling back to Geist. ` + + `Valid options: ${Object.keys(DISPLAY_FONT_VAR).join(', ')}` + ) + } + const rootStyle: React.CSSProperties & Record = { + '--accent': accent, + '--accent-strong': `color-mix(in oklab, ${accent} 80%, black)`, + '--radius': `${radius}px`, + '--font-display-active': resolvedFont ?? 'var(--font-geist)', + } + + return ( + + + +
+
+ {children} +
+
+ {process.env.NODE_ENV !== 'production' && } +
+ + + ) +} diff --git a/src/app/members/[address]/not-found.tsx b/src/app/members/[address]/not-found.tsx new file mode 100644 index 000000000..fa35ae5eb --- /dev/null +++ b/src/app/members/[address]/not-found.tsx @@ -0,0 +1,33 @@ +import { ChevronLeft } from 'lucide-react' +import Link from 'next/link' + +export default function MemberNotFound() { + return ( +
+
+ + + All members + +
+
+

+ No DAO activity for this address +

+

+ This wallet holds no tokens, has never voted, and hasn’t authored any + proposals on this DAO. Double-check the address or browse the full members list. +

+ + Back to members + +
+
+ ) +} diff --git a/src/app/members/[address]/page.tsx b/src/app/members/[address]/page.tsx new file mode 100644 index 000000000..abf99faff --- /dev/null +++ b/src/app/members/[address]/page.tsx @@ -0,0 +1,293 @@ +import { ChevronLeft } from 'lucide-react' +import type { Metadata } from 'next' +import Link from 'next/link' +import { notFound } from 'next/navigation' + +import { ActiveBadge } from '@/components/dao/ActiveBadge' +import { KpiCard } from '@/components/dao/KpiCard' +import { StatusBadge } from '@/components/dao/StatusBadge' +import { WalletPill } from '@/components/dao/WalletPill' +import { daoConfig } from '@/lib/dao.config' +import { getMemberDetail } from '@/lib/dao-data' +import { resolveIpfs } from '@/lib/utils' + +export const revalidate = 60 + +type Params = Promise<{ address: string }> + +const SECTION_CAP = 50 + +const VOTE_TONE = { + for: 'text-vote-for bg-vote-for/15 border-vote-for/40', + against: 'text-vote-against bg-vote-against/15 border-vote-against/40', + abstain: 'text-muted-fg bg-surface-2 border-border', +} as const + +export async function generateMetadata({ + params, +}: { + params: Params +}): Promise { + const { address } = await params + const detail = await getMemberDetail(address) + if (!detail) return { title: 'Member' } + const label = detail.ens ?? detail.addressShort + return { title: `${label} · Members` } +} + +export default async function MemberDetailPage({ params }: { params: Params }) { + const { address } = await params + const detail = await getMemberDetail(address) + if (!detail) notFound() + + const selfDelegated = + detail.delegate !== null && + detail.delegate.toLowerCase() === detail.address.toLowerCase() + const hasDelegate = detail.delegate !== null && !selfDelegated + const joinedLabel = detail.joinedAt + ? new Date(detail.joinedAt * 1000).toLocaleDateString(undefined, { + month: 'short', + day: '2-digit', + year: 'numeric', + }) + : null + + const votesCapped = detail.votesCast.length >= SECTION_CAP + const authoredCapped = detail.proposalsAuthored.length >= SECTION_CAP + const delegatorsCapped = detail.delegators.length >= SECTION_CAP + + return ( +
+
+ + + All members + +
+ + {/* Header */} +
+
+ + {joinedLabel && Joined {joinedLabel}} +
+

+ {detail.ens ?? detail.addressShort} +

+
+ +
+
+ + {/* KPI row — 2 tiles instead of 4; votes/authored counts already render + next to the section titles. */} +
+ + +
+ + {/* Delegation — promoted from sidebar to a primary section. */} +
+

Delegation

+
+
+
+ Delegates to +
+ {selfDelegated ? ( + Self-delegated + ) : hasDelegate && detail.delegate ? ( + + ) : ( + + No delegation set — no voting power + + )} +
+ +
+
+ Delegators + + {delegatorsCapped ? `${SECTION_CAP}+` : detail.delegators.length} + +
+ {detail.delegators.length === 0 ? ( + None + ) : ( +
    + {detail.delegators.map((d) => ( +
  • + + + {d.tokenCount} {d.tokenCount === 1 ? 'token' : 'tokens'} + +
  • + ))} +
+ )} + {delegatorsCapped && ( +
+ Showing top {SECTION_CAP} delegators by token count. +
+ )} +
+
+
+ + {/* Voting history */} +
+

+ Voting history + + {votesCapped ? `${SECTION_CAP}+` : detail.votesCast.length} + +

+ {detail.votesCast.length === 0 ? ( +
No votes cast yet.
+ ) : ( +
    + {detail.votesCast.map((v) => ( +
  • + + {v.support} + + + Prop {v.proposalNumber} · {v.proposalTitle} + + +
    + + {v.weight} {v.weight === 1 ? 'vote' : 'votes'} + + {v.reason && ( + “{v.reason}” + )} +
    +
  • + ))} +
+ )} + {votesCapped && ( +
+ Showing latest {SECTION_CAP} votes. +
+ )} +
+ + {/* Proposals authored */} +
+

+ Proposals authored + + {authoredCapped ? `${SECTION_CAP}+` : detail.proposalsAuthored.length} + +

+ {detail.proposalsAuthored.length === 0 ? ( +
No proposals authored.
+ ) : ( +
    + {detail.proposalsAuthored.map((p) => ( +
  • + + Prop {p.proposalNumber} · {p.title} + + {p.date} + +
  • + ))} +
+ )} + {authoredCapped && ( +
+ Showing latest {SECTION_CAP} proposals. +
+ )} +
+ + {/* Tokens held */} + {detail.tokens.length > 0 && ( +
+

+ Tokens + + {detail.tokens.length} + +

+
    + {detail.tokens.map((t) => ( +
  • + + {t.image ? ( + // eslint-disable-next-line @next/next/no-img-element + {t.name + ) : ( +
    + #{t.tokenId} +
    + )} + + #{t.tokenId} + + +
  • + ))} +
+
+ )} +
+ ) +} diff --git a/src/app/members/page.tsx b/src/app/members/page.tsx new file mode 100644 index 000000000..39df797d6 --- /dev/null +++ b/src/app/members/page.tsx @@ -0,0 +1,29 @@ +import type { Metadata } from 'next' + +import { MembersTable } from '@/components/dao/MembersTable' +import { getMembersPageData } from '@/lib/dao-data' + +export const metadata: Metadata = { + title: 'Members', +} + +export const revalidate = 120 + +export default async function MembersPage() { + const data = await getMembersPageData() + return ( + ({ + ens: m.ens, + addr: m.addrShort, + addrFull: m.addr, + votes: m.votes, + pct: m.pct, + joined: m.joined, + active: m.active, + }))} + totalMembers={data.totalMembers} + activeMembers={data.activeMembers} + /> + ) +} diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx new file mode 100644 index 000000000..1c0a0c2b5 --- /dev/null +++ b/src/app/not-found.tsx @@ -0,0 +1,36 @@ +import Link from 'next/link' + +import { DaoAvatar } from '@/components/DaoAvatar' +import { daoConfig } from '@/lib/dao.config' + +export default function NotFound() { + return ( +
+ +
+

+ 404 +

+

+ Page not found +

+

+ This page doesn't exist or was moved. Head back to the {daoConfig.name}{' '} + community hub. +

+
+ + Back to dashboard + +
+ ) +} diff --git a/src/app/opengraph-image.tsx b/src/app/opengraph-image.tsx new file mode 100644 index 000000000..76f7e00d5 --- /dev/null +++ b/src/app/opengraph-image.tsx @@ -0,0 +1,129 @@ +import { ImageResponse } from 'next/og' + +import { daoConfig } from '@/lib/dao.config' +import { OG_CONTENT_TYPE, OG_SIZE, ogColors, resolveIpfs } from '@/lib/og-utils' + +export const alt = `${daoConfig.name} — ${daoConfig.tagline}` +export const size = OG_SIZE +export const contentType = OG_CONTENT_TYPE +export const revalidate = 3600 + +export default async function DashboardOGImage() { + const c = ogColors() + const logoUrl = resolveIpfs(daoConfig.image) + + return new ImageResponse( + ( +
+
+ {logoUrl ? ( + {daoConfig.name} + ) : ( +
+ )} +
+ {daoConfig.name} +
+
+ +
+
+ {daoConfig.tagline} +
+
+
+ {chainName(daoConfig.chainId)} +
+
+ {daoConfig.name} · Built with Builder +
+
+
+
+ ), + OG_SIZE + ) +} + +function chainName(id: number): string { + return ( + { + 1: 'Ethereum', + 10: 'Optimism', + 8453: 'Base', + 7777777: 'Zora', + }[id] ?? `Chain ${id}` + ) +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 000000000..4e5623b08 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,58 @@ +import { DashboardHero } from '@/components/dao/DashboardHero' +import { HomeFeed } from '@/components/dao/HomeFeed' +import { HomeMetaStrip } from '@/components/dao/HomeMetaStrip' +import { HomeProposals } from '@/components/dao/HomeProposals' +import { daoConfig, fallbackArtPalette } from '@/lib/dao.config' +import { getDashboardData } from '@/lib/dao-data' + +// Re-fetch every 5min on the server. Subgraph free tier rate-limits aggressively. +export const revalidate = 300 + +const ACTIVE_PROPOSAL_STATES = new Set(['active', 'pending', 'queued', 'succeeded']) + +export default async function Dashboard() { + const data = await getDashboardData() + + const tokenLabel = daoConfig.name.split(' ')[0] + const palette = fallbackArtPalette() + const activeProposalCount = data.recentProposals.filter((p) => + ACTIVE_PROPOSAL_STATES.has(p.status) + ).length + + return ( +
+ + + + + {/* Lower content sits inside a forced-dark themed panel so the layout + * mirrors nouns.game's high-contrast top→bottom split regardless of + * whether the user is in light or dark mode. The data-theme attribute + * re-binds every --bg/--surface/--border var inside this subtree to + * its dark-mode value (see globals.css). Negative margins cancel the + * MainContainer column padding so the dark band fills the full column + * width, then it re-pads its own content. */} +
+
+ + +
+
+
+ ) +} diff --git a/src/app/proposals/[id]/opengraph-image.tsx b/src/app/proposals/[id]/opengraph-image.tsx new file mode 100644 index 000000000..caa2724ce --- /dev/null +++ b/src/app/proposals/[id]/opengraph-image.tsx @@ -0,0 +1,252 @@ +import { ImageResponse } from 'next/og' + +import { daoConfig } from '@/lib/dao.config' +import { getProposalByNumber } from '@/lib/dao-data' +import { OG_CONTENT_TYPE, OG_SIZE, ogColors, resolveIpfs } from '@/lib/og-utils' + +export const alt = `${daoConfig.name} proposal` +export const size = OG_SIZE +export const contentType = OG_CONTENT_TYPE +export const revalidate = 60 + +const STATUS_COLORS: Record = { + pending: { bg: 'rgba(234,88,12,0.18)', fg: '#fb923c' }, + active: { bg: 'rgba(37,99,235,0.18)', fg: '#60a5fa' }, + succeeded: { bg: 'rgba(22,163,74,0.18)', fg: '#22c55e' }, + queued: { bg: 'rgba(37,99,235,0.12)', fg: '#93c5fd' }, + executed: { bg: 'rgba(22,163,74,0.22)', fg: '#22c55e' }, + defeated: { bg: 'rgba(220,38,38,0.18)', fg: '#f87171' }, + cancelled: { bg: 'rgba(120,120,128,0.20)', fg: '#a1a1aa' }, + expired: { bg: 'rgba(120,120,128,0.20)', fg: '#a1a1aa' }, + vetoed: { bg: 'rgba(220,38,38,0.18)', fg: '#f87171' }, +} + +type Params = Promise<{ id: string }> + +export default async function ProposalOGImage({ params }: { params: Params }) { + const { id } = await params + const isValidProposalNumber = /^\d+$/.test(id) + const proposalNumber = isValidProposalNumber ? parseInt(id, 10) : null + const c = ogColors() + const logoUrl = resolveIpfs(daoConfig.image) + + let title = proposalNumber === null ? 'Proposal' : `Proposal #${proposalNumber}` + let proposer = '' + let status: keyof typeof STATUS_COLORS = 'pending' + let forVotes = 0 + let againstVotes = 0 + let abstainVotes = 0 + let quorum = 0 + + if (proposalNumber !== null && Number.isFinite(proposalNumber) && proposalNumber >= 0) { + try { + const detail = await getProposalByNumber(proposalNumber) + if (detail) { + title = detail.summary.title + proposer = detail.summary.proposer + status = detail.summary.status + forVotes = detail.summary.forVotes + againstVotes = detail.summary.againstVotes + abstainVotes = detail.summary.abstainVotes + quorum = detail.summary.quorum + } + } catch { + /* fall through with defaults */ + } + } + + const total = Math.max(1, forVotes + againstVotes + abstainVotes) + const forPct = (forVotes / total) * 100 + const againstPct = (againstVotes / total) * 100 + const abstainPct = (abstainVotes / total) * 100 + const quorumPct = Math.min(100, (quorum / total) * 100) + const empty = forVotes + againstVotes + abstainVotes === 0 + const sStyle = STATUS_COLORS[status] ?? STATUS_COLORS.pending + + return new ImageResponse( + ( +
+ {/* Header */} +
+
+ {logoUrl && ( + {daoConfig.name} + )} +
+ {daoConfig.name} +
+
+
+ Prop {proposalNumber} +
+
+ + {/* Body */} +
+
+
+ {status} +
+ {proposer && ( +
+ by + {shortAddr(proposer)} +
+ )} +
+
+ {title} +
+
+ + {/* Vote bar */} +
+
+ {!empty && ( + <> +
+
+
+ {quorum > 0 && ( +
+ )} + + )} +
+
+ + {forVotes} For + + + {againstVotes}{' '} + Against + + + {abstainVotes}{' '} + Abstain + + + Quorum: {quorum} + +
+
+
+ ), + OG_SIZE + ) +} + +function shortAddr(addr: string): string { + if (!addr || addr.length < 10) return addr + return `${addr.slice(0, 6)}…${addr.slice(-4)}` +} diff --git a/src/app/proposals/[id]/page.tsx b/src/app/proposals/[id]/page.tsx new file mode 100644 index 000000000..6b834d7d4 --- /dev/null +++ b/src/app/proposals/[id]/page.tsx @@ -0,0 +1,37 @@ +import { ChevronLeft } from 'lucide-react' +import Link from 'next/link' +import { notFound } from 'next/navigation' + +import { ProposalDetailView } from '@/components/dao/ProposalDetailView' +import { getProposalByNumber } from '@/lib/dao-data' + +export const revalidate = 30 + +type Params = Promise<{ id: string }> + +export default async function ProposalDetailPage({ params }: { params: Params }) { + const { id } = await params + if (!/^\d+$/.test(id)) notFound() + + const proposalNumber = parseInt(id, 10) + if (!Number.isFinite(proposalNumber) || proposalNumber < 0) notFound() + + const detail = await getProposalByNumber(proposalNumber) + if (!detail) notFound() + + return ( +
+
+ + + All proposals + +
+ + +
+ ) +} diff --git a/src/app/proposals/new/page.tsx b/src/app/proposals/new/page.tsx new file mode 100644 index 000000000..997ad0d32 --- /dev/null +++ b/src/app/proposals/new/page.tsx @@ -0,0 +1,35 @@ +import type { Metadata } from 'next' + +import { ProposalCreateForm } from '@/components/dao/ProposalCreateForm' +import { + getTreasuryNftHoldings, + getTreasuryTokenHoldings, + type TreasuryNft, + type TreasuryTokenHolding, +} from '@/lib/dao-data' + +export const metadata: Metadata = { + title: 'New proposal', +} + +export const revalidate = 60 + +export default async function NewProposalPage() { + let treasuryNfts: TreasuryNft[] = [] + let treasuryTokens: TreasuryTokenHolding[] = [] + await Promise.all([ + getTreasuryNftHoldings() + .then((v) => { + treasuryNfts = v + }) + .catch(() => {}), + getTreasuryTokenHoldings() + .then((v) => { + treasuryTokens = v + }) + .catch(() => {}), + ]) + return ( + + ) +} diff --git a/src/app/proposals/page.tsx b/src/app/proposals/page.tsx new file mode 100644 index 000000000..56fb5cbad --- /dev/null +++ b/src/app/proposals/page.tsx @@ -0,0 +1,15 @@ +import type { Metadata } from 'next' + +import { ProposalsListView } from '@/components/dao/ProposalsListView' +import { getAllProposals } from '@/lib/dao-data' + +export const metadata: Metadata = { + title: 'Proposals', +} + +export const revalidate = 60 + +export default async function ProposalsPage() { + const proposals = await getAllProposals(50) + return +} diff --git a/src/app/providers.tsx b/src/app/providers.tsx new file mode 100644 index 000000000..959dae1f3 --- /dev/null +++ b/src/app/providers.tsx @@ -0,0 +1,25 @@ +'use client' + +import { ThemeProvider as NextThemesProvider } from 'next-themes' +import { SWRConfig } from 'swr' + +import { TweaksProvider } from '@/lib/tweaks-context' + +import { Web3Providers } from './web3-providers' + +export function Providers({ children }: { children: React.ReactNode }) { + return ( + + + + {children} + + + + ) +} diff --git a/src/app/robots.ts b/src/app/robots.ts new file mode 100644 index 000000000..a6800c430 --- /dev/null +++ b/src/app/robots.ts @@ -0,0 +1,8 @@ +import type { MetadataRoute } from 'next' + +export default function robots(): MetadataRoute.Robots { + return { + rules: { userAgent: '*', allow: '/' }, + sitemap: `${process.env.NEXT_PUBLIC_SITE_URL ?? ''}/sitemap.xml`, + } +} diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts new file mode 100644 index 000000000..3617227f3 --- /dev/null +++ b/src/app/sitemap.ts @@ -0,0 +1,80 @@ +import type { MetadataRoute } from 'next' + +import { getAllProposals, getAuctionPriceHistory } from '@/lib/dao-data' + +export const revalidate = 3600 + +function resolveBase(): string { + const raw = + process.env.NEXT_PUBLIC_SITE_URL || + process.env.VERCEL_PROJECT_PRODUCTION_URL || + process.env.VERCEL_URL || + 'http://localhost:3000' + return raw.startsWith('http') + ? raw.replace(/\/$/, '') + : `https://${raw.replace(/\/$/, '')}` +} + +export default async function sitemap(): Promise { + const BASE = resolveBase() + const now = new Date() + + const STATIC: MetadataRoute.Sitemap = [ + { url: BASE, lastModified: now, changeFrequency: 'daily', priority: 1.0 }, + { + url: `${BASE}/auction/latest`, + lastModified: now, + changeFrequency: 'hourly', + priority: 0.9, + }, + { + url: `${BASE}/proposals`, + lastModified: now, + changeFrequency: 'hourly', + priority: 0.8, + }, + { + url: `${BASE}/treasury`, + lastModified: now, + changeFrequency: 'daily', + priority: 0.7, + }, + { + url: `${BASE}/members`, + lastModified: now, + changeFrequency: 'daily', + priority: 0.6, + }, + { url: `${BASE}/coins`, lastModified: now, changeFrequency: 'daily', priority: 0.6 }, + { url: `${BASE}/feed`, lastModified: now, changeFrequency: 'hourly', priority: 0.5 }, + { url: `${BASE}/about`, lastModified: now, changeFrequency: 'weekly', priority: 0.5 }, + ] + + const [proposalUrls, auctionUrls] = await Promise.all([ + // Default cap is 1000 proposals (well under Next.js's 50k sitemap entry + // limit). For DAOs that exceed this, see Next.js's `generateSitemaps` + // API for sharding: https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap#generating-multiple-sitemaps + getAllProposals(1000) + .then((proposals) => + proposals.map((p) => ({ + url: `${BASE}/proposals/${p.proposalNumber}`, + lastModified: now, + changeFrequency: 'weekly', + priority: 0.6, + })) + ) + .catch(() => [] as MetadataRoute.Sitemap), + getAuctionPriceHistory(365) + .then((points) => + points.map((p) => ({ + url: `${BASE}/auction/${p.tokenId}`, + lastModified: new Date(p.endTime * 1000), + changeFrequency: 'monthly', + priority: 0.5, + })) + ) + .catch(() => [] as MetadataRoute.Sitemap), + ]) + + return [...STATIC, ...proposalUrls, ...auctionUrls] +} diff --git a/src/app/treasury/opengraph-image.tsx b/src/app/treasury/opengraph-image.tsx new file mode 100644 index 000000000..7a507e264 --- /dev/null +++ b/src/app/treasury/opengraph-image.tsx @@ -0,0 +1,185 @@ +import { ImageResponse } from 'next/og' + +import { daoConfig } from '@/lib/dao.config' +import { getTreasuryPageData } from '@/lib/dao-data' +import { OG_CONTENT_TYPE, OG_SIZE, ogColors, resolveIpfs, trimEth } from '@/lib/og-utils' +import { ETH_EQUIVALENT_SYMBOLS, STABLE_SYMBOLS } from '@/lib/treasury-tokens' + +export const alt = `${daoConfig.name} Treasury` +export const size = OG_SIZE +export const contentType = OG_CONTENT_TYPE +export const revalidate = 300 + +function fmtUsd(n: number): string { + if (n >= 1_000_000) return `$${(n / 1_000_000).toFixed(2)}M` + if (n >= 1_000) return `$${(n / 1_000).toFixed(1)}k` + return `$${n.toFixed(0)}` +} + +export default async function TreasuryOGImage() { + const c = ogColors() + const logoUrl = resolveIpfs(daoConfig.image) + + let treasuryEth = '0' + let totalUsd = 0 + let tokenCount = 0 + + try { + const data = await getTreasuryPageData() + treasuryEth = data.treasuryEth + tokenCount = data.tokenHoldings.length + const ethUsd = parseFloat(data.treasuryEth) * data.ethUsdPrice + const tokensUsd = data.tokenHoldings.reduce((s, t) => { + const sym = t.symbol.toUpperCase() + const stable = (STABLE_SYMBOLS as readonly string[]).includes(sym) + const weth = (ETH_EQUIVALENT_SYMBOLS as readonly string[]).includes(sym) + const human = Number(BigInt(t.balanceRaw)) / 10 ** t.decimals + return s + (stable ? human : weth ? human * data.ethUsdPrice : 0) + }, 0) + totalUsd = ethUsd + tokensUsd + } catch { + /* fall through */ + } + + const hasUsd = totalUsd > 0 + + return new ImageResponse( + ( +
+ {/* Left accent strip */} +
+ +
+ {/* Header row */} +
+ {logoUrl && ( + + )} +
+ {daoConfig.name} +
+
+ {daoConfig.chain.name} +
+
+ + {/* Main content */} +
+
+ Treasury +
+
+ {hasUsd ? fmtUsd(totalUsd) : `${trimEth(treasuryEth)} ETH`} +
+ {hasUsd && ( +
+ {trimEth(treasuryEth)} ETH + {tokenCount > 0 + ? ` · ${tokenCount} ERC-20 asset${tokenCount > 1 ? 's' : ''}` + : ''} +
+ )} +
+ + {/* Footer stat pills */} +
+ {[ + { label: 'ETH Balance', value: `${trimEth(treasuryEth)} ETH` }, + ...(hasUsd ? [{ label: 'Total Value', value: fmtUsd(totalUsd) }] : []), + { label: 'Assets', value: `${1 + tokenCount}` }, + ].map((stat) => ( +
+
+ {stat.label} +
+
+ {stat.value} +
+
+ ))} +
+
+
+ ), + OG_SIZE + ) +} diff --git a/src/app/treasury/page.tsx b/src/app/treasury/page.tsx new file mode 100644 index 000000000..310e32bc4 --- /dev/null +++ b/src/app/treasury/page.tsx @@ -0,0 +1,384 @@ +import type { Metadata } from 'next' +import { Suspense } from 'react' + +import { NftSection } from '@/components/dao/NftSection' +import { TokenLogo } from '@/components/dao/TokenLogo' +import { type DonutSlice, TreasuryDonut } from '@/components/dao/TreasuryDonut' +import { TreasuryTransfers } from '@/components/dao/TreasuryTransfers' +import { daoConfig } from '@/lib/dao.config' +import { getTreasuryPageData, type TreasuryTx } from '@/lib/dao-data' + +export const metadata: Metadata = { + title: 'Treasury', +} + +export const revalidate = 60 + +// ── Token USD helpers ───────────────────────────────────────────────────────── + +const STABLE_SYMBOLS = new Set([ + 'USDC', + 'USDT', + 'DAI', + 'FRAX', + 'LUSD', + 'USDBC', + 'USDS', + 'USDGLO', + 'GUSD', +]) +const WETH_SYMBOLS = new Set(['WETH', 'CBETH', 'STETH', 'RETH']) + +function tokenUsdValue( + balanceRaw: string, + decimals: number, + symbol: string, + ethUsdPrice: number +): number { + const sym = symbol.toUpperCase() + const human = Number(BigInt(balanceRaw)) / 10 ** decimals + if (STABLE_SYMBOLS.has(sym)) return human + if (WETH_SYMBOLS.has(sym)) return human * ethUsdPrice + return 0 +} + +// Per-asset slice colors: ETH uses accent, stables green, WETH grey, others orange +const TOKEN_COLORS: Record = { + ETH: 'var(--accent)', + WETH: '#9a9aa2', + CBETH: '#9a9aa2', + USDC: '#5fd28a', + USDT: '#5fd28a', + DAI: '#f9a825', + FRAX: '#c084fc', +} +const FALLBACK_COLORS = ['#ffb347', '#60a5fa', '#c084fc', '#f472b6', '#34d399'] + +function tokenColor(symbol: string, fallbackIdx: number): string { + return ( + TOKEN_COLORS[symbol.toUpperCase()] ?? + FALLBACK_COLORS[fallbackIdx % FALLBACK_COLORS.length] + ) +} + +function fmtUSD(n: number, dp = 0): string { + return ( + '$' + + n.toLocaleString('en-US', { maximumFractionDigits: dp, minimumFractionDigits: dp }) + ) +} + +// ── Explorer link ───────────────────────────────────────────────────────────── + +const EXPLORER: Record = { + 1: { name: 'Etherscan', base: 'https://etherscan.io' }, + 10: { name: 'Optimistic', base: 'https://optimistic.etherscan.io' }, + 8453: { name: 'Basescan', base: 'https://basescan.org' }, + 7777777: { name: 'Zorascan', base: 'https://explorer.zora.energy' }, +} + +// ── Page ────────────────────────────────────────────────────────────────────── + +export default async function TreasuryPage() { + const data = await getTreasuryPageData() + const { ethUsdPrice } = data + + const ethBal = parseFloat(data.treasuryEth) + const ethUsd = ethBal * ethUsdPrice + + const tokenAssets = data.tokenHoldings.map((t, i) => { + const usd = tokenUsdValue(t.balanceRaw, t.decimals, t.symbol, ethUsdPrice) + const color = tokenColor(t.symbol, i) + return { ...t, usd, color } + }) + + const totalUsd = ethUsd + tokenAssets.reduce((s, t) => s + t.usd, 0) + + // Donut slices (only include assets with known USD value) + const slices: DonutSlice[] = [ + ...(ethUsd > 0 ? [{ name: 'ETH', color: 'var(--accent)', value: ethUsd }] : []), + ...tokenAssets + .filter((t) => t.usd > 0) + .map((t) => ({ + name: t.symbol, + color: t.color, + value: t.usd, + })), + ] + + // Show donut fallback if no USD prices resolved + const hasUsd = totalUsd > 0 + + const explorer = EXPLORER[daoConfig.chainId] ?? { + name: 'Explorer', + base: 'https://basescan.org', + } + + return ( +
+ {/* ── Header ── */} +
+

+ Allocation · live +

+

+ Treasury +

+

+ {hasUsd + ? `Composition of ${fmtUSD(totalUsd)} across ${daoConfig.name}'s ETH, stables, and in-treasury collection.` + : `Holdings and financial position of the ${daoConfig.name} treasury.`} +

+
+ + {/* ── Two-column grid ── */} +
+ {/* Left column: donut + NFT mini-grid */} +
+ {/* Donut card */} +
+ {hasUsd ? ( + + ) : ( +
+ USD prices unavailable — showing balances only. +
+ )} +
+ + {/* NFT mini-grid */} + {data.nftHoldings.length > 0 && ( + + )} +
+ + {/* Right column: asset rows + tx card */} +
+ {/* Asset rows */} +
+ {/* ETH row */} + } + name="Ether" + sub="Native asset" + color="var(--accent)" + bal={`${trimDecimals(data.treasuryEth, 4)} ETH`} + usd={ethUsd} + pct={totalUsd > 0 ? ethUsd / totalUsd : 0} + showUsd={hasUsd} + /> + + {/* ERC-20 rows */} + {tokenAssets.map((t) => ( + + } + name={t.symbol} + sub={ + STABLE_SYMBOLS.has(t.symbol.toUpperCase()) + ? 'Stable reserve' + : WETH_SYMBOLS.has(t.symbol.toUpperCase()) + ? 'Wrapped' + : 'ERC-20' + } + color={t.color} + bal={`${trimDecimals(t.balance, 4)} ${t.symbol}`} + usd={t.usd} + pct={totalUsd > 0 ? t.usd / totalUsd : 0} + showUsd={hasUsd} + /> + ))} +
+ + {/* Recent transactions */} +
+ +
+
+
+ + {/* ── Full transfer history (client-side, Alchemy-powered) ── */} + {process.env.NEXT_PUBLIC_ALCHEMY_API_KEY && ( + + } + > + + + )} +
+ ) +} + +// ── Sub-components ──────────────────────────────────────────────────────────── + +function AssetRow({ + logo, + name, + sub, + color, + bal, + usd, + pct, + showUsd, +}: { + logo: React.ReactNode + name: string + sub: string + color: string + bal: string + usd: number + pct: number + showUsd: boolean +}) { + return ( +
+ {/* icon */} +
{logo}
+ + {/* name */} +
+
{name}
+
{sub}
+
+ + {/* balance */} +
+ {bal} +
+ + {/* USD + bar — only when price data available */} + {showUsd && ( + <> +
+ {fmtUSD(usd)} +
+
+
+
+
+
+ {(pct * 100).toFixed(1)}% +
+
+ + )} +
+ ) +} + +function TxCard({ + txs, + explorer, + treasuryAddress, +}: { + txs: TreasuryTx[] + explorer: { name: string; base: string } + treasuryAddress: string +}) { + return ( +
+
+

Recent transactions

+ + From treasury safe · last 30 days + +
+ +
+ {txs.length === 0 && ( +
+ No transactions in the last 30 days. +
+ )} + {txs.map((tx, i) => ( +
+ {/* direction badge */} + + {tx.dir === 'in' ? '↓' : '↑'} + + + {/* who */} +
+
{tx.who}
+
+ {tx.relativeTime} +
+
+ + {/* tag — hidden on mobile */} +
+ {tx.tag} +
+ + {/* amount */} +
+ {tx.dir === 'in' ? '+' : '−'} + {tx.amount} {tx.symbol} +
+ + {/* time — hidden on mobile */} +
+ {tx.relativeTime} +
+
+ ))} +
+ + +
+ ) +} + +function trimDecimals(value: string, max: number): string { + if (!value || !value.includes('.')) return value + const [intPart, decPart] = value.split('.') + return `${intPart}.${decPart.slice(0, max).replace(/0+$/, '') || '0'}` +} diff --git a/src/app/web3-providers.tsx b/src/app/web3-providers.tsx new file mode 100644 index 000000000..833f1f0c0 --- /dev/null +++ b/src/app/web3-providers.tsx @@ -0,0 +1,83 @@ +'use client' + +import '@rainbow-me/rainbowkit/styles.css' + +import { + ChainStoreProvider, + createChainStore, + createDaoStore, + DaoStoreProvider, +} from '@buildeross/stores' +import { RainbowKitProvider } from '@rainbow-me/rainbowkit' +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { createContext, useContext, useEffect, useMemo, useState } from 'react' +import { type Config, WagmiProvider } from 'wagmi' + +const Web3ReadyContext = createContext(false) + +/** + * Returns `true` after wagmi/RainbowKit are mounted client-side. Use to gate + * components that depend on wallet hooks (e.g. RainbowKit's `ConnectButton`). + */ +export function useWeb3Ready(): boolean { + return useContext(Web3ReadyContext) +} + +import { getDaoConfig } from '@/config' + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + // No GLOBAL polling. A 5s refetchInterval default made every mounted + // wagmi read (balances, eligibility multicalls, vetoer, …) poll the + // free-tier RPC/subgraph every 5s — the very endpoints the rest of the + // app carefully backs off from. The live surfaces (useAuctionTruth / + // useProposalTruth / ProposalActions / AuctionPoller) opt into their own + // polling explicitly; everything else refetches on mount/focus. + staleTime: 30_000, + refetchInterval: false, + }, + }, +}) + +export function Web3Providers({ children }: { children: React.ReactNode }) { + const daoConfig = getDaoConfig() + const chainStore = useMemo(() => createChainStore(daoConfig.chain), [daoConfig.chain]) + const daoStore = useMemo( + () => createDaoStore(daoConfig.addresses), + [daoConfig.addresses] + ) + + // Wagmi/WalletConnect connector touches `localStorage`/`indexedDB` during + // init. Defer creation to a client-side effect so SSR never imports it. + const [config, setConfig] = useState(null) + useEffect(() => { + let cancelled = false + import('@/utils/clientConfig').then((mod) => { + if (!cancelled) setConfig(mod.createWagmiConfig()) + }) + return () => { + cancelled = true + } + }, []) + + const stores = ( + + {children} + + ) + + if (!config) { + return {stores} + } + + return ( + + + + {stores} + + + + ) +} diff --git a/src/components/DaoAvatar.tsx b/src/components/DaoAvatar.tsx new file mode 100644 index 000000000..d215281a2 --- /dev/null +++ b/src/components/DaoAvatar.tsx @@ -0,0 +1,81 @@ +'use client' + +import Image from 'next/image' +import { useState } from 'react' + +import { DaoLogo } from '@/components/DaoLogo' +import { cn } from '@/lib/utils' + +type Props = { + /** IPFS URI or HTTP URL of the DAO contract image. */ + image: string | null | undefined + /** Square pixel size. Defaults to 28. */ + size?: number + /** Accessible label / alt text. */ + alt: string + /** Fallback accent color used when no image is available. */ + fallbackColor: string + className?: string + /** Eager-load the image. Use for avatars rendered above the fold. */ + priority?: boolean +} + +/** + * Render the on-chain DAO image as a circular avatar. Falls back to the + * stripes SVG (DaoLogo) when no image is set on the contract or when the + * gateway request fails. + */ +export function DaoAvatar({ + image, + size = 28, + alt, + fallbackColor, + className, + priority, +}: Props) { + const [errored, setErrored] = useState(false) + const url = resolveImageUrl(image) + const showImage = !!url && !errored + + return ( + + {showImage ? ( + {alt} setErrored(true)} + unoptimized={!url.startsWith('https://gateway.pinata.cloud/')} + priority={priority} + /> + ) : ( + + )} + + ) +} + +/** + * Resolve an `ipfs://...` URI to an HTTP gateway URL. + * Mirrors the simple resolver used elsewhere in the app — full multi-gateway + * fallback (per @buildeross/ipfs-service) lands separately. + */ +function resolveImageUrl(image: string | null | undefined): string | null { + if (!image) return null + if (image.startsWith('ipfs://')) { + return `https://gateway.pinata.cloud/ipfs/${image.slice(7)}` + } + if (image.startsWith('http://') || image.startsWith('https://')) { + return image + } + // Bare CID — assume v0/v1 CID, prepend gateway. + return `https://gateway.pinata.cloud/ipfs/${image}` +} diff --git a/src/components/DaoLogo.tsx b/src/components/DaoLogo.tsx new file mode 100644 index 000000000..5dff925e6 --- /dev/null +++ b/src/components/DaoLogo.tsx @@ -0,0 +1,89 @@ +type Props = { + style: 'stripes' | 'tv' | 'leaf' + color: string + size?: number +} + +export function DaoLogo({ style, color, size = 28 }: Props) { + if (style === 'tv') { + return ( +
+
+
+
+
+ ) + } + if (style === 'leaf') { + return ( + + + + + ) + } + return ( +
+
+
+
+
+ ) +} diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 000000000..e549b9529 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,24 @@ +import Link from 'next/link' + +import { daoConfig } from '@/lib/dao.config' + +const CHAIN_NAMES: Record = { + 1: 'Ethereum', + 10: 'Optimism', + 8453: 'Base', + 7777777: 'Zora', +} + +export function Footer() { + const chainName = CHAIN_NAMES[daoConfig.chainId] ?? `Chain ${daoConfig.chainId}` + return ( +
+
+ {daoConfig.name} · {chainName} ·{' '} + + Built with Builder + +
+
+ ) +} diff --git a/src/components/Header.tsx b/src/components/Header.tsx new file mode 100644 index 000000000..25bb6b942 --- /dev/null +++ b/src/components/Header.tsx @@ -0,0 +1,294 @@ +'use client' + +import { isChainIdSupportedByCoining } from '@buildeross/utils' +import { ConnectButton } from '@rainbow-me/rainbowkit' +import { LogOut, Menu, Moon, Sun, X } from 'lucide-react' +import Link from 'next/link' +import { usePathname } from 'next/navigation' +import { useTheme } from 'next-themes' +import { useMemo, useState, useSyncExternalStore } from 'react' +import { useDisconnect, useEnsAvatar, useEnsName } from 'wagmi' +import { mainnet } from 'wagmi/chains' + +import { useWeb3Ready } from '@/app/web3-providers' +import { DaoAvatar } from '@/components/DaoAvatar' +import { daoConfig } from '@/lib/dao.config' +import { cn } from '@/lib/utils' + +function ConnectedProfile({ + address, + openAccountModal, +}: { + address: `0x${string}` + openAccountModal: () => void +}) { + const { data: ensName } = useEnsName({ address, chainId: mainnet.id }) + const { data: ensAvatar } = useEnsAvatar({ + name: ensName ?? undefined, + chainId: mainnet.id, + }) + // Explicit disconnect — RainbowKit's account modal also exposes one, but + // some users couldn't get to it (modal didn't open on chain-mismatch state). + // A dedicated icon button beside the pill is the reliable escape hatch. + const { disconnect } = useDisconnect() + + const displayName = ensName ?? `${address.slice(0, 6)}…${address.slice(-4)}` + const hue = parseInt(address.slice(2, 8), 16) % 360 + + return ( +
+ + +
+ ) +} + +function WalletButton() { + return ( + + {({ account, chain, openConnectModal, openAccountModal, mounted }) => { + if (!mounted) return
+ if (!account || !chain) { + return ( + + ) + } + return ( + + ) + }} + + ) +} + +const CHAIN_NAMES: Record = { + 1: 'Ethereum', + 10: 'Optimism', + 8453: 'Base', + 7777777: 'Zora', +} + +type NavItem = { + href: string + label: string + match: (p: string) => boolean +} + +const BASE_NAV_ITEMS: NavItem[] = [ + { href: '/', label: 'Dashboard', match: (p: string) => p === '/' }, + { + href: '/proposals', + label: 'Proposals', + match: (p: string) => p === '/proposals' || p.startsWith('/proposals/'), + }, + { href: '/treasury', label: 'Treasury', match: (p: string) => p === '/treasury' }, + { + href: '/members', + label: 'Members', + match: (p: string) => p === '/members' || p.startsWith('/members/'), + }, + { href: '/feed', label: 'Feed', match: (p: string) => p === '/feed' }, + { href: '/about', label: 'About', match: (p: string) => p === '/about' }, +] + +const CONTENT_NAV_ITEM: NavItem = { + href: '/coins', + label: 'Content', + match: (p: string) => + p === '/coins' || + p.startsWith('/coins/') || + p === '/droposals' || + p.startsWith('/droposals/'), +} + +const subscribeMounted = () => () => {} +const getMountedSnapshot = () => true +const getMountedServerSnapshot = () => false + +export function Header() { + const pathname = usePathname() ?? '/' + const [mobileOpen, setMobileOpen] = useState(false) + const { resolvedTheme, setTheme } = useTheme() + const mounted = useSyncExternalStore( + subscribeMounted, + getMountedSnapshot, + getMountedServerSnapshot + ) + const web3Ready = useWeb3Ready() + + const chainName = CHAIN_NAMES[daoConfig.chainId] ?? `Chain ${daoConfig.chainId}` + + // Inject /coins between Treasury and Members when the chain supports Clanker + // and the feature flag is on. Keeps the surface invisible on chains where + // the route would 404 anyway (Ethereum, Optimism, Zora, …). + const navItems = useMemo(() => { + const coinsEnabled = + daoConfig.features.coins && isChainIdSupportedByCoining(daoConfig.chainId) + if (!coinsEnabled) return BASE_NAV_ITEMS + const treasuryIdx = BASE_NAV_ITEMS.findIndex((i) => i.href === '/treasury') + if (treasuryIdx === -1) return [...BASE_NAV_ITEMS, CONTENT_NAV_ITEM] + return [ + ...BASE_NAV_ITEMS.slice(0, treasuryIdx + 1), + CONTENT_NAV_ITEM, + ...BASE_NAV_ITEMS.slice(treasuryIdx + 1), + ] + }, []) + + const isDashboard = pathname === '/' + + return ( +
+
+ + + {daoConfig.name} + + + + + +
+ +
+ {web3Ready ? ( + + ) : ( +
+ )} +
+ +
+
+ + {mobileOpen && ( +
+
setMobileOpen(false)} + /> + +
+ )} +
+ ) +} + +function ChainPill({ chainName }: { chainName: string }) { + return ( + + {chainName} + + ) +} diff --git a/src/components/Header/Header.css.ts b/src/components/Header/Header.css.ts deleted file mode 100644 index fe05e2623..000000000 --- a/src/components/Header/Header.css.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { atoms, color } from '@buildeross/zord' -import { style } from '@vanilla-extract/css' - -export const headerContainer = style([ - atoms({ - backgroundColor: 'background1', - position: 'sticky', - }), - { - top: 0, - zIndex: 50, - borderBottom: '1px solid', - borderBottomColor: color.border, - }, -]) - -export const logoSection = style([ - atoms({ - cursor: 'pointer', - textDecoration: 'none', - }), - { - transition: 'opacity 0.2s ease', - ':hover': { - opacity: 0.8, - }, - }, -]) - -export const navLinks = style([ - { - gap: '16px', - '@media': { - 'screen and (max-width: 768px)': { - display: 'none', - }, - }, - }, -]) - -export const mobileMenuButton = style([ - atoms({ - cursor: 'pointer', - borderRadius: 'round', - backgroundColor: 'background2', - display: 'none', - }), - { - width: '40px', - height: '40px', - alignItems: 'center', - justifyContent: 'center', - zIndex: 103, - '@media': { - 'screen and (max-width: 768px)': { - display: 'flex', - }, - }, - }, -]) - -export const mobileMenuOverlay = style({ - position: 'fixed', - top: 0, - left: 0, - right: 0, - bottom: 0, - backgroundColor: 'rgba(0, 0, 0, 0.5)', - zIndex: 100, -}) - -export const mobileMenuContent = style([ - atoms({ - backgroundColor: 'background1', - borderRadius: 'phat', - position: 'fixed', - }), - { - top: '80px', - right: '16px', - zIndex: 101, - minWidth: '200px', - boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)', - }, -]) - -export const navLink = style([ - atoms({ - cursor: 'pointer', - textDecoration: 'none', - color: 'text2', - }), - { - transition: 'all 0.2s ease', - borderBottom: '2px solid transparent', - paddingBottom: '2px', - ':hover': { - color: color.text1, - }, - }, -]) - -export const navLinkActive = style([ - atoms({ - color: 'text1', - }), - { - borderBottomColor: color.accent, - }, -]) - -export const connectButtonWrapper = style({ - '@media': { - 'screen and (max-width: 768px)': { - display: 'none', - }, - }, -}) diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx deleted file mode 100644 index 0d8b14ba3..000000000 --- a/src/components/Header/Header.tsx +++ /dev/null @@ -1,192 +0,0 @@ -import { getFetchableUrls } from '@buildeross/ipfs-service/gateway' -import { useChainStore, useDaoStore } from '@buildeross/stores' -import { DaoAvatar } from '@buildeross/ui/Avatar' -import { FallbackImage } from '@buildeross/ui/FallbackImage' -import { Box, Flex, Icon, Text } from '@buildeross/zord' -import { ConnectButton } from '@rainbow-me/rainbowkit' -import Link from 'next/link' -import { useRouter } from 'next/router' -import React from 'react' - -import { getDaoConfig } from '@/config' -import { useSettingsAccess } from '@/hooks/useSettingsAccess' - -import { - connectButtonWrapper, - headerContainer, - logoSection, - mobileMenuButton, - mobileMenuContent, - mobileMenuOverlay, - navLink, - navLinkActive, - navLinks, -} from './Header.css' - -export const Header: React.FC = () => { - const { chain } = useChainStore() - const { addresses } = useDaoStore() - const { hasAccess: hasSettingsAccess } = useSettingsAccess() - const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false) - const router = useRouter() - const daoConfig = getDaoConfig() - - const isActiveRoute = (path: string) => { - if (path === '/' && router.pathname === '/') return true - if (path !== '/' && router.pathname.startsWith(path)) return true - return false - } - - const getLinkClassName = (path: string) => { - return isActiveRoute(path) ? `${navLink} ${navLinkActive}` : navLink - } - - return ( - - - {/* Left side - DAO Logo and Home link */} - - - {addresses.token && addresses.auction && ( - - {daoConfig.image ? ( - - ) : ( - - )} - - )} - - {daoConfig.name} - - - - - {/* Right side - Navigation links and Connect button */} - - {/* Navigation links - hidden on mobile */} - - - - About - - - - - Proposals - - - - - Treasury - - - - - Contracts - - - {hasSettingsAccess && ( - - - Settings - - - )} - - {/* Connect button - hidden on mobile */} - - - - - - {/* Mobile menu button - only visible on mobile */} - setIsMobileMenuOpen(!isMobileMenuOpen)} - > - - - - - - {/* Mobile menu overlay */} - {isMobileMenuOpen && ( - <> - setIsMobileMenuOpen(false)} /> - - - - setIsMobileMenuOpen(false)} - > - About - - - - setIsMobileMenuOpen(false)} - > - Proposals - - - - setIsMobileMenuOpen(false)} - > - Treasury - - - - setIsMobileMenuOpen(false)} - > - Contracts - - - {hasSettingsAccess && ( - - setIsMobileMenuOpen(false)} - > - Settings - - - )} - - - - - - - )} - - ) -} diff --git a/src/components/Header/index.ts b/src/components/Header/index.ts deleted file mode 100644 index e0e2673ae..000000000 --- a/src/components/Header/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Header } from './Header' diff --git a/src/components/Layout/Layout.css.ts b/src/components/Layout/Layout.css.ts deleted file mode 100644 index c17906f75..000000000 --- a/src/components/Layout/Layout.css.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { atoms } from '@buildeross/zord' -import { style } from '@vanilla-extract/css' - -export const layoutContainer = style([ - atoms({ - minHeight: '100vh', - backgroundColor: 'background1', - }), -]) - -export const mainContent = style([ - atoms({ - flex: 1, - pt: 'x8', - px: 'x4', // Left and right padding - pb: 'x8', - }), -]) diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx deleted file mode 100644 index ee548d625..000000000 --- a/src/components/Layout/Layout.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Box } from '@buildeross/zord' -import React from 'react' - -import { Header } from '../Header' -import { layoutContainer, mainContent } from './Layout.css' - -interface LayoutProps { - children: React.ReactNode -} - -export const Layout: React.FC = ({ children }) => { - return ( - -
- {children} - - ) -} diff --git a/src/components/Layout/index.ts b/src/components/Layout/index.ts deleted file mode 100644 index 358469a05..000000000 --- a/src/components/Layout/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Layout } from './Layout' diff --git a/src/components/LinksProvider.tsx b/src/components/LinksProvider.tsx deleted file mode 100644 index 716843913..000000000 --- a/src/components/LinksProvider.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { BASE_URL } from '@buildeross/constants/baseUrl' -import { AddressType, CHAIN_ID } from '@buildeross/types' -import { LinksProvider as BaseLinksProvider } from '@buildeross/ui/LinksProvider' -import { chainIdToSlug } from '@buildeross/utils/helpers' -import React from 'react' - -import { getDaoConfig } from '@/config' - -type LinksProviderProps = { - children: React.ReactNode -} - -export const LinksProvider: React.FC = ({ children }) => { - const daoConfig = getDaoConfig() - - // Helper function to check if the chainId/tokenAddress match our DAO - const isOurDao = React.useCallback( - (chainId: CHAIN_ID, tokenAddress: AddressType) => { - return ( - chainId === daoConfig.chain.id && - tokenAddress.toLowerCase() === daoConfig.addresses.token.toLowerCase() - ) - }, - [daoConfig.chain.id, daoConfig.addresses.token] - ) - - const getAuctionLink = React.useCallback( - ( - chainId: CHAIN_ID, - tokenAddress: AddressType, - tokenId?: number | string | bigint - ) => { - // If this is not our DAO, redirect to main app - if (!isOurDao(chainId, tokenAddress)) { - const baseHref = `${BASE_URL}/dao/${chainIdToSlug(chainId)}/${tokenAddress}` - if (tokenId === undefined || tokenId === null) { - return { href: baseHref } - } - return { href: `${baseHref}/${tokenId}` } - } - - // For our DAO, use local routes - if (tokenId === undefined || tokenId === null) { - return { href: '/' } // Home page shows current auction - } - return { - href: `/token/${tokenId}`, - } - }, - [isOurDao] - ) - - const getDaoLink = React.useCallback( - (chainId: CHAIN_ID, tokenAddress: AddressType, tab?: string) => { - // If this is not our DAO, redirect to main app - if (!isOurDao(chainId, tokenAddress)) { - const baseHref = `${BASE_URL}/dao/${chainIdToSlug(chainId)}/${tokenAddress}` - return { - href: tab ? `${baseHref}?tab=${tab}` : baseHref, - } - } - - // For our DAO, route to different pages based on tab - switch (tab) { - case 'about': - return { href: '/about' } - case 'activity': - return { href: '/proposals' } - case 'treasury': - return { href: '/treasury' } - case 'admin': - return { href: '/settings' } - case 'contracts': - return { href: '/contracts' } - default: - return { href: '/' } // Default to home page - } - }, - [isOurDao] - ) - - const getProposalLink = React.useCallback( - ( - chainId: CHAIN_ID, - tokenAddress: AddressType, - proposalId: string | number | bigint - ) => { - // If this is not our DAO, redirect to main app - if (!isOurDao(chainId, tokenAddress)) { - return { - href: `${BASE_URL}/dao/${chainIdToSlug(chainId)}/${tokenAddress}/vote/${proposalId}`, - } - } - - // For our DAO, use local proposal route - return { - href: `/proposal/${proposalId}`, - } - }, - [isOurDao] - ) - - const getProfileLink = React.useCallback((address: AddressType) => { - return { - href: `${BASE_URL}/profile/${address}`, - } - }, []) - - const value = React.useMemo( - () => ({ - getAuctionLink, - getDaoLink, - getProposalLink, - getProfileLink, - }), - [getAuctionLink, getDaoLink, getProposalLink, getProfileLink] - ) - - return {children} -} diff --git a/src/components/MainContainer.tsx b/src/components/MainContainer.tsx new file mode 100644 index 000000000..91a30a833 --- /dev/null +++ b/src/components/MainContainer.tsx @@ -0,0 +1,28 @@ +'use client' + +import { usePathname } from 'next/navigation' + +import { cn } from '@/lib/utils' + +/** + * Wraps page content on the standard 1180px column — every route, including the + * dashboard. The dashboard's auction carousel breaks out to full-bleed width on + * its own (see AuctionHistoryStrip); everything else stays on the column. + * + * Every route gets a top gap below the sticky header (`pt-8`) EXCEPT the home + * dashboard: its tinted hero owns the full top band as a background, so it must + * sit flush against the header. + */ +export function MainContainer({ children }: { children: React.ReactNode }) { + const isHome = (usePathname() ?? '/') === '/' + return ( +
+ {children} +
+ ) +} diff --git a/src/components/Markdown.tsx b/src/components/Markdown.tsx new file mode 100644 index 000000000..abe61eec6 --- /dev/null +++ b/src/components/Markdown.tsx @@ -0,0 +1,190 @@ +'use client' + +import * as React from 'react' +import ReactMarkdown, { type Components } from 'react-markdown' +import rehypeAutolinkHeadings from 'rehype-autolink-headings' +import rehypeExternalLinks from 'rehype-external-links' +import rehypeSanitize, { defaultSchema } from 'rehype-sanitize' +import rehypeSlug from 'rehype-slug' +import remarkBreaks from 'remark-breaks' +import remarkGfm from 'remark-gfm' + +import { cn } from '@/lib/utils' + +type Props = { + children: string + className?: string +} + +/** + * Render proposal descriptions / propdates / mission text from raw markdown. + * + * Mirrors the rendering strategy used by gnars-website: + * - GFM tables / strikethrough / task lists / autolinks + * - Soft line breaks →
+ * - Slug ids on headings + anchor link on hover + * - External links open in a new tab with rel=noopener + * - Sanitized for security (rehype-sanitize) + * + * Uses the @tailwindcss/typography plugin (`prose`) for default rhythm, + * then overrides links / code / blockquote / table to thread the DAO's + * accent token + design surfaces. Theme tokens stay config-driven. + */ +export function Markdown({ children, className }: Props) { + if (!children) return null + return ( +
+ + {children} + +
+ ) +} + +const MARKDOWN_COMPONENTS: Components = { + a({ className, href, children, ...props }) { + return ( + + {children} + + ) + }, + img({ src, alt, ...props }) { + if (!src) return null + const url = typeof src === 'string' ? src : '' + return ( + + {/* eslint-disable-next-line @next/next/no-img-element */} + {typeof + + ) + }, + table({ className, ...props }) { + return ( +
+ + + ) + }, + th({ className, ...props }) { + return ( +
+ ) + }, + td({ className, ...props }) { + return ( + + ) + }, + pre({ className, ...props }) { + return ( +
+    )
+  },
+  code(props) {
+    const { className, children, ...rest } =
+      props as React.HTMLAttributes & {
+        className?: string
+        children?: React.ReactNode
+      }
+    const isBlock = typeof className === 'string' && className.includes('language-')
+    if (isBlock) {
+      return (
+        
+          {children}
+        
+      )
+    }
+    return (
+      
+        {children}
+      
+    )
+  },
+  blockquote({ className, ...props }) {
+    return (
+      
+ ) + }, +} diff --git a/src/components/TweaksPanel.tsx b/src/components/TweaksPanel.tsx new file mode 100644 index 000000000..0db8f4a41 --- /dev/null +++ b/src/components/TweaksPanel.tsx @@ -0,0 +1,263 @@ +'use client' + +import { Settings2, X } from 'lucide-react' +import { useTheme } from 'next-themes' +import { useState } from 'react' + +import { PRESETS } from '@/lib/presets' +import { useTweaks } from '@/lib/tweaks-context' + +const FONT_OPTIONS = [ + { value: 'Geist', label: 'Geist' }, + { value: 'Londrina Solid', label: 'Londrina Solid' }, + { value: 'IBM Plex Sans', label: 'IBM Plex Sans' }, + { value: 'Fraunces', label: 'Fraunces' }, +] + +export function TweaksPanel() { + const [open, setOpen] = useState(false) + const { tweaks, update } = useTweaks() + const { resolvedTheme, setTheme } = useTheme() + const [applyState, setApplyState] = useState<'idle' | 'saving' | 'saved' | 'error'>( + 'idle' + ) + + const applyToProd = async () => { + setApplyState('saving') + try { + const res = await fetch('/api/dev/apply-theme', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + accent: tweaks.accent, + radius: tweaks.radius, + displayFont: tweaks.displayFont, + }), + }) + setApplyState(res.ok ? 'saved' : 'error') + } catch { + setApplyState('error') + } + setTimeout(() => setApplyState('idle'), 2500) + } + + const applyPreset = (key: keyof typeof PRESETS) => { + const p = PRESETS[key] + if (!p) return + update({ + preset: key, + accent: p.theme.accent, + radius: p.theme.radius, + displayFont: p.theme.displayFont, + }) + } + + if (!open) { + return ( + + ) + } + + return ( +
+
+
+ Tweaks +
+ +
+ +
+ applyPreset(v as keyof typeof PRESETS)} + options={Object.values(PRESETS).map((p) => ({ + value: p.key, + label: p.label.replace(/ DAO$/, ''), + }))} + /> +
+ +
+ setTheme(v)} + options={[ + { value: 'light', label: 'Light' }, + { value: 'dark', label: 'Dark' }, + ]} + /> + + update({ accent: e.target.value })} + className="h-7 w-12 cursor-pointer rounded border border-border bg-transparent" + /> + + {tweaks.accent} + + + + update({ radius: Number(e.target.value) })} + className="flex-1 accent-accent" + /> + + {tweaks.radius}px + + + + + +
+ +
+ update({ showProposalThumbnails: v })} + /> +
+ + +
+ ) +} + +function Section({ title, children }: { title: string; children: React.ReactNode }) { + return ( +
+
+ {title} +
+
{children}
+
+ ) +} + +function Field({ label, children }: { label: string; children: React.ReactNode }) { + return ( + + ) +} + +function Radio({ + label, + value, + onChange, + options, +}: { + label: string + value: string + onChange: (v: string) => void + options: { value: string; label: string }[] +}) { + return ( + +
+ {options.map((opt) => ( + + ))} +
+
+ ) +} + +function Toggle({ + label, + checked, + onChange, +}: { + label: string + checked: boolean + onChange: (v: boolean) => void +}) { + return ( + + + + ) +} diff --git a/src/components/coins/CoinCard.tsx b/src/components/coins/CoinCard.tsx new file mode 100644 index 000000000..820073faf --- /dev/null +++ b/src/components/coins/CoinCard.tsx @@ -0,0 +1,65 @@ +'use client' + +import { fetchIpfsMetadata } from '@buildeross/ipfs-service' +import { type ZoraCoinCardFragment } from '@buildeross/sdk/subgraph' +import { Image as ImageIcon } from 'lucide-react' +import Link from 'next/link' +import useSWR from 'swr' + +import { cn, resolveIpfs } from '@/lib/utils' + +type Props = { + coin: ZoraCoinCardFragment + className?: string +} + +export function CoinCard({ coin, className }: Props) { + // Zora coins don't store the image on the card fragment — it lives inside + // the IPFS metadata JSON pointed to by `uri`. We fetch lazily and SWR-cache + // per coin so a list re-render doesn't refetch. + const { data: metadata } = useSWR( + coin.uri ? (['zora-coin-metadata', coin.uri] as const) : null, + async ([, uri]) => fetchIpfsMetadata(uri) + ) + + const rawImage = metadata?.image ?? metadata?.imageUrl ?? null + const image = rawImage ? resolveIpfs(rawImage) : null + + return ( + +
+ {image ? ( + // eslint-disable-next-line @next/next/no-img-element + {coin.name + ) : ( +
+ +
+ )} +
+
+
+ {coin.name ?? 'Untitled coin'} +
+
+ {coin.symbol ? `$${coin.symbol}` : ''} +
+
+ + ) +} diff --git a/src/components/coins/CoinCreateForm.tsx b/src/components/coins/CoinCreateForm.tsx new file mode 100644 index 000000000..85eb0ae2b --- /dev/null +++ b/src/components/coins/CoinCreateForm.tsx @@ -0,0 +1,553 @@ +'use client' + +import { COIN_DEPLOYMENT_DISCLAIMER } from '@buildeross/constants' +import { useClankerTokensFull } from '@buildeross/hooks' +import { uploadFile } from '@buildeross/ipfs-service' +import { isChainIdSupportedByCoining } from '@buildeross/utils' +import { useConnectModal } from '@rainbow-me/rainbowkit' +import { + createMetadataBuilder, + type Uploader, + type UploadResult, +} from '@zoralabs/coins-sdk' +import { ChevronLeft, ExternalLink, Loader2 } from 'lucide-react' +import Link from 'next/link' +import { useRouter } from 'next/navigation' +import { useEffect, useMemo, useRef, useState } from 'react' +import type { Address, Hex } from 'viem' +import { + useAccount, + usePublicClient, + useSwitchChain, + useWaitForTransactionReceipt, + useWriteContract, +} from 'wagmi' + +import { useWeb3Ready } from '@/app/web3-providers' +import { CreatorCoinProposalModal } from '@/components/coins/CreatorCoinProposalModal' +import { type MediaSelection, MediaUploader } from '@/components/coins/MediaUploader' +import { Button } from '@/components/ui/button' +import { buildContentCoinDeployTx } from '@/lib/contentCoin' +import { daoConfig } from '@/lib/dao.config' +import { useClankerTokenUsdPrice } from '@/lib/useClankerTokenUsdPrice' +import { cn } from '@/lib/utils' + +const CHAIN_NAMES: Record = { + 1: 'Ethereum', + 10: 'Optimism', + 8453: 'Base', + 84532: 'Base Sepolia', +} + +/** + * Wraps `@buildeross/ipfs-service`'s `uploadFile` so the Zora SDK metadata + * builder can pipe images / videos / JSON through our Pinata routes. + */ +class IPFSUploader implements Uploader { + async upload(file: File): Promise { + const res = await uploadFile(file) + return { + url: res.uri as `ipfs://${string}`, + size: file.size, + mimeType: file.type || undefined, + } + } +} + +export function CoinCreateForm() { + const ready = useWeb3Ready() + if (!ready) return + + if (!isChainIdSupportedByCoining(daoConfig.chainId)) { + return ( + + ) + } + + return +} + +function Skeleton() { + return ( +
+ ) +} + +function CoinCreateFormInner() { + const router = useRouter() + const { address, isConnected, chainId: walletChainId } = useAccount() + const { openConnectModal } = useConnectModal() + const { switchChain, isPending: isSwitching } = useSwitchChain() + const publicClient = usePublicClient({ chainId: daoConfig.chainId }) + + // 1. The DAO must already have a clanker creator coin — that's the only + // currency the content-coin factory accepts here (and the only way the + // subgraph can associate the new content coin back to a DAO). + const { data: clankerTokens, isLoading: clankerLoading } = useClankerTokensFull({ + chainId: daoConfig.chainId, + collectionAddress: daoConfig.addresses.token, + enabled: true, + first: 1, + }) + const latestClankerToken = useMemo( + () => (clankerTokens && clankerTokens.length > 0 ? clankerTokens[0] : null), + [clankerTokens] + ) + + const { + priceUsd: clankerTokenPriceUsd, + isLoading: priceLoading, + error: priceError, + } = useClankerTokenUsdPrice(latestClankerToken) + + // 2. Form state. + const [name, setName] = useState('') + const [symbol, setSymbol] = useState('') + const [description, setDescription] = useState('') + const [media, setMedia] = useState(null) + const [accepted, setAccepted] = useState(false) + const [prepError, setPrepError] = useState(null) + const [isPreparing, setIsPreparing] = useState(false) + + const expectedAddressRef = useRef
(null) + const handledTxRef = useRef(undefined) + + // 3. wagmi write + receipt. + const onWrongChain = + isConnected && walletChainId != null && walletChainId !== daoConfig.chainId + const { + writeContract, + data: txHash, + isPending: isWriting, + error: writeError, + reset: resetWrite, + } = useWriteContract() + const { + data: receipt, + isLoading: isMining, + isSuccess: isMined, + error: mineError, + } = useWaitForTransactionReceipt({ hash: txHash, chainId: daoConfig.chainId }) + + const phase: + | 'idle' + | 'connect' + | 'switch' + | 'preparing' + | 'sign' + | 'mine' + | 'done' + | 'error' = !isConnected + ? 'connect' + : onWrongChain + ? 'switch' + : isPreparing + ? 'preparing' + : isWriting + ? 'sign' + : isMining + ? 'mine' + : isMined + ? 'done' + : writeError || mineError || prepError + ? 'error' + : 'idle' + + // After mine → navigate to /coins/[expectedAddress]. Refs (not state) keep + // the timer from being torn down by re-renders. + useEffect(() => { + if (!isMined || !receipt) return + const tx = receipt.transactionHash as Hex + if (handledTxRef.current === tx) return + handledTxRef.current = tx + const target = expectedAddressRef.current + const t = setTimeout(() => { + router.push(target ? `/coins/${target}` : '/coins') + }, 1200) + return () => clearTimeout(t) + }, [isMined, receipt, router]) + + // 4. Gating states (render-time short-circuits). + if (clankerLoading) { + return + } + + if (!latestClankerToken) { + return + } + + const valid = !!name.trim() && !!symbol.trim() && !!description.trim() && !!media + + async function submit() { + if (!valid || !address || !latestClankerToken || !publicClient) return + resetWrite() + setPrepError(null) + + if (!clankerTokenPriceUsd) { + setPrepError('Waiting on clanker token price — try again in a moment.') + return + } + + setIsPreparing(true) + + try { + // a) Upload primary media to IPFS. + const isMediaImage = media!.kind === 'image' + const primary = await uploadFile(media!.file, { + type: isMediaImage ? 'image' : 'media', + }) + + // b) Build metadata via Zora's builder (matches apps/web's pattern). + const builder = createMetadataBuilder() + .withName(name.trim()) + .withSymbol(symbol.trim().toUpperCase()) + .withDescription(description.trim()) + + if (isMediaImage) { + builder.withImageURI(primary.uri) + } else { + // Video: thumbnail = image, video = animation_url. + const thumb = await uploadFile((media as { thumbnail: File }).thumbnail, { + type: 'image', + }) + builder.withImageURI(thumb.uri) + builder.withMediaURI(primary.uri, media!.mimeType) + } + + // c) Upload the metadata JSON itself. + const { url: metadataUri } = await builder.upload(new IPFSUploader()) + + // d) Build the wagmi `writeContract` args. + const deployTx = buildContentCoinDeployTx({ + user: address, + currency: latestClankerToken!.tokenAddress as Address, + clankerTokenPriceUsd, + name: name.trim(), + symbol: symbol.trim().toUpperCase(), + metadataUri, + }) + + // e) Predict the CREATE2 address before sending the tx so the success + // path can deep-link straight to /coins/[address]. + try { + const predicted = await publicClient.readContract({ + address: deployTx.target, + abi: deployTx.abi, + functionName: 'coinAddress', + args: [ + address, + name.trim(), + symbol.trim().toUpperCase(), + deployTx.args[5], // poolConfig + deployTx.args[6], // platformReferrer + deployTx.args[9], // coinSalt + ], + }) + expectedAddressRef.current = predicted as Address + } catch (err) { + // Prediction is a nice-to-have. If it fails we still land on /coins. + console.warn('[coins] coinAddress prediction failed', err) + } + + // f) Hand off to wagmi. + + writeContract({ + address: deployTx.target, + + abi: deployTx.abi as any, + functionName: deployTx.functionName, + + args: deployTx.args as any, + chainId: daoConfig.chainId, + }) + } catch (err) { + console.error('[coins] submit failed', err) + setPrepError(parseError(err)) + } finally { + setIsPreparing(false) + } + } + + const disabled = + phase === 'preparing' || phase === 'sign' || phase === 'mine' || phase === 'done' + const submitDisabled = + !valid || + !accepted || + disabled || + priceLoading || + !!priceError || + !clankerTokenPriceUsd + + if (phase === 'done') { + return ( + + ) + } + + return ( +
+
+

Create a coin

+

+ Deploy a Zora content coin directly from your wallet — paired with{' '} + ${latestClankerToken.tokenSymbol} + , {daoConfig.name}'s creator coin. You are the payout recipient; the DAO + treasury is a co-owner so it can update metadata after deploy. +

+
+ + + setName(e.target.value.slice(0, 50))} + placeholder="e.g. Community Coin" + disabled={disabled} + className="w-full rounded-md border border-border bg-surface px-3 py-2.5 text-sm outline-none focus:border-accent disabled:opacity-60" + /> + + + + + setSymbol( + e.target.value + .toUpperCase() + .replace(/[^A-Z0-9$]/g, '') + .slice(0, 10) + ) + } + placeholder="e.g. COMM" + disabled={disabled} + className="w-full rounded-md border border-border bg-surface px-3 py-2.5 font-mono text-sm uppercase outline-none focus:border-accent disabled:opacity-60" + /> + + + +