diff --git a/.gitignore b/.gitignore
index 87d78e0..d1a933c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,4 +38,8 @@ yarn-error.log*
*.pem
dump.rdb
-local/
\ No newline at end of file
+local/
+tsconfig.tsbuildinfo
+
+# Claude Code
+.claude/
\ No newline at end of file
diff --git a/examples/nextjs-solana-subscriptions/.env.example b/examples/nextjs-solana-subscriptions/.env.example
new file mode 100644
index 0000000..f4386ef
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/.env.example
@@ -0,0 +1,8 @@
+# Required: Dynamic environment ID from https://app.dynamic.xyz
+NEXT_PUBLIC_DYNAMIC_ENV_ID=your-environment-id-here
+
+# Required: Merchant wallet address whose subscription plans to display
+NEXT_PUBLIC_MERCHANT_ADDRESS=your-merchant-wallet-address-here
+
+# Optional: Token mint for subscriptions (defaults to mainnet USDC)
+NEXT_PUBLIC_TOKEN_MINT=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
diff --git a/examples/nextjs-solana-subscriptions/README.md b/examples/nextjs-solana-subscriptions/README.md
new file mode 100644
index 0000000..b3cfdcc
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/README.md
@@ -0,0 +1,57 @@
+# Solana Subscriptions with Dynamic
+
+A Next.js demo that integrates [Dynamic's](https://dynamic.xyz) embedded Solana wallets with the [Solana Subscriptions program](https://solana.com/docs/payments/subscriptions/overview) — letting users subscribe to on-chain recurring payment plans and manage their subscriptions.
+
+## What it does
+
+- Sign in with email OTP, Google OAuth, or an injected Solana wallet via Dynamic
+- Browse subscription plans created by a configured merchant
+- **Fund your wallet from any chain/token** via Dynamic Checkout — pay with SOL, ETH, or USDC on Base; receive USDC on Solana automatically
+- Subscribe to a plan (initializes a subscription authority and creates a subscription delegation on-chain)
+- View and cancel active subscriptions
+
+## How it works
+
+The Solana Subscriptions program lets merchants create on-chain plans with a fixed amount and period. Users subscribe by delegating token transfer rights to a subscription authority PDA. Merchants then call `transferSubscription` to collect recurring payments without needing the user to sign each time.
+
+### Transaction flow
+
+1. **initSubscriptionAuthority** (once per user + token mint): Creates a PDA that controls which subscriptions can pull from the user's token account.
+2. **subscribe**: Creates a `SubscriptionDelegation` PDA recording the plan terms. The merchant can pull up to `amount` per `periodHours` until the subscription is cancelled.
+3. **cancelSubscription**: Sets an `expiresAtTs` on the delegation — future pulls are blocked once that timestamp is reached.
+
+Dynamic's embedded wallet handles all signing. The app uses `@solana/kit` v6 to build the subscription instructions and bridges them to `@solana/web3.js` v1 `VersionedTransaction` for Dynamic to sign.
+
+## Setup
+
+```bash
+cp .env.example .env.local
+# Fill in your values
+pnpm install
+pnpm dev
+```
+
+### Environment variables
+
+| Variable | Required | Description |
+|----------|----------|-------------|
+| `NEXT_PUBLIC_DYNAMIC_ENV_ID` | Yes | Dynamic environment ID from [app.dynamic.xyz](https://app.dynamic.xyz) |
+| `NEXT_PUBLIC_SOLANA_RPC_URL` | Yes | Solana mainnet RPC URL — must support `getProgramAccounts` (e.g. Helius, QuickNode) |
+| `NEXT_PUBLIC_MERCHANT_ADDRESS` | Yes | Merchant wallet address whose plans to display |
+| `DYNAMIC_API_TOKEN` | Yes (for Checkout) | Server-side API token from [developer settings](https://app.dynamic.xyz/dashboard/developer/api) |
+| `NEXT_PUBLIC_TOKEN_MINT` | No | Token mint address (defaults to mainnet USDC) |
+| `NEXT_PUBLIC_CHECKOUT_SETTLEMENT_TOKEN` | No | USDC mint for checkout settlement (defaults to mainnet USDC) |
+
+### Dynamic dashboard
+
+1. Enable **Solana** under Chains & Networks
+2. Enable **Embedded wallets** under Wallets
+3. Enable **Email OTP** and/or **Google** under Sign-in Methods
+4. Add `http://localhost:3000` under Security → Allowed Origins
+
+## Resources
+
+- [Solana Subscriptions documentation](https://solana.com/docs/payments/subscriptions/overview)
+- [Dynamic JS SDK](https://docs.dynamic.xyz/javascript/reference/quickstart)
+- [`@solana/subscriptions` npm package](https://www.npmjs.com/package/@solana/subscriptions)
+- [Demo webapp](https://solana-subscriptions-program.vercel.app/)
diff --git a/examples/nextjs-solana-subscriptions/next-env.d.ts b/examples/nextjs-solana-subscriptions/next-env.d.ts
new file mode 100644
index 0000000..830fb59
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/next-env.d.ts
@@ -0,0 +1,6 @@
+///
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/examples/nextjs-solana-subscriptions/next.config.ts b/examples/nextjs-solana-subscriptions/next.config.ts
new file mode 100644
index 0000000..3620158
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/next.config.ts
@@ -0,0 +1,54 @@
+import type { NextConfig } from "next";
+// eslint-disable-next-line @typescript-eslint/no-require-imports
+const { NormalModuleReplacementPlugin } = require("webpack");
+
+const nextConfig: NextConfig = {
+ images: {
+ remotePatterns: [
+ {
+ protocol: "https",
+ hostname: "**",
+ },
+ ],
+ },
+ webpack: (config, { isServer }) => {
+ config.experiments = {
+ ...config.experiments,
+ asyncWebAssembly: true,
+ layers: true,
+ };
+
+ config.module.rules.push({
+ test: /\.wasm$/,
+ type: "webassembly/async",
+ });
+
+ if (!isServer) {
+ config.resolve.fallback = {
+ ...config.resolve.fallback,
+ fs: false,
+ path: false,
+ crypto: false,
+ stream: false,
+ os: false,
+ http: false,
+ https: false,
+ zlib: false,
+ };
+ }
+
+ config.plugins.push(
+ new NormalModuleReplacementPlugin(
+ /@evervault\/wasm-attestation-bindings/,
+ (resource: { request: string }) => {
+ resource.request =
+ "data:text/javascript,const PCRs={};const validateAttestationDocPcrs=()=>Promise.resolve();const getUserData=()=>Promise.resolve();const getNonce=()=>Promise.resolve();const init=()=>Promise.resolve();export default init;export{PCRs,validateAttestationDocPcrs,getUserData,getNonce};";
+ }
+ )
+ );
+
+ return config;
+ },
+};
+
+export default nextConfig;
diff --git a/examples/nextjs-solana-subscriptions/package.json b/examples/nextjs-solana-subscriptions/package.json
new file mode 100644
index 0000000..37175cf
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "nextjs-solana-subscriptions",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "lint:fix": "next lint --fix",
+ "type-check": "tsc --noEmit",
+ "clean": "rm -rf .next && rm -rf node_modules/.cache"
+ },
+ "dependencies": {
+ "@dynamic-labs-sdk/client": "1.4.0",
+ "@dynamic-labs-sdk/react-hooks": "1.4.0",
+ "@dynamic-labs-sdk/solana": "1.4.0",
+ "@solana-program/token": "^0.13.0",
+ "@solana/kit": "6.9.0",
+ "@solana/subscriptions": "0.2.0",
+ "@solana/web3.js": "1.98.4",
+ "@tanstack/react-query": "5.100.9",
+ "clsx": "2.1.1",
+ "lucide-react": "0.542.0",
+ "next": "15.5.9",
+ "react": "19.2.6",
+ "react-dom": "19.2.6",
+ "tailwind-merge": "3.5.0"
+ },
+ "devDependencies": {
+ "@eslint/eslintrc": "3.3.5",
+ "@tailwindcss/postcss": "4.2.4",
+ "@types/node": "24.3.0",
+ "@types/react": "19.2.14",
+ "@types/react-dom": "19.2.3",
+ "autoprefixer": "10.5.0",
+ "eslint": "9.34.0",
+ "eslint-config-next": "15.5.2",
+ "postcss": "8.5.14",
+ "tailwindcss": "4.2.4",
+ "typescript": "5.9.2"
+ },
+ "browser": {
+ "crypto": false
+ },
+ "pnpm": {
+ "overrides": {
+ "@solana/web3.js": "1.98.4",
+ "@dynamic-labs-sdk/client": "1.4.0"
+ }
+ }
+}
diff --git a/examples/nextjs-solana-subscriptions/pnpm-lock.yaml b/examples/nextjs-solana-subscriptions/pnpm-lock.yaml
new file mode 100644
index 0000000..9f5ab90
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/pnpm-lock.yaml
@@ -0,0 +1,7123 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+overrides:
+ '@solana/web3.js': 1.98.4
+ '@dynamic-labs-sdk/client': 1.4.0
+
+importers:
+
+ .:
+ dependencies:
+ '@dynamic-labs-sdk/client':
+ specifier: 1.4.0
+ version: 1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6)
+ '@dynamic-labs-sdk/react-hooks':
+ specifier: 1.4.0
+ version: 1.4.0(@dynamic-labs-sdk/client@1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)
+ '@dynamic-labs-sdk/solana':
+ specifier: 1.4.0
+ version: 1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana-program/token':
+ specifier: ^0.13.0
+ version: 0.13.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))
+ '@solana/kit':
+ specifier: 6.9.0
+ version: 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/subscriptions':
+ specifier: 0.2.0
+ version: 0.2.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/web3.js':
+ specifier: 1.98.4
+ version: 1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@tanstack/react-query':
+ specifier: 5.100.9
+ version: 5.100.9(react@19.2.6)
+ clsx:
+ specifier: 2.1.1
+ version: 2.1.1
+ lucide-react:
+ specifier: 0.542.0
+ version: 0.542.0(react@19.2.6)
+ next:
+ specifier: 15.5.9
+ version: 15.5.9(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ react:
+ specifier: 19.2.6
+ version: 19.2.6
+ react-dom:
+ specifier: 19.2.6
+ version: 19.2.6(react@19.2.6)
+ tailwind-merge:
+ specifier: 3.5.0
+ version: 3.5.0
+ devDependencies:
+ '@eslint/eslintrc':
+ specifier: 3.3.5
+ version: 3.3.5
+ '@tailwindcss/postcss':
+ specifier: 4.2.4
+ version: 4.2.4
+ '@types/node':
+ specifier: 24.3.0
+ version: 24.3.0
+ '@types/react':
+ specifier: 19.2.14
+ version: 19.2.14
+ '@types/react-dom':
+ specifier: 19.2.3
+ version: 19.2.3(@types/react@19.2.14)
+ autoprefixer:
+ specifier: 10.5.0
+ version: 10.5.0(postcss@8.5.14)
+ eslint:
+ specifier: 9.34.0
+ version: 9.34.0(jiti@2.7.0)
+ eslint-config-next:
+ specifier: 15.5.2
+ version: 15.5.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ postcss:
+ specifier: 8.5.14
+ version: 8.5.14
+ tailwindcss:
+ specifier: 4.2.4
+ version: 4.2.4
+ typescript:
+ specifier: 5.9.2
+ version: 5.9.2
+
+packages:
+
+ '@ably/msgpack-js@0.4.1':
+ resolution: {integrity: sha512-Sjxj6SOr17hExAVrsycN7u6oV4PhZcK7Z2S8dM71CH/butgO47cSo/TL6FJPCXUyDAzKkOWjMUpJGyZkEpyu4Q==}
+
+ '@adraffy/ens-normalize@1.11.1':
+ resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==}
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ '@babel/runtime@7.29.2':
+ resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==}
+ engines: {node: '>=6.9.0'}
+
+ '@dynamic-labs-sdk/assert-package-version@1.4.0':
+ resolution: {integrity: sha512-E04XZjVPhkIMH9WBE0emGPIzhgqXYYKOn0NI8niW3eXagGMADmY94rbXFWp8eVRczReN9PZl4P9IbaaDc27uZA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@dynamic-labs-sdk/assert-package-version/-/assert-package-version-1.4.0.tgz}
+
+ '@dynamic-labs-sdk/client@1.4.0':
+ resolution: {integrity: sha512-ar926Ecso2rFBl0mZcccooRExfOIdlwY2X0iE6HWKFYuINmrTC5kk2+Eqa4x+vYr+SQIKlT0zGIyPKcfm4H+pw==}
+ peerDependencies:
+ '@react-native-async-storage/async-storage': ^2.2.0
+ react-native: '>=0.73.6'
+ react-native-inappbrowser-reborn: ^3.7.0
+ react-native-keychain: ^10.0.0
+ react-native-passkey: '>=3.3.2'
+ peerDependenciesMeta:
+ '@react-native-async-storage/async-storage':
+ optional: true
+ react-native:
+ optional: true
+ react-native-inappbrowser-reborn:
+ optional: true
+ react-native-keychain:
+ optional: true
+ react-native-passkey:
+ optional: true
+
+ '@dynamic-labs-sdk/react-hooks@1.4.0':
+ resolution: {integrity: sha512-UGteUP43/WEE4u9FiFPwouV0xXQnCCQslhF+wtRnx0TCT56zBZ94yjlYeSg7gqSlYM1oqSW6km95da6SKvzLfg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/dynamic-npm/@dynamic-labs-sdk/react-hooks/-/@dynamic-labs-sdk/react-hooks-1.4.0.tgz}
+ peerDependencies:
+ '@dynamic-labs-sdk/client': 1.4.0
+ react: ^18.0.0 || ^19.0.0
+
+ '@dynamic-labs-sdk/solana@1.4.0':
+ resolution: {integrity: sha512-KMNnyhEukiC50y9nfsLVfBSbR2snkkQGvA8G7IQhfNduMA9oD3ayPizRl8jewHtrSLF3pSior2s0jeFzsGwpsQ==}
+
+ '@dynamic-labs-sdk/wallet-connect@1.4.0':
+ resolution: {integrity: sha512-mycxeOS4oMqUysJyw9QGx+QWg/oRnP/ONRTSH6wt1Oyog5HNtJlB2AE+mxn7SZfgq8YYPkvNVQl6mkJAou/h8g==}
+
+ '@dynamic-labs-wallet/browser-wallet-client@0.0.351':
+ resolution: {integrity: sha512-/hRQ/Ip1vT6KLRa5nHIa3W0qfq3+n9zVcXl6JOvlcI6K7wGDibT+qEMMH4dUK7XejxiGZ1hxW8IelI4DJm04EQ==}
+
+ '@dynamic-labs-wallet/core@0.0.351':
+ resolution: {integrity: sha512-EchczbnVpUYnvlu+eYHaKEzwnBEBbHcLWr/zRj8VrfKQMpKsc2iaagOmuW6zA/O68bEJGBAu6yoD1IIvYH5RGg==}
+ peerDependencies:
+ '@dynamic-labs-wallet/forward-mpc-client': 0.9.0
+
+ '@dynamic-labs-wallet/forward-mpc-client@0.9.0':
+ resolution: {integrity: sha512-gotV/RnPTJmjosddbZU6L9Rgs6WEJRwNX/VO7v+0JKyyuzIZPvjA2wJLto9EVEiNMCKMES2a+VY39rEqcGNHCg==}
+ peerDependencies:
+ '@dynamic-labs-wallet/primitives': '>=0.0.336 || 0.0.1'
+
+ '@dynamic-labs-wallet/forward-mpc-shared@0.7.0':
+ resolution: {integrity: sha512-mN6zT5J8JbZxkOJxEjgGrjURybVn/t9DD+pWW5U4DRZH6Qakn5n1LIB4Lg4Y7OW9WwrlMH2IJ9RNgBW35RaF1A==}
+ peerDependencies:
+ '@dynamic-labs-wallet/primitives': '>=0.0.336 || 0.0.1'
+
+ '@dynamic-labs-wallet/primitives@0.0.351':
+ resolution: {integrity: sha512-ZlHgGLhdtVTjwueu7a5X3qKOq70zCYNiRONaTSXhoiNC/kC1BRitdiq+JPqeEq5jU6OXIwB4N3sAvf7lxufkLA==}
+
+ '@dynamic-labs/assert-package-version@4.84.0':
+ resolution: {integrity: sha512-23zGdHt83OpWWFEWk+qPw8mqXi5c1fNeVFBPOj1yqxjE86uvKGRUvk86RIe72QvIETtWi7QM5XfDx1IF0FIBwg==}
+
+ '@dynamic-labs/logger@4.84.0':
+ resolution: {integrity: sha512-u8WaJ8dfP5csyWYymYoj/rB01ZGeDBB4ST9j3SHUBDLEDcDttUs8TADRGcpWaOScHiqPSJuc19154qH1+jpvuQ==}
+
+ '@dynamic-labs/message-transport@4.84.0':
+ resolution: {integrity: sha512-6Mq8UG31mUB5d14HsIKG/9Nba6ZcRQutj7Gm6GaoXAFSqFqLFSTL27wW2FU5GMpAnuzGQvH9mYweO9MyfHFEmQ==}
+
+ '@dynamic-labs/sdk-api-core@0.0.1015':
+ resolution: {integrity: sha512-IERnw3pYJfpWQLgMJOwaD/cMs+bq2L2k0JaFR21tjtfkQww+v98VNyTrW8ptTHluEguJQftxTKT+IrQb5vyvFw==}
+
+ '@dynamic-labs/sdk-api-core@0.0.964':
+ resolution: {integrity: sha512-U7PdyUQXdvToWCoysBIURYDMy+3XTnGZsdruv1Bl1LKwXHNbR8jGwIt6ibf0vbp1lQga6fc4DPnlAjbtUHaPIA==}
+
+ '@dynamic-labs/sdk-api-core@0.0.985':
+ resolution: {integrity: sha512-Tb/+2v0N8IaoBmGsbelnIXiGfihE/YZY05SNd9+J6qt6VaSesFqihdLwBlBrUHXZT9sxdIjrFB00cpPodkbFcw==}
+
+ '@dynamic-labs/types@4.84.0':
+ resolution: {integrity: sha512-o4W0a0QDxhJ2Nl0sVPk9L/FM1asnpA7jZBN1uqcr2PX/z4ALA5IY4KcJVD7l6UJvPYXG0cWPr2tokOtUl014Jw==}
+
+ '@dynamic-labs/utils@4.84.0':
+ resolution: {integrity: sha512-MGH1j/Ipw4RApUeZ+6giY0+YoPm0ROClLJ4edY7lMdVrQ/IFbUtJ3yr9HVTSwzYQGxlSZ80s7GeUmmysSrkiGw==}
+
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@emnapi/core/-/core-1.10.0.tgz}
+
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@emnapi/runtime/-/runtime-1.10.0.tgz}
+
+ '@emnapi/wasi-threads@1.2.1':
+ resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz}
+
+ '@eslint-community/eslint-utils@4.9.1':
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.12.2':
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/config-array@0.21.2':
+ resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/config-helpers@0.3.1':
+ resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/core@0.15.2':
+ resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@3.3.5':
+ resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.34.0':
+ resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.7':
+ resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/plugin-kit@0.3.5':
+ resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@evervault/wasm-attestation-bindings@0.3.1':
+ resolution: {integrity: sha512-pJsbax/pEPdRXSnFKahzGZeq2CNTZ0skAPWpnEZK/8vdcvlan7LE7wMSOVr+Z+MqTBnVEnS7O80TKpXKU5Rsbw==}
+
+ '@humanfs/core@0.19.2':
+ resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/node@0.16.8':
+ resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanfs/types@0.15.0':
+ resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==}
+ engines: {node: '>=18.18.0'}
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/retry@0.4.3':
+ resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
+ engines: {node: '>=18.18'}
+
+ '@img/colour@1.1.0':
+ resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
+ engines: {node: '>=18'}
+
+ '@img/sharp-darwin-arm64@0.34.5':
+ resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-darwin-x64@0.34.5':
+ resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-arm64@1.2.4':
+ resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-x64@1.2.4':
+ resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-linux-arm64@1.2.4':
+ resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-arm@1.2.4':
+ resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-ppc64@1.2.4':
+ resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-riscv64@1.2.4':
+ resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-s390x@1.2.4':
+ resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linux-x64@1.2.4':
+ resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@img/sharp-linux-arm64@0.34.5':
+ resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-arm@0.34.5':
+ resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-ppc64@0.34.5':
+ resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-riscv64@0.34.5':
+ resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-s390x@0.34.5':
+ resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linux-x64@0.34.5':
+ resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@img/sharp-linuxmusl-arm64@0.34.5':
+ resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@img/sharp-linuxmusl-x64@0.34.5':
+ resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@img/sharp-wasm32@0.34.5':
+ resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [wasm32]
+
+ '@img/sharp-win32-arm64@0.34.5':
+ resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@img/sharp-win32-ia32@0.34.5':
+ resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@img/sharp-win32-x64@0.34.5':
+ resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@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==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz}
+
+ '@next/env@15.5.9':
+ resolution: {integrity: sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==}
+
+ '@next/eslint-plugin-next@15.5.2':
+ resolution: {integrity: sha512-lkLrRVxcftuOsJNhWatf1P2hNVfh98k/omQHrCEPPriUypR6RcS13IvLdIrEvkm9AH2Nu2YpR5vLqBuy6twH3Q==}
+
+ '@next/swc-darwin-arm64@15.5.7':
+ resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@next/swc-darwin-x64@15.5.7':
+ resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@next/swc-linux-arm64-gnu@15.5.7':
+ resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@next/swc-linux-arm64-musl@15.5.7':
+ resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@next/swc-linux-x64-gnu@15.5.7':
+ resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@next/swc-linux-x64-musl@15.5.7':
+ resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@next/swc-win32-arm64-msvc@15.5.7':
+ resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@next/swc-win32-x64-msvc@15.5.7':
+ resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.7.tgz}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@noble/ciphers@0.4.1':
+ resolution: {integrity: sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==}
+
+ '@noble/ciphers@1.3.0':
+ resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.8.0':
+ resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.9.1':
+ resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.9.2':
+ resolution: {integrity: sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@1.9.7':
+ resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/curves@2.0.1':
+ resolution: {integrity: sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==}
+ engines: {node: '>= 20.19.0'}
+
+ '@noble/hashes@1.7.0':
+ resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/hashes@1.8.0':
+ resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
+ engines: {node: ^14.21.3 || >=16}
+
+ '@noble/hashes@2.0.1':
+ resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==}
+ engines: {node: '>= 20.19.0'}
+
+ '@noble/hashes@2.2.0':
+ resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==}
+ engines: {node: '>= 20.19.0'}
+
+ '@noble/post-quantum@0.5.4':
+ resolution: {integrity: sha512-leww0zzIirrvwaYMPI9fj6aRIlA/c6Y0/lifQQ1YOOyHEr0MNH3yYpjXeiVG+tWdPps4XxGclFWX2INPO3Yo5w==}
+ engines: {node: '>= 20.19.0'}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@nolyfill/is-core-module@1.0.39':
+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
+ engines: {node: '>=12.4.0'}
+
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
+ '@rushstack/eslint-patch@1.16.1':
+ resolution: {integrity: sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==}
+
+ '@scure/base@1.2.6':
+ resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==}
+
+ '@scure/bip32@1.7.0':
+ resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==}
+
+ '@scure/bip39@1.6.0':
+ resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==}
+
+ '@simplewebauthn/browser@13.1.0':
+ resolution: {integrity: sha512-WuHZ/PYvyPJ9nxSzgHtOEjogBhwJfC8xzYkPC+rR/+8chl/ft4ngjiK8kSU5HtRJfczupyOh33b25TjYbvwAcg==}
+
+ '@sindresorhus/is@4.6.0':
+ resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
+ engines: {node: '>=10'}
+
+ '@solana-program/system@0.12.0':
+ resolution: {integrity: sha512-ZnAAWeGVMWNtJhw3GdifI2HnhZ0A0H0qs8tBkcFvxp/8wIavvO+GOM4Jd0N22u2+Lni2zcwvcrxrsxj6Mjphng==}
+ peerDependencies:
+ '@solana/kit': ^6.1.0
+
+ '@solana-program/token@0.13.0':
+ resolution: {integrity: sha512-/Apjrd5lwOJGrPB0J5Rv7EBeclvyEBQPAGA85Scm7wBH+GpkbdLDM9uK3TNg8jjFKyWQYai/JtPHbrx7VgFLSg==}
+ peerDependencies:
+ '@solana/kit': ^6.5.0
+
+ '@solana/accounts@6.9.0':
+ resolution: {integrity: sha512-g36AJreJrgf9AAjOfbdFHEFUTymBgzbWHoEDElZ+fDKvqBINDiUVKzDApwc7C7kGPMFqQBaoEHnQRxf2IqfKZQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/addresses@6.9.0':
+ resolution: {integrity: sha512-tWnG2L6lo/ZhcMT019F3myDsH87MM8EZbTO0cgwgvVPlEdIGblROFF3tGVrb7FVCOlbPI0ONCFyPbnrmR58LsA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/assertions@6.9.0':
+ resolution: {integrity: sha512-FjWWD6e0in+HFsHMvU2zKCbyPfKtDW6iGXZZ9+Qg1QUYpO1AEObsya3F7hb9RkZKUueK4WwWAQnIuvEUp3A1uA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/buffer-layout-utils@0.2.0':
+ resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==}
+ engines: {node: '>= 10'}
+
+ '@solana/buffer-layout@4.0.1':
+ resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==}
+ engines: {node: '>=5.10'}
+
+ '@solana/codecs-core@2.0.0-rc.1':
+ resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-core@2.3.0':
+ resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.3.3'
+
+ '@solana/codecs-core@6.9.0':
+ resolution: {integrity: sha512-F2BmLecG/1nTtnjyD509NsEc254pxJKa2bpvotymv1lL1WfEn3zchcZ9SMIiLyL4G6J8b9F3OKIq2YSZho2AOQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/codecs-data-structures@2.0.0-rc.1':
+ resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-data-structures@6.9.0':
+ resolution: {integrity: sha512-f7GYtiHafvJDhqiwzUUSr/6AYSK4DCw6quPmA80NZGtkNiFa+g6LoJy2wbC0wp2dxvCwNpxf6x3ILCYRutAvvg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/codecs-numbers@2.0.0-rc.1':
+ resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs-numbers@2.3.0':
+ resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.3.3'
+
+ '@solana/codecs-numbers@6.9.0':
+ resolution: {integrity: sha512-XMI0FOHV2h7yPAllxWCX8z+J1msidNjXzN1mRjH5KR6C+vfzyKa2xWHve0bNSV/bjVAhqqhc7dQCpBKuF4+ScQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/codecs-strings@2.0.0-rc.1':
+ resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==}
+ peerDependencies:
+ fastestsmallesttextencoderdecoder: ^1.0.22
+ typescript: '>=5'
+
+ '@solana/codecs-strings@6.9.0':
+ resolution: {integrity: sha512-PTqYQxMsmdfEEq29bV1AnALD4FjFEsSxOj1fYNqooOSTEQEpUoYEQtsd55/kBsnIKltXbvYwXYXBusm19n1sQA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ fastestsmallesttextencoderdecoder: ^1.0.22
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ fastestsmallesttextencoderdecoder:
+ optional: true
+ typescript:
+ optional: true
+
+ '@solana/codecs@2.0.0-rc.1':
+ resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/codecs@6.9.0':
+ resolution: {integrity: sha512-oWOybKa1PTGI1D/FyrvGKralADM1jmVZC2AtgEo+4JTKG0+i1p9ZbwNY2UcJqdYsDMDaGHAx0LMAid9LDCxXTQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/errors@2.0.0-rc.1':
+ resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/errors@2.3.0':
+ resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==}
+ engines: {node: '>=20.18.0'}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5.3.3'
+
+ '@solana/errors@6.9.0':
+ resolution: {integrity: sha512-7i+b07KMnkbHvFlz7uWade3jvyc22UmVm8o9taxPK8YV3JNM/NkS8oQFvMac2MIaLPAlEs7I8MHyVLUal1yY4g==}
+ engines: {node: '>=20.18.0'}
+ hasBin: true
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/fast-stable-stringify@6.9.0':
+ resolution: {integrity: sha512-l14zGVsURbT5Aox/kLFQywqV4VaE9/j3h2EvCu9oULVPMwzQB6yezJb1/KyiDwhm/RscooPd0gFQFIKEGQbayw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/fixed-points@6.9.0':
+ resolution: {integrity: sha512-0K7mbYC4jdAZFlXqXjpNanmEyZxk7K9NtXDLc1zuhGuxwH8J9guvohwdw2V7TQ9bfjCYsprY3Tp2kUVQpECGmA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/functional@6.9.0':
+ resolution: {integrity: sha512-sgNHOaIjETZZuziZdlwPsU5EjBVj5M0dUbwrSQTTNZe0SxX3pQ1QFVcs5KyvdS7AQcpBVdLjx4CfQjdKXk52GA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/instruction-plans@6.9.0':
+ resolution: {integrity: sha512-SxTSOetEKD+WPzvDuYRsP1+KkwUp8KqL1n7oFx9ThxjyfEY0ly0i9KdbvX5yYVDOA2TSwrltgdu14y/Pf6y3Cg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/instructions@6.9.0':
+ resolution: {integrity: sha512-LZfJx3bGdUSbGaswoOEPHygticqkCg3TusRczPJXyCmKhoQzPCcGQQ99qMzP7Wg8pEV5tWA5t7tycf8E237ydg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/keys@6.9.0':
+ resolution: {integrity: sha512-1g2QARiqSjNqT0EIqLDLQ5vRm7hCsbqgFwFAp5GsMV/8BTYT8s1Ct2wLHDZiJ4eAX6beTHVf8LbOBfVejtn3oQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/kit-plugin-instruction-plan@0.10.0':
+ resolution: {integrity: sha512-h99B+1Vp5QWU/M/q0UXlTxKJt781vWw5aAopnbgVCy0F3hNaSDZ/gio126Oz0/cipGOnyaJf3NnV79GvxaEqZA==}
+ peerDependencies:
+ '@solana/kit': ^6.8.0
+
+ '@solana/kit-plugin-rpc@0.11.1':
+ resolution: {integrity: sha512-NpCKBY6y3lmOOZjzm5dvk/+iZsKOH+Wc9TQx5yKZ0RzNOXC6V9i0Inn+niVdkX5ECDJOmClfa64bLcImFJWLuQ==}
+ peerDependencies:
+ '@solana/kit': ^6.8.0
+
+ '@solana/kit-plugin-signer@0.10.0':
+ resolution: {integrity: sha512-3Gw3R6nQg/2r2+4cSaUZHj5zdbtb0SuA1mkDMd6uH7B+fdH1Ouxnulv1/sN8J0VxBo7tS+YDQA5t0arxX5gj+w==}
+ peerDependencies:
+ '@solana/kit': ^6.8.0
+
+ '@solana/kit@6.9.0':
+ resolution: {integrity: sha512-k7BRz7Akfv8wiRtlCR/xUyDLfuMfYMelMR1+AC5KgwaRRJReDF0BucMLNN1In7WoI+KuWwr1OKv4na/oKpyeAQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/nominal-types@6.9.0':
+ resolution: {integrity: sha512-ouhrnY7a6nsLXRGcariwcmHDdXroCNqOuzwtdjKt2c8e8Drwao9yxPH2VoViNgpq8IGNJeQMEI1TVnoJZRn0gw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/offchain-messages@6.9.0':
+ resolution: {integrity: sha512-qK3tqRPb+E0kmTz5qFXZbEdF4pyzfOWRZjyVESHVGemDDeGzZ1SV3zAxcA6HBCnv4wCBnlyaDPw8t+5sryNMAw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/options@2.0.0-rc.1':
+ resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==}
+ peerDependencies:
+ typescript: '>=5'
+
+ '@solana/options@6.9.0':
+ resolution: {integrity: sha512-H5ZRWNzzLMwHU/fRU9aVx+3TaMN4gDNCUYxsZxq0h7mqiwxFy6mpy95xPsfdldthCHDYtYnUTxe2sBatGbNHig==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/plugin-core@6.9.0':
+ resolution: {integrity: sha512-KslLSnzY8zbGZibEBVMVUm2ZS8T2xf+cut7F65VjWPoWNAxU+p7933wsMz/az6CF7b65RI7iU3HhCr5/5QF50w==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/plugin-interfaces@6.9.0':
+ resolution: {integrity: sha512-Qj4sk9thkM1UgnFXvWIoezd/CbqpX/2jigLBDsMB5Ed/gmFlkBSTL127LFDSY3OtzBpXl4hROs+Zqv+5xqtguA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/program-client-core@6.9.0':
+ resolution: {integrity: sha512-+iUnsddhs72QoBJoUO+/yHUXoBvYWa1sGCBRJk35zeg8j7ZXEwRkk6eX0VOrUPxhEpQbYJsIOCrIYApNIt8RFw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/programs@6.9.0':
+ resolution: {integrity: sha512-L9LAnQtfFFcCDLcbbnxhUtgAmu/kS4aRmrVncdnX5CFyQshlpo0/Qhrq3UA7vnhute4gjYV4pFT+64onH5qGEQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/promises@6.9.0':
+ resolution: {integrity: sha512-227PlXRi6KZX4ODYTkJitr9InSa79NTquI72slay4gzxO9VmMepgvYdMAX6kawdN5pt+VzaklKhNhWXk50Pi9g==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-api@6.9.0':
+ resolution: {integrity: sha512-3KhXS6A1ie6GqTywW/KEMSXJ1VJEU66fxjhuiiqPILuJstP7kex3ycr3H6DirKydUsy6gaKaPN43rE+LfyS7OA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-parsed-types@6.9.0':
+ resolution: {integrity: sha512-6ThH8izY+DWDyrVOOlS40vTcFjwjCinjfqnId7zhRk8OxhkfHQ/iEj+OnGwD4Yhe8pGdVa7GNVYlrQgQgzQ3eQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-spec-types@6.9.0':
+ resolution: {integrity: sha512-A4fY1JRrcKqX3EfttO4Q8L97nGPqdjfekAV0eDyxN5nu9ngf5p7GKenkl7AYDoHLNr6ZX/C96cRADxXjsRJ0iA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-spec@6.9.0':
+ resolution: {integrity: sha512-3yHRoChc0IpsJbUq0/94l+ar3t9U3Ax58W0HON7eyYe7zFP10UAxpkHn7DPch9DeALyuGph8kVnvl+kXRgJlGg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-subscriptions-api@6.9.0':
+ resolution: {integrity: sha512-UA/rPQeNx6zQMUFcS8PPPuB4vzUOtSzIY/igMH0DRoP020NyES2GguIb7Zo7sqDNi4n0gkQRhoW4dPVotcNKdA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-subscriptions-channel-websocket@6.9.0':
+ resolution: {integrity: sha512-kT8Yne9HjJD2gooaOFNSyKrvaIfOy2GR0Ymv8OfecBCwFStdz+SPo5eYXq8ZWoZbr5E/MMpHgqsHBanqa2Ffyg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-subscriptions-spec@6.9.0':
+ resolution: {integrity: sha512-DbaG67s99vRZQxFMK80UQ7DEKkRJK6JEZeYg/U5UttD6n7ax/vct7qopxGnrt4RCkaaac2fU8Sr+fcnvWQweUg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-subscriptions@6.9.0':
+ resolution: {integrity: sha512-IMctZQaMxzvRACQ6ooW98lP+7tVoUJnRgOZtkAdzgBizldQAYPIKd3MulP0jbQPCMfdPsa2Hs0NBcUwfgonq3w==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-transformers@6.9.0':
+ resolution: {integrity: sha512-dg4LK2wEBpaY+KRk/SJIkYvrvjdsc1AwD4bkmGY4Fp7EwVlvwBQShAQn78Qi4IP0WQ/0n9ncFyUxgcB1Y01ZuQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-transport-http@6.9.0':
+ resolution: {integrity: sha512-4gy30fWJcS6jrcXCoP/optFpGJ/gD9xdkE8wDbe1Ys/Y+e4XjyBt45xtTnbdmMdukvdRX+oXS3zgUIYoagpNzQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc-types@6.9.0':
+ resolution: {integrity: sha512-iFhPzZK3qiQ1lhfNTNBTI7BIs5PfWZSgRLD3enKm8ZAQggzvUklfO3KPh47jVsc/Jsr1UGPH8M3o3m17qjO1Cg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/rpc@6.9.0':
+ resolution: {integrity: sha512-ny1Kt20+oq3xZErNA56+Magmb2JKYfQgHwZTsBmHKVl/9mBpv1y1+ygV+KNiiX/wWXWstLbdIo1jgPwZPbU2Vg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/signers@6.9.0':
+ resolution: {integrity: sha512-x7WyoRm9IORMqeSqNivZgyY+RERPkmqWxpINPD13kUH+oaZzonORIgxk2Lz+u5iPRXiJPkdRPrQ4FoFWv8i6kQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/spl-token-group@0.0.7':
+ resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': 1.98.4
+
+ '@solana/spl-token-metadata@0.1.6':
+ resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': 1.98.4
+
+ '@solana/spl-token@0.4.14':
+ resolution: {integrity: sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@solana/web3.js': 1.98.4
+
+ '@solana/subscribable@6.9.0':
+ resolution: {integrity: sha512-YV0/BrJNfepf10CTfLwD7kRY1kkELDHd+BbHJZhBeiuiXTY3xQTvvx1RFs3NtfFCcTHG25Uh8NpRacQJnxSSIQ==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/subscriptions@0.2.0':
+ resolution: {integrity: sha512-GjaKkmM8AySXvHl2cqngARC2e7BoB4fJMo7p2ZpZAfLELxKjxfiDURl1RBme2JW7MQtixKZtlzZi9kVIslGp7w==}
+ peerDependencies:
+ '@solana/kit': ^6.4.0
+
+ '@solana/sysvars@6.9.0':
+ resolution: {integrity: sha512-e0e+QKr/th9t/O2N1oUoJmcodLghzAtWKUlGb1zyYub0/WJrPImnKqJqp/gDP4tK98mJxopPMcprCeHk4B+TQg==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/transaction-confirmation@6.9.0':
+ resolution: {integrity: sha512-fzYCOih7hhtBzzNSkAnxMjeFeQ8U7e27k9i0RsgQc3/e3OCynF5HoIVNhhqZbwfIBKiaD4ginJR6slRnfqO32Q==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/transaction-messages@6.9.0':
+ resolution: {integrity: sha512-OWpryt0w6SHlwHx12Vd1wvx2QwSGBXAIUEHTCtkctcM3AaZRy5cIl7CAq9iD5PgahUsaOyRLBV0zlCJcC2JrJA==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/transactions@6.9.0':
+ resolution: {integrity: sha512-uKPzLwHbjwChfVl82he17ntkh02PfgnMMhN7uOAC+VbkIt1O+EEw8sX87gi6kdG/EV+QBDQXm9PLAo5W0tYylw==}
+ engines: {node: '>=20.18.0'}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@solana/web3.js@1.98.4':
+ resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==}
+
+ '@swc/helpers@0.5.15':
+ resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+
+ '@swc/helpers@0.5.21':
+ resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==}
+
+ '@szmarczak/http-timer@4.0.6':
+ resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
+ engines: {node: '>=10'}
+
+ '@tailwindcss/node@4.2.4':
+ resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==}
+
+ '@tailwindcss/oxide-android-arm64@4.2.4':
+ resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.2.4':
+ resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.2.4':
+ resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.2.4':
+ resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4':
+ resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.2.4':
+ resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.2.4':
+ resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.2.4':
+ resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.2.4':
+ resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-wasm32-wasi@4.2.4':
+ resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.4.tgz}
+ 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==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.4.tgz}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.2.4':
+ resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.4.tgz}
+ 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==}
+
+ '@tanstack/query-core@5.100.9':
+ resolution: {integrity: sha512-SJSFw1S8+kQ0+knv/XGfrbocWoAlT7vDKsSImtLx3ZPQmEcR46hkDjLSvynSy25N8Ms4tIEini1FuBd5k7IscQ==}
+
+ '@tanstack/react-query@5.100.9':
+ resolution: {integrity: sha512-Oa44XkaI3kCNN6ME0KByU3xT3SEUNOMfZpHxL6+wFoTm+OeUFYHKdeYVe0aOXlRDm/f15sgLwEt2HDorIdW8+A==}
+ peerDependencies:
+ react: ^18 || ^19
+
+ '@tybys/wasm-util@0.10.2':
+ resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@tybys/wasm-util/-/wasm-util-0.10.2.tgz}
+
+ '@types/cacheable-request@6.0.3':
+ resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
+
+ '@types/connect@3.4.38':
+ resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
+
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/http-cache-semantics@4.2.0':
+ resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
+ '@types/keyv@3.1.4':
+ resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
+
+ '@types/node@12.20.55':
+ resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+
+ '@types/node@24.3.0':
+ resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
+
+ '@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.14':
+ resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==}
+
+ '@types/responselike@1.0.3':
+ resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
+
+ '@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.59.2':
+ resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.59.2
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/parser@8.59.2':
+ resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/project-service@8.59.2':
+ resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/scope-manager@8.59.2':
+ resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/tsconfig-utils@8.59.2':
+ resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/type-utils@8.59.2':
+ resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/types@8.59.2':
+ resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.59.2':
+ resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/utils@8.59.2':
+ resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/visitor-keys@8.59.2':
+ resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz}
+ cpu: [arm]
+ os: [android]
+
+ '@unrs/resolver-binding-android-arm64@1.11.1':
+ resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz}
+ cpu: [arm64]
+ os: [android]
+
+ '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-darwin-x64@1.11.1':
+ resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz}
+ cpu: [x64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz}
+ cpu: [arm64]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz}
+ cpu: [ia32]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz}
+ cpu: [x64]
+ os: [win32]
+
+ '@vue/reactivity@3.5.34':
+ resolution: {integrity: sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==}
+
+ '@vue/shared@3.5.34':
+ resolution: {integrity: sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==}
+
+ '@wallet-standard/app@1.0.1':
+ resolution: {integrity: sha512-LnLYq2Vy2guTZ8GQKKSXQK3+FRGPil75XEdkZqE6fiLixJhZJoJa5hT7lXxwe0ykVTt9LEThdTbOpT7KadS26Q==}
+ engines: {node: '>=16'}
+
+ '@wallet-standard/base@1.0.1':
+ resolution: {integrity: sha512-1To3ekMfzhYxe0Yhkpri+Fedq0SYcfrOfJi3vbLjMwF2qiKPjTGLwZkf2C9ftdQmxES+hmxhBzTwF4KgcOwf8w==}
+ engines: {node: '>=16'}
+
+ '@wallet-standard/base@1.1.0':
+ resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==}
+ engines: {node: '>=16'}
+
+ '@wallet-standard/experimental-features@0.1.1':
+ resolution: {integrity: sha512-WKtnET1okeDACTbxmePGOGaIUrGvlu/DestLZvZ/ddFpUKw7nokkbinX/gHzsuAC9WGtLyhqLSppAHzN+vAAaQ==}
+ engines: {node: '>=16'}
+
+ '@wallet-standard/features@1.0.3':
+ resolution: {integrity: sha512-m8475I6W5LTatTZuUz5JJNK42wFRgkJTB0I9tkruMwfqBF2UN2eomkYNVf9RbrsROelCRzSFmugqjKZBFaubsA==}
+ engines: {node: '>=16'}
+
+ '@walletconnect/core@2.21.8':
+ resolution: {integrity: sha512-MD1SY7KAeHWvufiBK8C1MwP9/pxxI7SnKi/rHYfjco2Xvke+M+Bbm2OzvuSN7dYZvwLTkZCiJmBccTNVPCpSUQ==}
+ engines: {node: '>=18'}
+
+ '@walletconnect/environment@1.0.1':
+ resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==}
+
+ '@walletconnect/events@1.0.1':
+ resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==}
+
+ '@walletconnect/heartbeat@1.2.2':
+ resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==}
+
+ '@walletconnect/jsonrpc-provider@1.0.14':
+ resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==}
+
+ '@walletconnect/jsonrpc-types@1.0.4':
+ resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==}
+
+ '@walletconnect/jsonrpc-utils@1.0.8':
+ resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==}
+
+ '@walletconnect/jsonrpc-ws-connection@1.0.16':
+ resolution: {integrity: sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==}
+
+ '@walletconnect/keyvaluestorage@1.1.1':
+ resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==}
+ peerDependencies:
+ '@react-native-async-storage/async-storage': 1.x
+ peerDependenciesMeta:
+ '@react-native-async-storage/async-storage':
+ optional: true
+
+ '@walletconnect/logger@2.1.2':
+ resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==}
+
+ '@walletconnect/relay-api@1.0.11':
+ resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==}
+
+ '@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.21.8':
+ resolution: {integrity: sha512-lTcUbMjQ0YUZ5wzCLhpBeS9OkWYgLLly6BddEp2+pm4QxiwCCU2Nao0nBJXgzKbZYQOgrEGqtdm/7ze67gjzRA==}
+ deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases'
+
+ '@walletconnect/time@1.0.2':
+ resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==}
+
+ '@walletconnect/types@2.21.8':
+ resolution: {integrity: sha512-xuLIPrLxe6viMu8Uk28Nf0sgyMy+4oT0mroOjBe5Vqyft8GTiwUBKZXmrGU9uDzZsYVn1FXLO9CkuNHXda3ODA==}
+
+ '@walletconnect/utils@2.21.8':
+ resolution: {integrity: sha512-HtMraGJ9qXo55l4wGSM1aZvyz0XVv460iWhlRGAyRl9Yz8RQeKyXavDhwBfcTFha/6kwLxPExqQ+MURtKeVVXw==}
+
+ '@walletconnect/window-getters@1.0.1':
+ resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==}
+
+ '@walletconnect/window-metadata@1.0.1':
+ resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==}
+
+ abitype@1.0.8:
+ resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.22.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+
+ abitype@1.2.3:
+ resolution: {integrity: sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3.22.0 || ^4.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+
+ ably@2.17.1:
+ resolution: {integrity: sha512-70yfXHoM7JtJD/8FCtPD1gkWW0f+AJqbJp0PsqDAqiyxFB8cPFY+FuKHgNTYb8eRHKXq8hT1xiDphUcY0+GHnA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agentkeepalive@4.6.0:
+ resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
+ engines: {node: '>= 8.0.0'}
+
+ ajv@6.15.0:
+ resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
+
+ array-buffer-byte-length@1.0.2:
+ resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
+ engines: {node: '>= 0.4'}
+
+ array-includes@3.1.9:
+ resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.findlast@1.2.5:
+ resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.findlastindex@1.2.6:
+ resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flat@1.3.3:
+ resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.flatmap@1.3.3:
+ resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
+ engines: {node: '>= 0.4'}
+
+ array.prototype.tosorted@1.1.4:
+ resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
+ engines: {node: '>= 0.4'}
+
+ arraybuffer.prototype.slice@1.0.4:
+ resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
+ engines: {node: '>= 0.4'}
+
+ ast-types-flow@0.0.8:
+ resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+
+ async-function@1.0.0:
+ resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+ engines: {node: '>= 0.4'}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ atomic-sleep@1.0.0:
+ resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
+ engines: {node: '>=8.0.0'}
+
+ autoprefixer@10.5.0:
+ resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+
+ axe-core@4.11.4:
+ resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==}
+ engines: {node: '>=4'}
+
+ axios@1.15.2:
+ resolution: {integrity: sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==}
+
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
+ base-x@3.0.11:
+ resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==}
+
+ base-x@5.0.1:
+ resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==}
+
+ base64-js@1.0.2:
+ resolution: {integrity: sha512-ZXBDPMt/v/8fsIqn+Z5VwrhdR6jVka0bYobHdGia0Nxi7BJ9i/Uvml3AocHIBtIIBhZjBw5MR0aR4ROs/8+SNg==}
+ engines: {node: '>= 0.4'}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ baseline-browser-mapping@2.10.27:
+ resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ bigint-buffer@1.1.5:
+ resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==}
+ engines: {node: '>= 10.0.0'}
+
+ bignumber.js@9.3.1:
+ resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
+ blakejs@1.2.1:
+ resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==}
+
+ bn.js@5.2.3:
+ resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==}
+
+ bops@1.0.1:
+ resolution: {integrity: sha512-qCMBuZKP36tELrrgXpAfM+gHzqa0nLsWZ+L37ncsb8txYlnAoxOPpVp+g7fK0sGkMXfA0wl8uQkESqw3v4HNag==}
+
+ borsh@0.7.0:
+ resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==}
+
+ brace-expansion@1.1.14:
+ resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==}
+
+ brace-expansion@5.0.5:
+ resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
+ engines: {node: 18 || 20 || >=22}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.28.2:
+ resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ bs58@4.0.1:
+ resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==}
+
+ bs58@6.0.0:
+ resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ bufferutil@4.1.0:
+ resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/bufferutil/-/bufferutil-4.1.0.tgz}
+ engines: {node: '>=6.14.2'}
+
+ cacheable-lookup@5.0.4:
+ resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
+ engines: {node: '>=10.6.0'}
+
+ cacheable-request@7.0.4:
+ resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
+ engines: {node: '>=8'}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bind@1.0.9:
+ resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ caniuse-lite@1.0.30001792:
+ resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chalk@5.6.2:
+ resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+ chokidar@5.0.0:
+ resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==}
+ engines: {node: '>= 20.19.0'}
+
+ client-only@0.0.1:
+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+
+ clone-response@1.0.3:
+ resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@12.1.0:
+ resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+ engines: {node: '>=18'}
+
+ 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==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ cookie-es@1.2.3:
+ resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ crossws@0.3.5:
+ resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ damerau-levenshtein@1.0.8:
+ resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+
+ data-view-buffer@1.0.2:
+ resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-length@1.0.2:
+ resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
+ engines: {node: '>= 0.4'}
+
+ data-view-byte-offset@1.0.1:
+ resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
+ engines: {node: '>= 0.4'}
+
+ debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decode-uri-component@0.2.2:
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
+
+ decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ engines: {node: '>=10'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ defer-to-connect@2.0.1:
+ resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
+ engines: {node: '>=10'}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ defu@6.1.7:
+ resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==}
+
+ delay@5.0.0:
+ resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==}
+ engines: {node: '>=10'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ destr@2.0.5:
+ resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
+
+ detect-browser@5.3.0:
+ resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==}
+
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ doctrine@2.1.0:
+ resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
+ engines: {node: '>=0.10.0'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ duplexify@4.1.3:
+ resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==}
+
+ electron-to-chromium@1.5.352:
+ resolution: {integrity: sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
+
+ enhanced-resolve@5.21.0:
+ resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==}
+ engines: {node: '>=10.13.0'}
+
+ es-abstract@1.24.2:
+ resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==}
+ engines: {node: '>= 0.4'}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-iterator-helpers@1.3.2:
+ resolution: {integrity: sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ es-shim-unscopables@1.1.0:
+ resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
+ engines: {node: '>= 0.4'}
+
+ es-to-primitive@1.3.0:
+ resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
+ engines: {node: '>= 0.4'}
+
+ es-toolkit@1.39.3:
+ resolution: {integrity: sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==}
+
+ es6-promise@4.2.8:
+ resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
+
+ es6-promisify@5.0.0:
+ resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ eslint-config-next@15.5.2:
+ resolution: {integrity: sha512-3hPZghsLupMxxZ2ggjIIrat/bPniM2yRpsVPVM40rp8ZMzKWOJp2CGWn7+EzoV2ddkUr5fxNfHpF+wU1hGt/3g==}
+ peerDependencies:
+ eslint: ^7.23.0 || ^8.0.0 || ^9.0.0
+ typescript: '>=3.3.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ eslint-import-resolver-node@0.3.10:
+ resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==}
+
+ eslint-import-resolver-typescript@3.10.1:
+ resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ eslint-plugin-import-x: '*'
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.12.1:
+ resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
+ eslint-plugin-import@2.32.0:
+ resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
+ eslint-plugin-jsx-a11y@6.10.2:
+ resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
+
+ eslint-plugin-react-hooks@5.2.0:
+ resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+
+ eslint-plugin-react@7.37.5:
+ resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
+
+ eslint-scope@8.4.0:
+ resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@4.2.1:
+ resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ eslint-visitor-keys@5.0.1:
+ resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ eslint@9.34.0:
+ resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+
+ espree@10.4.0:
+ resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ esquery@1.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ eventemitter3@5.0.1:
+ resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+
+ eventemitter3@5.0.4:
+ resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
+
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
+ 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==}
+
+ fast-glob@3.3.1:
+ resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fast-redact@3.5.0:
+ resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==}
+ engines: {node: '>=6'}
+
+ fast-stable-stringify@1.0.0:
+ resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==}
+
+ fastestsmallesttextencoderdecoder@1.0.22:
+ resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==}
+
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ filter-obj@1.1.0:
+ resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
+ engines: {node: '>=0.10.0'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
+
+ flatted@3.4.2:
+ resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
+
+ follow-redirects@1.16.0:
+ resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+
+ form-data@4.0.5:
+ resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
+ engines: {node: '>= 6'}
+
+ fp-ts@2.16.11:
+ resolution: {integrity: sha512-LaI+KaX2NFkfn1ZGHoKCmcfv7yrZsC3b8NtWsTVQeHkq4F27vI5igUuO53sxqDEa2gNQMHFPmpojDw/1zmUK7w==}
+
+ fraction.js@5.3.4:
+ resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ function.prototype.name@1.1.8:
+ resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
+ engines: {node: '>= 0.4'}
+
+ functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+
+ generator-function@2.0.1:
+ resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
+ engines: {node: '>= 0.4'}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ get-stream@5.2.0:
+ resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
+ engines: {node: '>=8'}
+
+ get-symbol-description@1.1.0:
+ resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
+ engines: {node: '>= 0.4'}
+
+ get-tsconfig@4.14.0:
+ resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+
+ globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ got@11.8.6:
+ resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
+ engines: {node: '>=10.19.0'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ h3@1.15.11:
+ resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
+
+ has-bigints@1.1.0:
+ resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+ engines: {node: '>= 0.4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-proto@1.2.0:
+ resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
+ engines: {node: '>= 0.4'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.3:
+ resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==}
+ engines: {node: '>= 0.4'}
+
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+
+ http2-wrapper@1.0.3:
+ resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
+ engines: {node: '>=10.19.0'}
+
+ humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+
+ idb-keyval@6.2.2:
+ resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ ignore@7.0.5:
+ resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
+ engines: {node: '>= 4'}
+
+ import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ internal-slot@1.1.0:
+ resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
+ engines: {node: '>= 0.4'}
+
+ io-ts@2.2.22:
+ resolution: {integrity: sha512-FHCCztTkHoV9mdBsHpocLpdTAfh956ZQcIkWQxxS0U5HT53vtrcuYdQneEJKH6xILaLNzXVl2Cvwtoy8XNN0AA==}
+ peerDependencies:
+ fp-ts: ^2.5.0
+
+ iron-webcrypto@1.2.1:
+ resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
+
+ is-array-buffer@3.0.5:
+ resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
+ engines: {node: '>= 0.4'}
+
+ is-async-function@2.1.1:
+ resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
+ engines: {node: '>= 0.4'}
+
+ is-bigint@1.1.0:
+ resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+ engines: {node: '>= 0.4'}
+
+ is-boolean-object@1.2.2:
+ resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
+ engines: {node: '>= 0.4'}
+
+ is-bun-module@2.0.0:
+ resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
+
+ is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
+ engines: {node: '>= 0.4'}
+
+ is-data-view@1.0.2:
+ resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+ engines: {node: '>= 0.4'}
+
+ is-date-object@1.1.0:
+ resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-finalizationregistry@1.1.1:
+ resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+ engines: {node: '>= 0.4'}
+
+ is-generator-function@1.1.2:
+ resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
+ engines: {node: '>= 0.4'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+
+ is-number-object@1.1.1:
+ resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
+ engines: {node: '>= 0.4'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-regex@1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
+
+ is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+
+ is-shared-array-buffer@1.0.4:
+ resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
+ engines: {node: '>= 0.4'}
+
+ is-string@1.1.1:
+ resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
+ engines: {node: '>= 0.4'}
+
+ is-symbol@1.1.1:
+ resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
+ engines: {node: '>= 0.4'}
+
+ is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
+
+ is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+
+ is-weakref@1.1.1:
+ resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+ engines: {node: '>= 0.4'}
+
+ is-weakset@2.0.4:
+ resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
+ engines: {node: '>= 0.4'}
+
+ isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ isomorphic-ws@4.0.1:
+ resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==}
+ peerDependencies:
+ ws: '*'
+
+ isows@1.0.7:
+ resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==}
+ peerDependencies:
+ ws: '*'
+
+ iterator.prototype@1.1.5:
+ resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
+ engines: {node: '>= 0.4'}
+
+ jayson@4.3.0:
+ resolution: {integrity: sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ jiti@2.7.0:
+ resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ json-stringify-safe@5.0.1:
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
+ jsx-ast-utils@3.3.5:
+ resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
+ engines: {node: '>=4.0'}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ keyvaluestorage-interface@1.0.0:
+ resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==}
+
+ language-subtag-registry@0.3.23:
+ resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
+
+ language-tags@1.0.9:
+ resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
+ engines: {node: '>=0.10'}
+
+ levn@0.4.1:
+ 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==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ lowercase-keys@2.0.0:
+ resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
+ engines: {node: '>=8'}
+
+ lru-cache@11.3.6:
+ resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==}
+ engines: {node: 20 || >=22}
+
+ lucide-react@0.542.0:
+ resolution: {integrity: sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==}
+ 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==}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mimic-response@1.0.1:
+ resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
+ engines: {node: '>=4'}
+
+ mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+
+ minimatch@10.2.5:
+ resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
+ engines: {node: 18 || 20 || >=22}
+
+ minimatch@3.1.5:
+ resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ multiformats@9.9.0:
+ resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==}
+
+ 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}
+ hasBin: true
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ next@15.5.9:
+ resolution: {integrity: sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==}
+ engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+ '@playwright/test': ^1.51.1
+ babel-plugin-react-compiler: '*'
+ react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+ '@playwright/test':
+ optional: true
+ babel-plugin-react-compiler:
+ optional: true
+ sass:
+ optional: true
+
+ node-exports-info@1.6.0:
+ resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
+ engines: {node: '>= 0.4'}
+
+ node-fetch-native@1.6.7:
+ resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
+
+ node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+
+ node-mock-http@1.0.4:
+ resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
+
+ node-releases@2.0.38:
+ resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-url@6.1.0:
+ resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
+ engines: {node: '>=10'}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ object.assign@4.1.7:
+ resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
+ engines: {node: '>= 0.4'}
+
+ object.entries@1.1.9:
+ resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
+ engines: {node: '>= 0.4'}
+
+ object.fromentries@2.0.8:
+ resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
+ engines: {node: '>= 0.4'}
+
+ object.groupby@1.0.3:
+ resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
+ engines: {node: '>= 0.4'}
+
+ object.values@1.2.1:
+ resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
+ engines: {node: '>= 0.4'}
+
+ ofetch@1.5.1:
+ resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
+
+ on-exit-leak-free@0.2.0:
+ resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ own-keys@1.0.1:
+ resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+ engines: {node: '>= 0.4'}
+
+ ox@0.7.1:
+ resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ p-cancelable@2.1.1:
+ resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
+ engines: {node: '>=8'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.2:
+ resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.4:
+ resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
+ engines: {node: '>=12'}
+
+ pino-abstract-transport@0.5.0:
+ resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==}
+
+ pino-std-serializers@4.0.0:
+ resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==}
+
+ pino@7.11.0:
+ resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==}
+ hasBin: true
+
+ possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.4.31:
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ postcss@8.5.14:
+ resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ process-warning@1.0.0:
+ resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ proxy-from-env@2.1.0:
+ resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
+ engines: {node: '>=10'}
+
+ pump@3.0.4:
+ resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ query-string@7.1.3:
+ resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
+ engines: {node: '>=6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ quick-format-unescaped@4.0.4:
+ resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
+
+ quick-lru@5.1.1:
+ resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
+ engines: {node: '>=10'}
+
+ radix3@1.1.2:
+ resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
+
+ react-dom@19.2.6:
+ resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==}
+ peerDependencies:
+ react: ^19.2.6
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react@19.2.6:
+ resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==}
+ engines: {node: '>=0.10.0'}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readdirp@5.0.0:
+ resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==}
+ engines: {node: '>= 20.19.0'}
+
+ real-require@0.1.0:
+ resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==}
+ engines: {node: '>= 12.13.0'}
+
+ reflect.getprototypeof@1.0.10:
+ resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
+ engines: {node: '>= 0.4'}
+
+ regexp.prototype.flags@1.5.4:
+ resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
+ engines: {node: '>= 0.4'}
+
+ resolve-alpn@1.2.1:
+ resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
+ resolve@2.0.0-next.6:
+ resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ responselike@2.0.1:
+ resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rpc-websockets@9.3.8:
+ resolution: {integrity: sha512-7r+fm4tSJmLf9GvZfL1DJ1SJwpagpp6AazqM0FUaeV7CA+7+NYINSk1syWa4tU/6OF2CyBicLtzENGmXRJH6wQ==}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ safe-array-concat@1.1.4:
+ resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==}
+ engines: {node: '>=0.4'}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-push-apply@1.0.0:
+ resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+ engines: {node: '>= 0.4'}
+
+ safe-regex-test@1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
+
+ safe-stable-stringify@2.5.0:
+ resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
+ engines: {node: '>=10'}
+
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.7.4:
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+
+ set-proto@1.0.0:
+ resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+ engines: {node: '>= 0.4'}
+
+ sharp@0.34.5:
+ resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/sharp/-/sharp-0.34.5.tgz}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ side-channel-list@1.0.1:
+ resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
+ sonic-boom@2.8.0:
+ resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ split-on-first@1.1.0:
+ resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
+ engines: {node: '>=6'}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
+ stable-hash@0.0.5:
+ resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
+
+ stop-iteration-iterator@1.1.0:
+ resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+ engines: {node: '>= 0.4'}
+
+ stream-chain@2.2.5:
+ resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==}
+
+ stream-json@1.9.1:
+ resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==}
+
+ stream-shift@1.0.3:
+ resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
+
+ strict-uri-encode@2.0.0:
+ resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
+ engines: {node: '>=4'}
+
+ string.prototype.includes@2.0.1:
+ resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.matchall@4.0.12:
+ resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.repeat@1.0.0:
+ resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
+
+ string.prototype.trim@1.2.10:
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimend@1.0.9:
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
+
+ string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ styled-jsx@5.1.6:
+ resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@babel/core': '*'
+ babel-plugin-macros: '*'
+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+
+ 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==}
+ engines: {node: '>=8'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ tailwind-merge@3.5.0:
+ resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==}
+
+ 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'}
+
+ text-encoding-utf-8@1.0.2:
+ resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==}
+
+ thread-stream@0.15.2:
+ resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
+
+ tinyglobby@0.2.16:
+ resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
+ engines: {node: '>=12.0.0'}
+
+ tldts-core@6.1.86:
+ resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
+
+ tldts@6.0.16:
+ resolution: {integrity: sha512-TkEq38COU640mzOKPk4D1oH3FFVvwEtMaKIfw/+F/umVsy7ONWu8PPQH0c11qJ/Jq/zbcQGprXGsT8GcaDSmJg==}
+ hasBin: true
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ to-utf8@0.0.1:
+ resolution: {integrity: sha512-zks18/TWT1iHO3v0vFp5qLKOG27m67ycq/Y7a7cTiRuUNlc4gf3HGnkRgMv0NyhnfTamtkYBJl+YeD1/j07gBQ==}
+
+ tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+
+ ts-api-utils@2.5.0:
+ resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+
+ tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+
+ tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ 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'}
+
+ typed-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-length@1.0.3:
+ resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-byte-offset@1.0.4:
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
+ engines: {node: '>= 0.4'}
+
+ typed-array-length@1.0.7:
+ resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
+ engines: {node: '>= 0.4'}
+
+ typescript@5.9.2:
+ resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ ufo@1.6.4:
+ resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==}
+
+ uint8arrays@3.1.1:
+ resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==}
+
+ ulid@2.4.0:
+ resolution: {integrity: sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==}
+ hasBin: true
+
+ unbox-primitive@1.1.0:
+ resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+ engines: {node: '>= 0.4'}
+
+ uncrypto@0.1.3:
+ resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+
+ undici-types@7.10.0:
+ resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
+
+ undici-types@8.2.0:
+ resolution: {integrity: sha512-uciYZ5yCmf+QJb18kJw10HjquzM7K0z992vWcI+84KeBpTfXT4hfgfGJ5DQbf/mCBPACofkrjvqgcjZfuujjFA==}
+
+ unrs-resolver@1.11.1:
+ resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
+
+ unstorage@1.17.5:
+ resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==}
+ peerDependencies:
+ '@azure/app-configuration': ^1.8.0
+ '@azure/cosmos': ^4.2.0
+ '@azure/data-tables': ^13.3.0
+ '@azure/identity': ^4.6.0
+ '@azure/keyvault-secrets': ^4.9.0
+ '@azure/storage-blob': ^12.26.0
+ '@capacitor/preferences': ^6 || ^7 || ^8
+ '@deno/kv': '>=0.9.0'
+ '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0
+ '@planetscale/database': ^1.19.0
+ '@upstash/redis': ^1.34.3
+ '@vercel/blob': '>=0.27.1'
+ '@vercel/functions': ^2.2.12 || ^3.0.0
+ '@vercel/kv': ^1 || ^2 || ^3
+ aws4fetch: ^1.0.20
+ db0: '>=0.2.1'
+ idb-keyval: ^6.2.1
+ ioredis: ^5.4.2
+ uploadthing: ^7.4.4
+ peerDependenciesMeta:
+ '@azure/app-configuration':
+ optional: true
+ '@azure/cosmos':
+ optional: true
+ '@azure/data-tables':
+ optional: true
+ '@azure/identity':
+ optional: true
+ '@azure/keyvault-secrets':
+ optional: true
+ '@azure/storage-blob':
+ optional: true
+ '@capacitor/preferences':
+ optional: true
+ '@deno/kv':
+ optional: true
+ '@netlify/blobs':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@upstash/redis':
+ optional: true
+ '@vercel/blob':
+ optional: true
+ '@vercel/functions':
+ optional: true
+ '@vercel/kv':
+ optional: true
+ aws4fetch:
+ optional: true
+ db0:
+ optional: true
+ idb-keyval:
+ optional: true
+ ioredis:
+ optional: true
+ uploadthing:
+ optional: true
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ utf-8-validate@6.0.6:
+ resolution: {integrity: sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==, tarball: https://fbinfra555artifactory.jfrog.io/artifactory/api/npm/fireblocks-npm/utf-8-validate/-/utf-8-validate-6.0.6.tgz}
+ engines: {node: '>=6.14.2'}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ uuid@11.1.0:
+ resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
+ hasBin: true
+
+ uuid@11.1.1:
+ resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==}
+ hasBin: true
+
+ uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ 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
+
+ viem@2.31.0:
+ resolution: {integrity: sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+
+ whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+
+ which-boxed-primitive@1.1.1:
+ resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+ engines: {node: '>= 0.4'}
+
+ which-builtin-type@1.2.1:
+ resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
+ engines: {node: '>= 0.4'}
+
+ which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+
+ which-typed-array@1.1.20:
+ resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
+ engines: {node: '>= 0.4'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ ws@7.5.10:
+ resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
+ engines: {node: '>=8.3.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@8.18.2:
+ resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ ws@8.20.1:
+ resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+ zod@4.0.5:
+ resolution: {integrity: sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==}
+
+snapshots:
+
+ '@ably/msgpack-js@0.4.1':
+ dependencies:
+ bops: 1.0.1
+
+ '@adraffy/ens-normalize@1.11.1': {}
+
+ '@alloc/quick-lru@5.2.0': {}
+
+ '@babel/runtime@7.29.2': {}
+
+ '@dynamic-labs-sdk/assert-package-version@1.4.0': {}
+
+ '@dynamic-labs-sdk/client@1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@dynamic-labs-sdk/assert-package-version': 1.4.0
+ '@dynamic-labs-wallet/browser-wallet-client': 0.0.351(@dynamic-labs-wallet/forward-mpc-client@0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6))
+ '@dynamic-labs-wallet/forward-mpc-client': 0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ '@dynamic-labs/sdk-api-core': 0.0.1015
+ '@simplewebauthn/browser': 13.1.0
+ ably: 2.17.1(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6)
+ buffer: 6.0.3
+ eventemitter3: 5.0.1
+ zod: 4.0.5
+ transitivePeerDependencies:
+ - '@dynamic-labs-wallet/primitives'
+ - bufferutil
+ - debug
+ - react
+ - react-dom
+ - utf-8-validate
+
+ '@dynamic-labs-sdk/react-hooks@1.4.0(@dynamic-labs-sdk/client@1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)':
+ dependencies:
+ '@dynamic-labs-sdk/assert-package-version': 1.4.0
+ '@dynamic-labs-sdk/client': 1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6)
+ react: 19.2.6
+
+ '@dynamic-labs-sdk/solana@1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@dynamic-labs-sdk/assert-package-version': 1.4.0
+ '@dynamic-labs-sdk/client': 1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6)
+ '@dynamic-labs-sdk/wallet-connect': 1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@dynamic-labs/sdk-api-core': 0.0.1015
+ '@solana/spl-token': 0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@wallet-standard/app': 1.0.1
+ '@wallet-standard/base': 1.0.1
+ '@wallet-standard/experimental-features': 0.1.1
+ '@wallet-standard/features': 1.0.3
+ '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ bs58: 6.0.0
+ eventemitter3: 5.0.1
+ tweetnacl: 1.0.3
+ zod: 4.0.5
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@dynamic-labs-wallet/primitives'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - bufferutil
+ - db0
+ - debug
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - ioredis
+ - react
+ - react-dom
+ - react-native
+ - react-native-inappbrowser-reborn
+ - react-native-keychain
+ - react-native-passkey
+ - typescript
+ - uploadthing
+ - utf-8-validate
+
+ '@dynamic-labs-sdk/wallet-connect@1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@dynamic-labs-sdk/assert-package-version': 1.4.0
+ '@dynamic-labs-sdk/client': 1.4.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6)
+ '@dynamic-labs/sdk-api-core': 0.0.1015
+ '@walletconnect/sign-client': 2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ '@walletconnect/types': 2.21.8
+ '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ zod: 4.0.5
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@dynamic-labs-wallet/primitives'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - bufferutil
+ - db0
+ - debug
+ - ioredis
+ - react
+ - react-dom
+ - react-native
+ - react-native-inappbrowser-reborn
+ - react-native-keychain
+ - react-native-passkey
+ - typescript
+ - uploadthing
+ - utf-8-validate
+
+ '@dynamic-labs-wallet/browser-wallet-client@0.0.351(@dynamic-labs-wallet/forward-mpc-client@0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@dynamic-labs-wallet/core': 0.0.351(@dynamic-labs-wallet/forward-mpc-client@0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6))
+ '@dynamic-labs/logger': 4.84.0
+ '@dynamic-labs/message-transport': 4.84.0
+ transitivePeerDependencies:
+ - '@dynamic-labs-wallet/forward-mpc-client'
+ - debug
+
+ '@dynamic-labs-wallet/core@0.0.351(@dynamic-labs-wallet/forward-mpc-client@0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@dynamic-labs-wallet/forward-mpc-client': 0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ '@dynamic-labs-wallet/primitives': 0.0.351
+ '@dynamic-labs/sdk-api-core': 0.0.964
+ axios: 1.15.2
+ uuid: 11.1.0
+ transitivePeerDependencies:
+ - debug
+
+ '@dynamic-labs-wallet/forward-mpc-client@0.9.0(@dynamic-labs-wallet/primitives@0.0.351)(bufferutil@4.1.0)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@dynamic-labs-wallet/forward-mpc-shared': 0.7.0(@dynamic-labs-wallet/primitives@0.0.351)
+ '@dynamic-labs-wallet/primitives': 0.0.351
+ '@evervault/wasm-attestation-bindings': 0.3.1
+ '@noble/hashes': 2.2.0
+ eventemitter3: 5.0.4
+ fp-ts: 2.16.11
+ isows: 1.0.7(ws@8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6))
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@dynamic-labs-wallet/forward-mpc-shared@0.7.0(@dynamic-labs-wallet/primitives@0.0.351)':
+ dependencies:
+ '@dynamic-labs-wallet/primitives': 0.0.351
+ '@noble/ciphers': 0.4.1
+ '@noble/hashes': 2.2.0
+ '@noble/post-quantum': 0.5.4
+ fp-ts: 2.16.11
+ io-ts: 2.2.22(fp-ts@2.16.11)
+
+ '@dynamic-labs-wallet/primitives@0.0.351': {}
+
+ '@dynamic-labs/assert-package-version@4.84.0':
+ dependencies:
+ '@dynamic-labs/logger': 4.84.0
+
+ '@dynamic-labs/logger@4.84.0':
+ dependencies:
+ eventemitter3: 5.0.1
+
+ '@dynamic-labs/message-transport@4.84.0':
+ dependencies:
+ '@dynamic-labs/assert-package-version': 4.84.0
+ '@dynamic-labs/logger': 4.84.0
+ '@dynamic-labs/utils': 4.84.0
+ '@vue/reactivity': 3.5.34
+ eventemitter3: 5.0.1
+
+ '@dynamic-labs/sdk-api-core@0.0.1015': {}
+
+ '@dynamic-labs/sdk-api-core@0.0.964': {}
+
+ '@dynamic-labs/sdk-api-core@0.0.985': {}
+
+ '@dynamic-labs/types@4.84.0':
+ dependencies:
+ '@dynamic-labs/assert-package-version': 4.84.0
+ '@dynamic-labs/sdk-api-core': 0.0.985
+
+ '@dynamic-labs/utils@4.84.0':
+ dependencies:
+ '@dynamic-labs/assert-package-version': 4.84.0
+ '@dynamic-labs/logger': 4.84.0
+ '@dynamic-labs/sdk-api-core': 0.0.985
+ '@dynamic-labs/types': 4.84.0
+ buffer: 6.0.3
+ eventemitter3: 5.0.1
+ tldts: 6.0.16
+
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@eslint-community/eslint-utils@4.9.1(eslint@9.34.0(jiti@2.7.0))':
+ dependencies:
+ eslint: 9.34.0(jiti@2.7.0)
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.12.2': {}
+
+ '@eslint/config-array@0.21.2':
+ dependencies:
+ '@eslint/object-schema': 2.1.7
+ debug: 4.4.3
+ minimatch: 3.1.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/config-helpers@0.3.1': {}
+
+ '@eslint/core@0.15.2':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@eslint/eslintrc@3.3.5':
+ dependencies:
+ ajv: 6.15.0
+ debug: 4.4.3
+ espree: 10.4.0
+ globals: 14.0.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.1
+ minimatch: 3.1.5
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@9.34.0': {}
+
+ '@eslint/object-schema@2.1.7': {}
+
+ '@eslint/plugin-kit@0.3.5':
+ dependencies:
+ '@eslint/core': 0.15.2
+ levn: 0.4.1
+
+ '@evervault/wasm-attestation-bindings@0.3.1': {}
+
+ '@humanfs/core@0.19.2':
+ dependencies:
+ '@humanfs/types': 0.15.0
+
+ '@humanfs/node@0.16.8':
+ dependencies:
+ '@humanfs/core': 0.19.2
+ '@humanfs/types': 0.15.0
+ '@humanwhocodes/retry': 0.4.3
+
+ '@humanfs/types@0.15.0': {}
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/retry@0.4.3': {}
+
+ '@img/colour@1.1.0':
+ 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.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.2.4
+ optional: true
+
+ '@img/sharp-libvips-darwin-arm64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-darwin-x64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm@1.2.4':
+ optional: true
+
+ '@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.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-x64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ 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.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.2.4
+ 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.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.2.4
+ 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.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ 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.5':
+ dependencies:
+ '@emnapi/runtime': 1.10.0
+ optional: true
+
+ '@img/sharp-win32-arm64@0.34.5':
+ optional: true
+
+ '@img/sharp-win32-ia32@0.34.5':
+ optional: true
+
+ '@img/sharp-win32-x64@0.34.5':
+ optional: true
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@msgpack/msgpack@3.1.2': {}
+
+ '@napi-rs/wasm-runtime@0.2.12':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.2
+ optional: true
+
+ '@next/env@15.5.9': {}
+
+ '@next/eslint-plugin-next@15.5.2':
+ dependencies:
+ fast-glob: 3.3.1
+
+ '@next/swc-darwin-arm64@15.5.7':
+ optional: true
+
+ '@next/swc-darwin-x64@15.5.7':
+ optional: true
+
+ '@next/swc-linux-arm64-gnu@15.5.7':
+ optional: true
+
+ '@next/swc-linux-arm64-musl@15.5.7':
+ optional: true
+
+ '@next/swc-linux-x64-gnu@15.5.7':
+ optional: true
+
+ '@next/swc-linux-x64-musl@15.5.7':
+ optional: true
+
+ '@next/swc-win32-arm64-msvc@15.5.7':
+ optional: true
+
+ '@next/swc-win32-x64-msvc@15.5.7':
+ optional: true
+
+ '@noble/ciphers@0.4.1': {}
+
+ '@noble/ciphers@1.3.0': {}
+
+ '@noble/curves@1.8.0':
+ dependencies:
+ '@noble/hashes': 1.7.0
+
+ '@noble/curves@1.9.1':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@noble/curves@1.9.2':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@noble/curves@1.9.7':
+ dependencies:
+ '@noble/hashes': 1.8.0
+
+ '@noble/curves@2.0.1':
+ dependencies:
+ '@noble/hashes': 2.0.1
+
+ '@noble/hashes@1.7.0': {}
+
+ '@noble/hashes@1.8.0': {}
+
+ '@noble/hashes@2.0.1': {}
+
+ '@noble/hashes@2.2.0': {}
+
+ '@noble/post-quantum@0.5.4':
+ dependencies:
+ '@noble/curves': 2.0.1
+ '@noble/hashes': 2.0.1
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+
+ '@nolyfill/is-core-module@1.0.39': {}
+
+ '@rtsao/scc@1.1.0': {}
+
+ '@rushstack/eslint-patch@1.16.1': {}
+
+ '@scure/base@1.2.6': {}
+
+ '@scure/bip32@1.7.0':
+ dependencies:
+ '@noble/curves': 1.9.7
+ '@noble/hashes': 1.8.0
+ '@scure/base': 1.2.6
+
+ '@scure/bip39@1.6.0':
+ dependencies:
+ '@noble/hashes': 1.8.0
+ '@scure/base': 1.2.6
+
+ '@simplewebauthn/browser@13.1.0': {}
+
+ '@sindresorhus/is@4.6.0': {}
+
+ '@solana-program/system@0.12.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@solana/kit': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+
+ '@solana-program/token@0.13.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@solana-program/system': 0.12.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))
+ '@solana/kit': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+
+ '@solana/accounts@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/addresses@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/assertions': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/assertions@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/buffer-layout-utils@0.2.0(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ bigint-buffer: 1.1.5
+ bignumber.js: 9.3.1
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@solana/buffer-layout@4.0.1':
+ dependencies:
+ buffer: 6.0.3
+
+ '@solana/codecs-core@2.0.0-rc.1(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.2)
+ typescript: 5.9.2
+
+ '@solana/codecs-core@2.3.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 2.3.0(typescript@5.9.2)
+ typescript: 5.9.2
+
+ '@solana/codecs-core@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.2)
+ typescript: 5.9.2
+
+ '@solana/codecs-data-structures@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.2)
+ typescript: 5.9.2
+
+ '@solana/codecs-numbers@2.3.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 2.3.0(typescript@5.9.2)
+ '@solana/errors': 2.3.0(typescript@5.9.2)
+ typescript: 5.9.2
+
+ '@solana/codecs-numbers@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.2)
+ fastestsmallesttextencoderdecoder: 1.0.22
+ typescript: 5.9.2
+
+ '@solana/codecs-strings@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ fastestsmallesttextencoderdecoder: 1.0.22
+ typescript: 5.9.2
+
+ '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/codecs@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-data-structures': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/fixed-points': 6.9.0(typescript@5.9.2)
+ '@solana/options': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/errors@2.0.0-rc.1(typescript@5.9.2)':
+ dependencies:
+ chalk: 5.6.2
+ commander: 12.1.0
+ typescript: 5.9.2
+
+ '@solana/errors@2.3.0(typescript@5.9.2)':
+ dependencies:
+ chalk: 5.6.2
+ commander: 14.0.3
+ typescript: 5.9.2
+
+ '@solana/errors@6.9.0(typescript@5.9.2)':
+ dependencies:
+ chalk: 5.6.2
+ commander: 14.0.3
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/fast-stable-stringify@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/fixed-points@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/functional@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/instruction-plans@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/instructions': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/promises': 6.9.0(typescript@5.9.2)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transactions': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/instructions@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/keys@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/assertions': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ '@solana/promises': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/kit-plugin-instruction-plan@0.10.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@solana/kit': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+
+ '@solana/kit-plugin-rpc@0.11.1(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@solana/kit': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/kit-plugin-instruction-plan': 0.10.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))
+
+ '@solana/kit-plugin-signer@0.10.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))':
+ dependencies:
+ '@solana/kit': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+
+ '@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@solana/accounts': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/instruction-plans': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/instructions': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/offchain-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/plugin-core': 6.9.0(typescript@5.9.2)
+ '@solana/plugin-interfaces': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/program-client-core': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/programs': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-api': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-parsed-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-subscriptions': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/signers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/subscribable': 6.9.0(typescript@5.9.2)
+ '@solana/sysvars': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transaction-confirmation': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transactions': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - bufferutil
+ - fastestsmallesttextencoderdecoder
+ - utf-8-validate
+
+ '@solana/nominal-types@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/offchain-messages@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-data-structures': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.2)
+ '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 2.0.0-rc.1(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/options@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-data-structures': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/plugin-core@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/plugin-interfaces@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/instruction-plans': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-subscriptions-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/signers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/program-client-core@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/accounts': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/instruction-plans': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/instructions': 6.9.0(typescript@5.9.2)
+ '@solana/plugin-interfaces': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-api': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/signers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/programs@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/promises@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/rpc-api@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-parsed-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-transformers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transactions': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/rpc-parsed-types@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/rpc-spec-types@6.9.0(typescript@5.9.2)':
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/rpc-spec@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/rpc-subscriptions-api@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-subscriptions-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-transformers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transactions': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/rpc-subscriptions-channel-websocket@6.9.0(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-subscriptions-spec': 6.9.0(typescript@5.9.2)
+ '@solana/subscribable': 6.9.0(typescript@5.9.2)
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@solana/rpc-subscriptions-spec@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/promises': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ '@solana/subscribable': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/rpc-subscriptions@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/fast-stable-stringify': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/promises': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-subscriptions-api': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-subscriptions-channel-websocket': 6.9.0(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/rpc-subscriptions-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-transformers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/subscribable': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - bufferutil
+ - fastestsmallesttextencoderdecoder
+ - utf-8-validate
+
+ '@solana/rpc-transformers@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/rpc-transport-http@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ undici-types: 8.2.0
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/rpc-types@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/fixed-points': 6.9.0(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/rpc@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/fast-stable-stringify': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-api': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-spec': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-spec-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-transformers': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-transport-http': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/signers@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/instructions': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ '@solana/offchain-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transactions': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/spl-token@0.4.14(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6))(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@solana/buffer-layout': 4.0.1
+ '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ buffer: 6.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - fastestsmallesttextencoderdecoder
+ - typescript
+ - utf-8-validate
+
+ '@solana/subscribable@6.9.0(typescript@5.9.2)':
+ dependencies:
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+
+ '@solana/subscriptions@0.2.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana-program/token': 0.13.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))
+ '@solana/kit': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/kit-plugin-rpc': 0.11.1(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))
+ '@solana/kit-plugin-signer': 0.10.0(@solana/kit@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6))
+ '@solana/program-client-core': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+ - typescript
+
+ '@solana/sysvars@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/accounts': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-data-structures': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/transaction-confirmation@6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/promises': 6.9.0(typescript@5.9.2)
+ '@solana/rpc': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/rpc-subscriptions': 6.9.0(bufferutil@4.1.0)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@6.0.6)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transactions': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - bufferutil
+ - fastestsmallesttextencoderdecoder
+ - utf-8-validate
+
+ '@solana/transaction-messages@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-data-structures': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/instructions': 6.9.0(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/transactions@6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)':
+ dependencies:
+ '@solana/addresses': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/codecs-core': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-data-structures': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-numbers': 6.9.0(typescript@5.9.2)
+ '@solana/codecs-strings': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/errors': 6.9.0(typescript@5.9.2)
+ '@solana/functional': 6.9.0(typescript@5.9.2)
+ '@solana/instructions': 6.9.0(typescript@5.9.2)
+ '@solana/keys': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/nominal-types': 6.9.0(typescript@5.9.2)
+ '@solana/rpc-types': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ '@solana/transaction-messages': 6.9.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - fastestsmallesttextencoderdecoder
+
+ '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@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.2)
+ agentkeepalive: 4.6.0
+ bn.js: 5.2.3
+ borsh: 0.7.0
+ bs58: 4.0.1
+ buffer: 6.0.3
+ fast-stable-stringify: 1.0.0
+ jayson: 4.3.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ node-fetch: 2.7.0
+ rpc-websockets: 9.3.8
+ superstruct: 2.0.2
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - typescript
+ - utf-8-validate
+
+ '@swc/helpers@0.5.15':
+ dependencies:
+ tslib: 2.8.1
+
+ '@swc/helpers@0.5.21':
+ dependencies:
+ tslib: 2.8.1
+
+ '@szmarczak/http-timer@4.0.6':
+ dependencies:
+ defer-to-connect: 2.0.1
+
+ '@tailwindcss/node@4.2.4':
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ enhanced-resolve: 5.21.0
+ jiti: 2.7.0
+ lightningcss: 1.32.0
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.2.4
+
+ '@tailwindcss/oxide-android-arm64@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.2.4':
+ optional: true
+
+ '@tailwindcss/oxide-wasm32-wasi@4.2.4':
+ optional: true
+
+ '@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.14
+ tailwindcss: 4.2.4
+
+ '@tanstack/query-core@5.100.9': {}
+
+ '@tanstack/react-query@5.100.9(react@19.2.6)':
+ dependencies:
+ '@tanstack/query-core': 5.100.9
+ react: 19.2.6
+
+ '@tybys/wasm-util@0.10.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@types/cacheable-request@6.0.3':
+ dependencies:
+ '@types/http-cache-semantics': 4.2.0
+ '@types/keyv': 3.1.4
+ '@types/node': 24.3.0
+ '@types/responselike': 1.0.3
+
+ '@types/connect@3.4.38':
+ dependencies:
+ '@types/node': 24.3.0
+
+ '@types/estree@1.0.9': {}
+
+ '@types/http-cache-semantics@4.2.0': {}
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/json5@0.0.29': {}
+
+ '@types/keyv@3.1.4':
+ dependencies:
+ '@types/node': 24.3.0
+
+ '@types/node@12.20.55': {}
+
+ '@types/node@24.3.0':
+ dependencies:
+ undici-types: 7.10.0
+
+ '@types/react-dom@19.2.3(@types/react@19.2.14)':
+ dependencies:
+ '@types/react': 19.2.14
+
+ '@types/react@19.2.14':
+ dependencies:
+ csstype: 3.2.3
+
+ '@types/responselike@1.0.3':
+ dependencies:
+ '@types/node': 24.3.0
+
+ '@types/uuid@10.0.0': {}
+
+ '@types/ws@7.4.7':
+ dependencies:
+ '@types/node': 24.3.0
+
+ '@types/ws@8.18.1':
+ dependencies:
+ '@types/node': 24.3.0
+
+ '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.59.2
+ '@typescript-eslint/type-utils': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.59.2
+ eslint: 9.34.0(jiti@2.7.0)
+ ignore: 7.0.5
+ natural-compare: 1.4.0
+ ts-api-utils: 2.5.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.59.2
+ '@typescript-eslint/types': 8.59.2
+ '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.59.2
+ debug: 4.4.3
+ eslint: 9.34.0(jiti@2.7.0)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.59.2(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.9.2)
+ '@typescript-eslint/types': 8.59.2
+ debug: 4.4.3
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@8.59.2':
+ dependencies:
+ '@typescript-eslint/types': 8.59.2
+ '@typescript-eslint/visitor-keys': 8.59.2
+
+ '@typescript-eslint/tsconfig-utils@8.59.2(typescript@5.9.2)':
+ dependencies:
+ typescript: 5.9.2
+
+ '@typescript-eslint/type-utils@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/types': 8.59.2
+ '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ debug: 4.4.3
+ eslint: 9.34.0(jiti@2.7.0)
+ ts-api-utils: 2.5.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@8.59.2': {}
+
+ '@typescript-eslint/typescript-estree@8.59.2(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.59.2(typescript@5.9.2)
+ '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@5.9.2)
+ '@typescript-eslint/types': 8.59.2
+ '@typescript-eslint/visitor-keys': 8.59.2
+ debug: 4.4.3
+ minimatch: 10.2.5
+ semver: 7.7.4
+ tinyglobby: 0.2.16
+ ts-api-utils: 2.5.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0))
+ '@typescript-eslint/scope-manager': 8.59.2
+ '@typescript-eslint/types': 8.59.2
+ '@typescript-eslint/typescript-estree': 8.59.2(typescript@5.9.2)
+ eslint: 9.34.0(jiti@2.7.0)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/visitor-keys@8.59.2':
+ dependencies:
+ '@typescript-eslint/types': 8.59.2
+ eslint-visitor-keys: 5.0.1
+
+ '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-android-arm64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-x64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.2.12
+ optional: true
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ optional: true
+
+ '@vue/reactivity@3.5.34':
+ dependencies:
+ '@vue/shared': 3.5.34
+
+ '@vue/shared@3.5.34': {}
+
+ '@wallet-standard/app@1.0.1':
+ dependencies:
+ '@wallet-standard/base': 1.1.0
+
+ '@wallet-standard/base@1.0.1': {}
+
+ '@wallet-standard/base@1.1.0': {}
+
+ '@wallet-standard/experimental-features@0.1.1':
+ dependencies:
+ '@wallet-standard/base': 1.1.0
+
+ '@wallet-standard/features@1.0.3':
+ dependencies:
+ '@wallet-standard/base': 1.1.0
+
+ '@walletconnect/core@2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)':
+ dependencies:
+ '@walletconnect/heartbeat': 1.2.2
+ '@walletconnect/jsonrpc-provider': 1.0.14
+ '@walletconnect/jsonrpc-types': 1.0.4
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ '@walletconnect/keyvaluestorage': 1.1.1
+ '@walletconnect/logger': 2.1.2
+ '@walletconnect/relay-api': 1.0.11
+ '@walletconnect/relay-auth': 1.1.0
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/time': 1.0.2
+ '@walletconnect/types': 2.21.8
+ '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ '@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/events@1.0.1':
+ dependencies:
+ keyvaluestorage-interface: 1.0.0
+ tslib: 1.14.1
+
+ '@walletconnect/heartbeat@1.2.2':
+ dependencies:
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/time': 1.0.2
+ events: 3.3.0
+
+ '@walletconnect/jsonrpc-provider@1.0.14':
+ dependencies:
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/safe-json': 1.0.2
+ events: 3.3.0
+
+ '@walletconnect/jsonrpc-types@1.0.4':
+ dependencies:
+ events: 3.3.0
+ keyvaluestorage-interface: 1.0.0
+
+ '@walletconnect/jsonrpc-utils@1.0.8':
+ dependencies:
+ '@walletconnect/environment': 1.0.1
+ '@walletconnect/jsonrpc-types': 1.0.4
+ tslib: 1.14.1
+
+ '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.1.0)(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.1.0)(utf-8-validate@6.0.6)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ '@walletconnect/keyvaluestorage@1.1.1':
+ dependencies:
+ '@walletconnect/safe-json': 1.0.2
+ idb-keyval: 6.2.2
+ unstorage: 1.17.5(idb-keyval@6.2.2)
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - db0
+ - ioredis
+ - uploadthing
+
+ '@walletconnect/logger@2.1.2':
+ dependencies:
+ '@walletconnect/safe-json': 1.0.2
+ pino: 7.11.0
+
+ '@walletconnect/relay-api@1.0.11':
+ dependencies:
+ '@walletconnect/jsonrpc-types': 1.0.4
+
+ '@walletconnect/relay-auth@1.1.0':
+ dependencies:
+ '@noble/curves': 1.8.0
+ '@noble/hashes': 1.7.0
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/time': 1.0.2
+ uint8arrays: 3.1.1
+
+ '@walletconnect/safe-json@1.0.2':
+ dependencies:
+ tslib: 1.14.1
+
+ '@walletconnect/sign-client@2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)':
+ dependencies:
+ '@walletconnect/core': 2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/heartbeat': 1.2.2
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/logger': 2.1.2
+ '@walletconnect/time': 1.0.2
+ '@walletconnect/types': 2.21.8
+ '@walletconnect/utils': 2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ events: 3.3.0
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@react-native-async-storage/async-storage'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - bufferutil
+ - db0
+ - ioredis
+ - typescript
+ - uploadthing
+ - utf-8-validate
+ - zod
+
+ '@walletconnect/time@1.0.2':
+ dependencies:
+ tslib: 1.14.1
+
+ '@walletconnect/types@2.21.8':
+ dependencies:
+ '@walletconnect/events': 1.0.1
+ '@walletconnect/heartbeat': 1.2.2
+ '@walletconnect/jsonrpc-types': 1.0.4
+ '@walletconnect/keyvaluestorage': 1.1.1
+ '@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/utils@2.21.8(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)':
+ dependencies:
+ '@msgpack/msgpack': 3.1.2
+ '@noble/ciphers': 1.3.0
+ '@noble/curves': 1.9.2
+ '@noble/hashes': 1.8.0
+ '@scure/base': 1.2.6
+ '@walletconnect/jsonrpc-utils': 1.0.8
+ '@walletconnect/keyvaluestorage': 1.1.1
+ '@walletconnect/relay-api': 1.0.11
+ '@walletconnect/relay-auth': 1.1.0
+ '@walletconnect/safe-json': 1.0.2
+ '@walletconnect/time': 1.0.2
+ '@walletconnect/types': 2.21.8
+ '@walletconnect/window-getters': 1.0.1
+ '@walletconnect/window-metadata': 1.0.1
+ blakejs: 1.2.1
+ bs58: 6.0.0
+ detect-browser: 5.3.0
+ query-string: 7.1.3
+ uint8arrays: 3.1.1
+ viem: 2.31.0(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5)
+ 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/window-getters@1.0.1':
+ dependencies:
+ tslib: 1.14.1
+
+ '@walletconnect/window-metadata@1.0.1':
+ dependencies:
+ '@walletconnect/window-getters': 1.0.1
+ tslib: 1.14.1
+
+ abitype@1.0.8(typescript@5.9.2)(zod@4.0.5):
+ optionalDependencies:
+ typescript: 5.9.2
+ zod: 4.0.5
+
+ abitype@1.2.3(typescript@5.9.2)(zod@4.0.5):
+ optionalDependencies:
+ typescript: 5.9.2
+ zod: 4.0.5
+
+ ably@2.17.1(bufferutil@4.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(utf-8-validate@6.0.6):
+ dependencies:
+ '@ably/msgpack-js': 0.4.1
+ dequal: 2.0.3
+ fastestsmallesttextencoderdecoder: 1.0.22
+ got: 11.8.6
+ ulid: 2.4.0
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ optionalDependencies:
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ acorn-jsx@5.3.2(acorn@8.16.0):
+ dependencies:
+ acorn: 8.16.0
+
+ acorn@8.16.0: {}
+
+ agentkeepalive@4.6.0:
+ dependencies:
+ humanize-ms: 1.2.1
+
+ ajv@6.15.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.2
+
+ argparse@2.0.1: {}
+
+ aria-query@5.3.2: {}
+
+ array-buffer-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ is-array-buffer: 3.0.5
+
+ array-includes@3.1.9:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ is-string: 1.1.1
+ math-intrinsics: 1.1.0
+
+ array.prototype.findlast@1.2.5:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.findlastindex@1.2.6:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flat@1.3.3:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.flatmap@1.3.3:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-shim-unscopables: 1.1.0
+
+ array.prototype.tosorted@1.1.4:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-shim-unscopables: 1.1.0
+
+ arraybuffer.prototype.slice@1.0.4:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
+
+ ast-types-flow@0.0.8: {}
+
+ async-function@1.0.0: {}
+
+ asynckit@0.4.0: {}
+
+ atomic-sleep@1.0.0: {}
+
+ autoprefixer@10.5.0(postcss@8.5.14):
+ dependencies:
+ browserslist: 4.28.2
+ caniuse-lite: 1.0.30001792
+ fraction.js: 5.3.4
+ picocolors: 1.1.1
+ postcss: 8.5.14
+ postcss-value-parser: 4.2.0
+
+ available-typed-arrays@1.0.7:
+ dependencies:
+ possible-typed-array-names: 1.1.0
+
+ axe-core@4.11.4: {}
+
+ axios@1.15.2:
+ dependencies:
+ follow-redirects: 1.16.0
+ form-data: 4.0.5
+ proxy-from-env: 2.1.0
+ transitivePeerDependencies:
+ - debug
+
+ axobject-query@4.1.0: {}
+
+ balanced-match@1.0.2: {}
+
+ balanced-match@4.0.4: {}
+
+ base-x@3.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ base-x@5.0.1: {}
+
+ base64-js@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ baseline-browser-mapping@2.10.27: {}
+
+ bigint-buffer@1.1.5:
+ dependencies:
+ bindings: 1.5.0
+
+ bignumber.js@9.3.1: {}
+
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
+ blakejs@1.2.1: {}
+
+ bn.js@5.2.3: {}
+
+ bops@1.0.1:
+ dependencies:
+ base64-js: 1.0.2
+ to-utf8: 0.0.1
+
+ borsh@0.7.0:
+ dependencies:
+ bn.js: 5.2.3
+ bs58: 4.0.1
+ text-encoding-utf-8: 1.0.2
+
+ brace-expansion@1.1.14:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@5.0.5:
+ dependencies:
+ balanced-match: 4.0.4
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.28.2:
+ dependencies:
+ baseline-browser-mapping: 2.10.27
+ caniuse-lite: 1.0.30001792
+ electron-to-chromium: 1.5.352
+ node-releases: 2.0.38
+ update-browserslist-db: 1.2.3(browserslist@4.28.2)
+
+ bs58@4.0.1:
+ dependencies:
+ base-x: 3.0.11
+
+ bs58@6.0.0:
+ dependencies:
+ base-x: 5.0.1
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bufferutil@4.1.0:
+ dependencies:
+ node-gyp-build: 4.8.4
+ optional: true
+
+ cacheable-lookup@5.0.4: {}
+
+ cacheable-request@7.0.4:
+ dependencies:
+ clone-response: 1.0.3
+ get-stream: 5.2.0
+ http-cache-semantics: 4.2.0
+ keyv: 4.5.4
+ lowercase-keys: 2.0.0
+ normalize-url: 6.1.0
+ responselike: 2.0.1
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.9:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0: {}
+
+ caniuse-lite@1.0.30001792: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chalk@5.6.2: {}
+
+ chokidar@5.0.0:
+ dependencies:
+ readdirp: 5.0.0
+
+ client-only@0.0.1: {}
+
+ clone-response@1.0.3:
+ dependencies:
+ mimic-response: 1.0.1
+
+ clsx@2.1.1: {}
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@12.1.0: {}
+
+ commander@14.0.3: {}
+
+ commander@2.20.3: {}
+
+ concat-map@0.0.1: {}
+
+ cookie-es@1.2.3: {}
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ crossws@0.3.5:
+ dependencies:
+ uncrypto: 0.1.3
+
+ csstype@3.2.3: {}
+
+ damerau-levenshtein@1.0.8: {}
+
+ data-view-buffer@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-length@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ data-view-byte-offset@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+
+ debug@3.2.7:
+ dependencies:
+ ms: 2.1.3
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ decode-uri-component@0.2.2: {}
+
+ decompress-response@6.0.0:
+ dependencies:
+ mimic-response: 3.1.0
+
+ deep-is@0.1.4: {}
+
+ defer-to-connect@2.0.1: {}
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ defu@6.1.7: {}
+
+ delay@5.0.0: {}
+
+ delayed-stream@1.0.0: {}
+
+ dequal@2.0.3: {}
+
+ destr@2.0.5: {}
+
+ detect-browser@5.3.0: {}
+
+ detect-libc@2.1.2: {}
+
+ doctrine@2.1.0:
+ dependencies:
+ esutils: 2.0.3
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ duplexify@4.1.3:
+ dependencies:
+ end-of-stream: 1.4.5
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ stream-shift: 1.0.3
+
+ electron-to-chromium@1.5.352: {}
+
+ emoji-regex@9.2.2: {}
+
+ end-of-stream@1.4.5:
+ dependencies:
+ once: 1.4.0
+
+ enhanced-resolve@5.21.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.3
+
+ es-abstract@1.24.2:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.3
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-negative-zero: 2.0.3
+ is-regex: 1.2.1
+ is-set: 2.0.3
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.4
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ stop-iteration-iterator: 1.1.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.20
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-iterator-helpers@1.3.2:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-set-tostringtag: 2.1.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ iterator.prototype: 1.1.5
+ math-intrinsics: 1.1.0
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.3
+
+ es-shim-unscopables@1.1.0:
+ dependencies:
+ hasown: 2.0.3
+
+ es-to-primitive@1.3.0:
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+
+ es-toolkit@1.39.3: {}
+
+ es6-promise@4.2.8: {}
+
+ es6-promisify@5.0.0:
+ dependencies:
+ es6-promise: 4.2.8
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-config-next@15.5.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2):
+ dependencies:
+ '@next/eslint-plugin-next': 15.5.2
+ '@rushstack/eslint-patch': 1.16.1
+ '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ eslint: 9.34.0(jiti@2.7.0)
+ eslint-import-resolver-node: 0.3.10
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0))
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0))
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.34.0(jiti@2.7.0))
+ eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.7.0))
+ eslint-plugin-react-hooks: 5.2.0(eslint@9.34.0(jiti@2.7.0))
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - eslint-import-resolver-webpack
+ - eslint-plugin-import-x
+ - supports-color
+
+ eslint-import-resolver-node@0.3.10:
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.16.2
+ resolve: 2.0.0-next.6
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0)):
+ dependencies:
+ '@nolyfill/is-core-module': 1.0.39
+ debug: 4.4.3
+ eslint: 9.34.0(jiti@2.7.0)
+ get-tsconfig: 4.14.0
+ is-bun-module: 2.0.0
+ stable-hash: 0.0.5
+ tinyglobby: 0.2.16
+ unrs-resolver: 1.11.1
+ optionalDependencies:
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0))
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)):
+ dependencies:
+ debug: 3.2.7
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ eslint: 9.34.0(jiti@2.7.0)
+ eslint-import-resolver-node: 0.3.10
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.7.0))
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0)):
+ dependencies:
+ '@rtsao/scc': 1.1.0
+ array-includes: 3.1.9
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
+ debug: 3.2.7
+ doctrine: 2.1.0
+ eslint: 9.34.0(jiti@2.7.0)
+ eslint-import-resolver-node: 0.3.10
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.34.0(jiti@2.7.0))
+ hasown: 2.0.3
+ is-core-module: 2.16.2
+ is-glob: 4.0.3
+ minimatch: 3.1.5
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.1
+ semver: 6.3.1
+ string.prototype.trimend: 1.0.9
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.59.2(eslint@9.34.0(jiti@2.7.0))(typescript@5.9.2)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
+ eslint-plugin-jsx-a11y@6.10.2(eslint@9.34.0(jiti@2.7.0)):
+ dependencies:
+ aria-query: 5.3.2
+ array-includes: 3.1.9
+ array.prototype.flatmap: 1.3.3
+ ast-types-flow: 0.0.8
+ axe-core: 4.11.4
+ axobject-query: 4.1.0
+ damerau-levenshtein: 1.0.8
+ emoji-regex: 9.2.2
+ eslint: 9.34.0(jiti@2.7.0)
+ hasown: 2.0.3
+ jsx-ast-utils: 3.3.5
+ language-tags: 1.0.9
+ minimatch: 3.1.5
+ object.fromentries: 2.0.8
+ safe-regex-test: 1.1.0
+ string.prototype.includes: 2.0.1
+
+ eslint-plugin-react-hooks@5.2.0(eslint@9.34.0(jiti@2.7.0)):
+ dependencies:
+ eslint: 9.34.0(jiti@2.7.0)
+
+ eslint-plugin-react@7.37.5(eslint@9.34.0(jiti@2.7.0)):
+ dependencies:
+ array-includes: 3.1.9
+ array.prototype.findlast: 1.2.5
+ array.prototype.flatmap: 1.3.3
+ array.prototype.tosorted: 1.1.4
+ doctrine: 2.1.0
+ es-iterator-helpers: 1.3.2
+ eslint: 9.34.0(jiti@2.7.0)
+ estraverse: 5.3.0
+ hasown: 2.0.3
+ jsx-ast-utils: 3.3.5
+ minimatch: 3.1.5
+ object.entries: 1.1.9
+ object.fromentries: 2.0.8
+ object.values: 1.2.1
+ prop-types: 15.8.1
+ resolve: 2.0.0-next.6
+ semver: 6.3.1
+ string.prototype.matchall: 4.0.12
+ string.prototype.repeat: 1.0.0
+
+ eslint-scope@8.4.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint-visitor-keys@4.2.1: {}
+
+ eslint-visitor-keys@5.0.1: {}
+
+ eslint@9.34.0(jiti@2.7.0):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.7.0))
+ '@eslint-community/regexpp': 4.12.2
+ '@eslint/config-array': 0.21.2
+ '@eslint/config-helpers': 0.3.1
+ '@eslint/core': 0.15.2
+ '@eslint/eslintrc': 3.3.5
+ '@eslint/js': 9.34.0
+ '@eslint/plugin-kit': 0.3.5
+ '@humanfs/node': 0.16.8
+ '@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.4.3
+ '@types/estree': 1.0.9
+ '@types/json-schema': 7.0.15
+ ajv: 6.15.0
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.3
+ escape-string-regexp: 4.0.0
+ eslint-scope: 8.4.0
+ eslint-visitor-keys: 4.2.1
+ espree: 10.4.0
+ esquery: 1.7.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 8.0.0
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ json-stable-stringify-without-jsonify: 1.0.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.5
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ optionalDependencies:
+ jiti: 2.7.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@10.4.0:
+ dependencies:
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
+ eslint-visitor-keys: 4.2.1
+
+ esquery@1.7.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@5.3.0: {}
+
+ esutils@2.0.3: {}
+
+ eventemitter3@5.0.1: {}
+
+ eventemitter3@5.0.4: {}
+
+ events@3.3.0: {}
+
+ eyes@0.1.8: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.1:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fast-redact@3.5.0: {}
+
+ fast-stable-stringify@1.0.0: {}
+
+ fastestsmallesttextencoderdecoder@1.0.22: {}
+
+ fastq@1.20.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fdir@6.5.0(picomatch@4.0.4):
+ optionalDependencies:
+ picomatch: 4.0.4
+
+ file-entry-cache@8.0.0:
+ dependencies:
+ flat-cache: 4.0.1
+
+ file-uri-to-path@1.0.0: {}
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ filter-obj@1.1.0: {}
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@4.0.1:
+ dependencies:
+ flatted: 3.4.2
+ keyv: 4.5.4
+
+ flatted@3.4.2: {}
+
+ follow-redirects@1.16.0: {}
+
+ for-each@0.3.5:
+ dependencies:
+ is-callable: 1.2.7
+
+ form-data@4.0.5:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.3
+ mime-types: 2.1.35
+
+ fp-ts@2.16.11: {}
+
+ fraction.js@5.3.4: {}
+
+ function-bind@1.1.2: {}
+
+ function.prototype.name@1.1.8:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ functions-have-names: 1.2.3
+ hasown: 2.0.3
+ is-callable: 1.2.7
+
+ functions-have-names@1.2.3: {}
+
+ generator-function@2.0.1: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.3
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ get-stream@5.2.0:
+ dependencies:
+ pump: 3.0.4
+
+ get-symbol-description@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+
+ get-tsconfig@4.14.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ globals@14.0.0: {}
+
+ globalthis@1.0.4:
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+
+ gopd@1.2.0: {}
+
+ got@11.8.6:
+ dependencies:
+ '@sindresorhus/is': 4.6.0
+ '@szmarczak/http-timer': 4.0.6
+ '@types/cacheable-request': 6.0.3
+ '@types/responselike': 1.0.3
+ cacheable-lookup: 5.0.4
+ cacheable-request: 7.0.4
+ decompress-response: 6.0.0
+ http2-wrapper: 1.0.3
+ lowercase-keys: 2.0.0
+ p-cancelable: 2.1.1
+ responselike: 2.0.1
+
+ graceful-fs@4.2.11: {}
+
+ h3@1.15.11:
+ dependencies:
+ cookie-es: 1.2.3
+ crossws: 0.3.5
+ defu: 6.1.7
+ destr: 2.0.5
+ iron-webcrypto: 1.2.1
+ node-mock-http: 1.0.4
+ radix3: 1.1.2
+ ufo: 1.6.4
+ uncrypto: 0.1.3
+
+ has-bigints@1.1.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-proto@1.2.0:
+ dependencies:
+ dunder-proto: 1.0.1
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.3:
+ dependencies:
+ function-bind: 1.1.2
+
+ http-cache-semantics@4.2.0: {}
+
+ http2-wrapper@1.0.3:
+ dependencies:
+ quick-lru: 5.1.1
+ resolve-alpn: 1.2.1
+
+ humanize-ms@1.2.1:
+ dependencies:
+ ms: 2.1.3
+
+ idb-keyval@6.2.2: {}
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ ignore@7.0.5: {}
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ inherits@2.0.4: {}
+
+ internal-slot@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.3
+ side-channel: 1.1.0
+
+ io-ts@2.2.22(fp-ts@2.16.11):
+ dependencies:
+ fp-ts: 2.16.11
+
+ iron-webcrypto@1.2.1: {}
+
+ is-array-buffer@3.0.5:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+
+ is-async-function@2.1.1:
+ dependencies:
+ async-function: 1.0.0
+ call-bound: 1.0.4
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-bigint@1.1.0:
+ dependencies:
+ has-bigints: 1.1.0
+
+ is-boolean-object@1.2.2:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-bun-module@2.0.0:
+ dependencies:
+ semver: 7.7.4
+
+ is-callable@1.2.7: {}
+
+ is-core-module@2.16.2:
+ dependencies:
+ hasown: 2.0.3
+
+ is-data-view@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+
+ is-date-object@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-extglob@2.1.1: {}
+
+ is-finalizationregistry@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-generator-function@1.1.2:
+ dependencies:
+ call-bound: 1.0.4
+ generator-function: 2.0.1
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-map@2.0.3: {}
+
+ is-negative-zero@2.0.3: {}
+
+ is-number-object@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-number@7.0.0: {}
+
+ is-regex@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.3
+
+ is-set@2.0.3: {}
+
+ is-shared-array-buffer@1.0.4:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-string@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-tostringtag: 1.0.2
+
+ is-symbol@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
+
+ is-typed-array@1.1.15:
+ dependencies:
+ which-typed-array: 1.1.20
+
+ is-weakmap@2.0.2: {}
+
+ is-weakref@1.1.1:
+ dependencies:
+ call-bound: 1.0.4
+
+ is-weakset@2.0.4:
+ dependencies:
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+
+ isarray@2.0.5: {}
+
+ isexe@2.0.0: {}
+
+ isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6)):
+ dependencies:
+ ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+
+ isows@1.0.7(ws@8.18.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)):
+ dependencies:
+ ws: 8.18.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+
+ isows@1.0.7(ws@8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)):
+ dependencies:
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+
+ iterator.prototype@1.1.5:
+ dependencies:
+ define-data-property: 1.1.4
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ has-symbols: 1.1.0
+ set-function-name: 2.0.2
+
+ jayson@4.3.0(bufferutil@4.1.0)(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.1.0)(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.1.0)(utf-8-validate@6.0.6)
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
+ jiti@2.7.0: {}
+
+ js-tokens@4.0.0: {}
+
+ js-yaml@4.1.1:
+ dependencies:
+ argparse: 2.0.1
+
+ json-buffer@3.0.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ json-stringify-safe@5.0.1: {}
+
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+
+ jsx-ast-utils@3.3.5:
+ dependencies:
+ array-includes: 3.1.9
+ array.prototype.flat: 1.3.3
+ object.assign: 4.1.7
+ object.values: 1.2.1
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ keyvaluestorage-interface@1.0.0: {}
+
+ language-subtag-registry@0.3.23: {}
+
+ language-tags@1.0.9:
+ dependencies:
+ language-subtag-registry: 0.3.23
+
+ levn@0.4.1:
+ dependencies:
+ 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
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.merge@4.6.2: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lowercase-keys@2.0.0: {}
+
+ lru-cache@11.3.6: {}
+
+ lucide-react@0.542.0(react@19.2.6):
+ dependencies:
+ react: 19.2.6
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ math-intrinsics@1.1.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.2
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mimic-response@1.0.1: {}
+
+ mimic-response@3.1.0: {}
+
+ minimatch@10.2.5:
+ dependencies:
+ brace-expansion: 5.0.5
+
+ minimatch@3.1.5:
+ dependencies:
+ brace-expansion: 1.1.14
+
+ minimist@1.2.8: {}
+
+ ms@2.1.3: {}
+
+ multiformats@9.9.0: {}
+
+ nanoid@3.3.12: {}
+
+ napi-postinstall@0.3.4: {}
+
+ natural-compare@1.4.0: {}
+
+ next@15.5.9(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
+ dependencies:
+ '@next/env': 15.5.9
+ '@swc/helpers': 0.5.15
+ caniuse-lite: 1.0.30001792
+ postcss: 8.4.31
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ styled-jsx: 5.1.6(react@19.2.6)
+ optionalDependencies:
+ '@next/swc-darwin-arm64': 15.5.7
+ '@next/swc-darwin-x64': 15.5.7
+ '@next/swc-linux-arm64-gnu': 15.5.7
+ '@next/swc-linux-arm64-musl': 15.5.7
+ '@next/swc-linux-x64-gnu': 15.5.7
+ '@next/swc-linux-x64-musl': 15.5.7
+ '@next/swc-win32-arm64-msvc': 15.5.7
+ '@next/swc-win32-x64-msvc': 15.5.7
+ sharp: 0.34.5
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+
+ node-exports-info@1.6.0:
+ dependencies:
+ array.prototype.flatmap: 1.3.3
+ es-errors: 1.3.0
+ object.entries: 1.1.9
+ semver: 6.3.1
+
+ node-fetch-native@1.6.7: {}
+
+ node-fetch@2.7.0:
+ dependencies:
+ whatwg-url: 5.0.0
+
+ node-gyp-build@4.8.4:
+ optional: true
+
+ node-mock-http@1.0.4: {}
+
+ node-releases@2.0.38: {}
+
+ normalize-path@3.0.0: {}
+
+ normalize-url@6.1.0: {}
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.4: {}
+
+ object-keys@1.1.1: {}
+
+ object.assign@4.1.7:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+
+ object.entries@1.1.9:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ object.fromentries@2.0.8:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-object-atoms: 1.1.1
+
+ object.groupby@1.0.3:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+
+ object.values@1.2.1:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ ofetch@1.5.1:
+ dependencies:
+ destr: 2.0.5
+ node-fetch-native: 1.6.7
+ ufo: 1.6.4
+
+ on-exit-leak-free@0.2.0: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ own-keys@1.0.1:
+ dependencies:
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+
+ ox@0.7.1(typescript@5.9.2)(zod@4.0.5):
+ dependencies:
+ '@adraffy/ens-normalize': 1.11.1
+ '@noble/ciphers': 1.3.0
+ '@noble/curves': 1.9.7
+ '@noble/hashes': 1.8.0
+ '@scure/bip32': 1.7.0
+ '@scure/bip39': 1.6.0
+ abitype: 1.2.3(typescript@5.9.2)(zod@4.0.5)
+ eventemitter3: 5.0.1
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - zod
+
+ p-cancelable@2.1.1: {}
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.2: {}
+
+ picomatch@4.0.4: {}
+
+ pino-abstract-transport@0.5.0:
+ dependencies:
+ duplexify: 4.1.3
+ split2: 4.2.0
+
+ pino-std-serializers@4.0.0: {}
+
+ pino@7.11.0:
+ dependencies:
+ atomic-sleep: 1.0.0
+ fast-redact: 3.5.0
+ on-exit-leak-free: 0.2.0
+ pino-abstract-transport: 0.5.0
+ pino-std-serializers: 4.0.0
+ process-warning: 1.0.0
+ quick-format-unescaped: 4.0.4
+ real-require: 0.1.0
+ safe-stable-stringify: 2.5.0
+ sonic-boom: 2.8.0
+ thread-stream: 0.15.2
+
+ possible-typed-array-names@1.1.0: {}
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.4.31:
+ dependencies:
+ nanoid: 3.3.12
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ postcss@8.5.14:
+ dependencies:
+ nanoid: 3.3.12
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ prelude-ls@1.2.1: {}
+
+ process-warning@1.0.0: {}
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ proxy-from-env@2.1.0: {}
+
+ pump@3.0.4:
+ dependencies:
+ end-of-stream: 1.4.5
+ once: 1.4.0
+
+ punycode@2.3.1: {}
+
+ query-string@7.1.3:
+ dependencies:
+ decode-uri-component: 0.2.2
+ filter-obj: 1.1.0
+ split-on-first: 1.1.0
+ strict-uri-encode: 2.0.0
+
+ queue-microtask@1.2.3: {}
+
+ quick-format-unescaped@4.0.4: {}
+
+ quick-lru@5.1.1: {}
+
+ radix3@1.1.2: {}
+
+ react-dom@19.2.6(react@19.2.6):
+ dependencies:
+ react: 19.2.6
+ scheduler: 0.27.0
+
+ react-is@16.13.1: {}
+
+ react@19.2.6: {}
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readdirp@5.0.0: {}
+
+ real-require@0.1.0: {}
+
+ reflect.getprototypeof@1.0.10:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+
+ regexp.prototype.flags@1.5.4:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+
+ resolve-alpn@1.2.1: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve@2.0.0-next.6:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
+ node-exports-info: 1.6.0
+ object-keys: 1.1.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ responselike@2.0.1:
+ dependencies:
+ lowercase-keys: 2.0.0
+
+ reusify@1.1.0: {}
+
+ rpc-websockets@9.3.8:
+ dependencies:
+ '@swc/helpers': 0.5.21
+ '@types/uuid': 10.0.0
+ '@types/ws': 8.18.1
+ buffer: 6.0.3
+ eventemitter3: 5.0.4
+ uuid: 11.1.1
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 6.0.6
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ safe-array-concat@1.1.4:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+
+ safe-buffer@5.2.1: {}
+
+ safe-push-apply@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+
+ safe-regex-test@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+
+ safe-stable-stringify@2.5.0: {}
+
+ scheduler@0.27.0: {}
+
+ semver@6.3.1: {}
+
+ semver@7.7.4: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
+ set-function-name@2.0.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+
+ set-proto@1.0.0:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+
+ sharp@0.34.5:
+ dependencies:
+ '@img/colour': 1.1.0
+ detect-libc: 2.1.2
+ semver: 7.7.4
+ 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@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ side-channel-list@1.0.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.1
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ sonic-boom@2.8.0:
+ dependencies:
+ atomic-sleep: 1.0.0
+
+ source-map-js@1.2.1: {}
+
+ split-on-first@1.1.0: {}
+
+ split2@4.2.0: {}
+
+ stable-hash@0.0.5: {}
+
+ stop-iteration-iterator@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ internal-slot: 1.1.0
+
+ stream-chain@2.2.5: {}
+
+ stream-json@1.9.1:
+ dependencies:
+ stream-chain: 2.2.5
+
+ stream-shift@1.0.3: {}
+
+ strict-uri-encode@2.0.0: {}
+
+ string.prototype.includes@2.0.1:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+
+ string.prototype.matchall@4.0.12:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ internal-slot: 1.1.0
+ regexp.prototype.flags: 1.5.4
+ set-function-name: 2.0.2
+ side-channel: 1.1.0
+
+ string.prototype.repeat@1.0.0:
+ dependencies:
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+
+ string.prototype.trim@1.2.10:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.2
+ es-object-atoms: 1.1.1
+ has-property-descriptors: 1.0.2
+
+ string.prototype.trimend@1.0.9:
+ dependencies:
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ string.prototype.trimstart@1.0.8:
+ dependencies:
+ call-bind: 1.0.9
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-bom@3.0.0: {}
+
+ strip-json-comments@3.1.1: {}
+
+ styled-jsx@5.1.6(react@19.2.6):
+ dependencies:
+ client-only: 0.0.1
+ react: 19.2.6
+
+ superstruct@2.0.2: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ tailwind-merge@3.5.0: {}
+
+ tailwindcss@4.2.4: {}
+
+ tapable@2.3.3: {}
+
+ text-encoding-utf-8@1.0.2: {}
+
+ thread-stream@0.15.2:
+ dependencies:
+ real-require: 0.1.0
+
+ tinyglobby@0.2.16:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
+
+ tldts-core@6.1.86: {}
+
+ tldts@6.0.16:
+ dependencies:
+ tldts-core: 6.1.86
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ to-utf8@0.0.1: {}
+
+ tr46@0.0.3: {}
+
+ ts-api-utils@2.5.0(typescript@5.9.2):
+ dependencies:
+ typescript: 5.9.2
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@1.14.1: {}
+
+ tslib@2.8.1: {}
+
+ tweetnacl@1.0.3: {}
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ typed-array-buffer@1.0.3:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-length@1.0.3:
+ dependencies:
+ call-bind: 1.0.9
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+
+ typed-array-byte-offset@1.0.4:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+
+ typed-array-length@1.0.7:
+ dependencies:
+ call-bind: 1.0.9
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.1.0
+ reflect.getprototypeof: 1.0.10
+
+ typescript@5.9.2: {}
+
+ ufo@1.6.4: {}
+
+ uint8arrays@3.1.1:
+ dependencies:
+ multiformats: 9.9.0
+
+ ulid@2.4.0: {}
+
+ unbox-primitive@1.1.0:
+ dependencies:
+ call-bound: 1.0.4
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+
+ uncrypto@0.1.3: {}
+
+ undici-types@7.10.0: {}
+
+ undici-types@8.2.0: {}
+
+ unrs-resolver@1.11.1:
+ dependencies:
+ napi-postinstall: 0.3.4
+ optionalDependencies:
+ '@unrs/resolver-binding-android-arm-eabi': 1.11.1
+ '@unrs/resolver-binding-android-arm64': 1.11.1
+ '@unrs/resolver-binding-darwin-arm64': 1.11.1
+ '@unrs/resolver-binding-darwin-x64': 1.11.1
+ '@unrs/resolver-binding-freebsd-x64': 1.11.1
+ '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
+ '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
+ '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
+ '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
+ '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-x64-musl': 1.11.1
+ '@unrs/resolver-binding-wasm32-wasi': 1.11.1
+ '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
+ '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
+ '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
+
+ unstorage@1.17.5(idb-keyval@6.2.2):
+ dependencies:
+ anymatch: 3.1.3
+ chokidar: 5.0.0
+ destr: 2.0.5
+ h3: 1.15.11
+ lru-cache: 11.3.6
+ node-fetch-native: 1.6.7
+ ofetch: 1.5.1
+ ufo: 1.6.4
+ optionalDependencies:
+ idb-keyval: 6.2.2
+
+ update-browserslist-db@1.2.3(browserslist@4.28.2):
+ dependencies:
+ browserslist: 4.28.2
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ utf-8-validate@6.0.6:
+ dependencies:
+ node-gyp-build: 4.8.4
+ optional: true
+
+ util-deprecate@1.0.2: {}
+
+ uuid@11.1.0: {}
+
+ uuid@11.1.1: {}
+
+ uuid@8.3.2: {}
+
+ viem@2.31.0(bufferutil@4.1.0)(typescript@5.9.2)(utf-8-validate@6.0.6)(zod@4.0.5):
+ dependencies:
+ '@noble/curves': 1.9.1
+ '@noble/hashes': 1.8.0
+ '@scure/bip32': 1.7.0
+ '@scure/bip39': 1.6.0
+ abitype: 1.0.8(typescript@5.9.2)(zod@4.0.5)
+ isows: 1.0.7(ws@8.18.2(bufferutil@4.1.0)(utf-8-validate@6.0.6))
+ ox: 0.7.1(typescript@5.9.2)(zod@4.0.5)
+ ws: 8.18.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ optionalDependencies:
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+
+ webidl-conversions@3.0.1: {}
+
+ whatwg-url@5.0.0:
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+
+ which-boxed-primitive@1.1.1:
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+
+ which-builtin-type@1.2.1:
+ dependencies:
+ call-bound: 1.0.4
+ function.prototype.name: 1.1.8
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.1
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.2
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.20
+
+ which-collection@1.0.2:
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.4
+
+ which-typed-array@1.1.20:
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.9
+ call-bound: 1.0.4
+ for-each: 0.3.5
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ wrappy@1.0.2: {}
+
+ ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 6.0.6
+
+ ws@8.18.2(bufferutil@4.1.0)(utf-8-validate@6.0.6):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 6.0.6
+
+ ws@8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6):
+ optionalDependencies:
+ bufferutil: 4.1.0
+ utf-8-validate: 6.0.6
+
+ yocto-queue@0.1.0: {}
+
+ zod@4.0.5: {}
diff --git a/examples/nextjs-solana-subscriptions/postcss.config.mjs b/examples/nextjs-solana-subscriptions/postcss.config.mjs
new file mode 100644
index 0000000..c7bcb4b
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/postcss.config.mjs
@@ -0,0 +1,5 @@
+const config = {
+ plugins: ["@tailwindcss/postcss"],
+};
+
+export default config;
diff --git a/examples/nextjs-solana-subscriptions/src/app/dashboard/page.tsx b/examples/nextjs-solana-subscriptions/src/app/dashboard/page.tsx
new file mode 100644
index 0000000..0ba2621
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/dashboard/page.tsx
@@ -0,0 +1,235 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { Loader2, Wallet, Coins, ClipboardList, Repeat, ArrowDownLeft, ArrowUpCircle } from "lucide-react";
+import { useWallet } from "@/lib/useWallet";
+import { useUser } from "@dynamic-labs-sdk/react-hooks";
+import {
+ useSubscriptionOperations,
+ useMyPlansOperations,
+ useDelegationOperations,
+ useWalletBalances,
+} from "@/lib/subscriptions";
+import { fundWalletWithSol } from "@/lib/useCheckoutFunding";
+import { toast } from "@/lib/toast";
+
+function StatCard({
+ icon: Icon,
+ label,
+ value,
+ loading,
+ iconColor = "text-[#4779FF]",
+ iconBg = "bg-[#4779FF]/10",
+}: {
+ icon: React.ComponentType<{ className?: string }>;
+ label: string;
+ value: string;
+ loading?: boolean;
+ iconColor?: string;
+ iconBg?: string;
+}) {
+ return (
+
+
+ {loading ? (
+
+ ) : (
+
{value}
+ )}
+
+ );
+}
+
+export default function DashboardPage() {
+ const [mounted, setMounted] = useState(false);
+ const [toppingUp, setToppingUp] = useState(false);
+ const [showTopUpModal, setShowTopUpModal] = useState(false);
+ const [topUpAmount, setTopUpAmount] = useState("5");
+ const { loggedIn, solanaAccount } = useWallet();
+ const user = useUser();
+
+ const { solBalance, tokenBalance, loading: loadingBalances } = useWalletBalances();
+ const { userSubscriptions, loadingSubscriptions } = useSubscriptionOperations();
+ const { myPlans, loadingMyPlans } = useMyPlansOperations();
+ const { incomingDelegations, loadingIncoming } = useDelegationOperations();
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) return null;
+
+ const solDisplay = (Number(solBalance) / 1e9).toFixed(4) + " SOL";
+ const usdcDisplay = (Number(tokenBalance) / 1e6).toFixed(2) + " USDC";
+
+ const handleTopUp = async () => {
+ if (!solanaAccount) return;
+ const amount = parseFloat(topUpAmount);
+ if (!amount || amount <= 0) return;
+ setShowTopUpModal(false);
+ setToppingUp(true);
+ try {
+ await fundWalletWithSol(amount, solanaAccount.address, solanaAccount);
+ toast.success(`Topped up ${amount} USDC!`);
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Top up failed";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ } finally {
+ setToppingUp(false);
+ }
+ };
+
+ return (
+
+
+
Dashboard
+
+ Overview of your wallet and on-chain activity.
+
+
+
+ {!loggedIn ? (
+
+
+
Sign in to view your dashboard
+
+ Connect your wallet to see balances and activity.
+
+
+ ) : (
+
+ {/* Account info */}
+
+
+ Account
+
+
+ {user?.email && (
+
+ Email
+ {user.email}
+
+ )}
+ {solanaAccount && (
+
+ Wallet
+ {solanaAccount.address}
+
+ )}
+
+
+
+ {/* Balances */}
+
+
+ Wallet Balances
+
+
+
+
+
+
+
+
+ {loadingBalances ? (
+
+ ) : (
+
{usdcDisplay}
+ )}
+
+
+
+
+ {/* Summary stats */}
+
+
+ Activity Summary
+
+
+
+
+
+
+
+
+ )}
+
+ {showTopUpModal && (
+
+
+
Top Up USDC
+
Swap SOL → USDC via Dynamic. Enter the USD amount to receive.
+
+
+ setTopUpAmount(e.target.value)}
+ className="w-full rounded-lg border border-[#DADADA] px-3 py-2 text-sm text-[#030303] focus:outline-none focus:ring-2 focus:ring-[#4779FF]/30"
+ autoFocus
+ />
+
+
+
+
+
+
+
+ )}
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/delegations/page.tsx b/examples/nextjs-solana-subscriptions/src/app/delegations/page.tsx
new file mode 100644
index 0000000..83a61f4
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/delegations/page.tsx
@@ -0,0 +1,797 @@
+"use client";
+
+import { useState, useEffect } from "react";
+import {
+ Loader2,
+ Plus,
+ Repeat,
+ Lock,
+ ArrowDownLeft,
+ ArrowUpRight,
+ Trash2,
+ Download,
+} from "lucide-react";
+import { useWallet } from "@/lib/useWallet";
+import {
+ useDelegationOperations,
+ type DelegationWithAddress,
+} from "@/lib/subscriptions";
+import { shortenAddress } from "@/lib/utils";
+import { toast } from "@/lib/toast";
+
+// ── Helpers ───────────────────────────────────────────────────────────────────
+
+function formatExpiry(expiryTs: bigint): string {
+ if (expiryTs === 0n) return "No expiry";
+ return new Date(Number(expiryTs) * 1000).toLocaleDateString();
+}
+
+function isDelegationExpired(expiryTs: bigint): boolean {
+ const now = BigInt(Math.floor(Date.now() / 1000));
+ return expiryTs > 0n && expiryTs < now;
+}
+
+function formatUSDC(raw: bigint): string {
+ const whole = raw / 1_000_000n;
+ const frac = raw % 1_000_000n;
+ const fracStr = frac.toString().padStart(6, "0").slice(0, 2);
+ return `${whole.toLocaleString()}.${fracStr} USDC`;
+}
+
+function formatPeriodSeconds(s: bigint): string {
+ const n = Number(s);
+ if (n < 3600) return `${Math.round(n / 60)} min`;
+ if (n < 86400) return `${Math.round(n / 3600)} hr`;
+ if (n < 604800) return `${Math.round(n / 86400)} day`;
+ if (n < 2592000) return `${Math.round(n / 604800)} week`;
+ return `${Math.round(n / 2592000)} month`;
+}
+
+// ── Status badge ──────────────────────────────────────────────────────────────
+
+function StatusBadge({ expired }: { expired: boolean }) {
+ return (
+
+ {expired ? "Expired" : "Active"}
+
+ );
+}
+
+// ── Claim button content ──────────────────────────────────────────────────────
+
+function ClaimButtonContent({
+ isClaiming,
+ nothingToClaim,
+ availableToClaim,
+}: {
+ isClaiming: boolean;
+ nothingToClaim: boolean;
+ availableToClaim: bigint;
+}) {
+ if (isClaiming) return ;
+ if (nothingToClaim) return <>Nothing to claim>;
+ return (
+ <>
+
+ Claim {formatUSDC(availableToClaim)}
+ >
+ );
+}
+
+// ── Create Delegation Dialog ──────────────────────────────────────────────────
+
+const PERIOD_UNITS: Record = {
+ hours: 3600,
+ days: 86400,
+ weeks: 604800,
+ months: 2592000,
+};
+
+function CreateDelegationDialog({
+ open,
+ onOpenChange,
+}: {
+ open: boolean;
+ onOpenChange: (v: boolean) => void;
+}) {
+ const [delegateeAddress, setDelegateeAddress] = useState("");
+ const [kind, setKind] = useState<"fixed" | "recurring">("fixed");
+ const [amountStr, setAmountStr] = useState("");
+ const [expiresDate, setExpiresDate] = useState("");
+ // Recurring fields
+ const [periodValue, setPeriodValue] = useState("1");
+ const [periodUnit, setPeriodUnit] = useState("days");
+
+ const { createFixedMutation, createRecurringMutation } =
+ useDelegationOperations();
+
+ if (!open) return null;
+
+ const handleSubmit = async (e: React.FormEvent) => {
+ e.preventDefault();
+
+ const amountRaw = BigInt(Math.round(parseFloat(amountStr) * 1_000_000));
+ const expiryTs = expiresDate
+ ? BigInt(Math.floor(new Date(expiresDate).getTime() / 1000))
+ : 0n;
+ const nonce = BigInt(Date.now());
+
+ try {
+ if (kind === "fixed") {
+ await createFixedMutation.mutateAsync({
+ delegateeAddress,
+ amount: amountRaw,
+ expiryTs,
+ nonce,
+ });
+ toast.success("Fixed delegation created.");
+ } else {
+ const periodLengthS = BigInt(
+ Math.round(parseFloat(periodValue)) * (PERIOD_UNITS[periodUnit] ?? 86400)
+ );
+ const startTs = BigInt(Math.floor(Date.now() / 1000));
+ await createRecurringMutation.mutateAsync({
+ delegateeAddress,
+ amountPerPeriod: amountRaw,
+ periodLengthS,
+ startTs,
+ expiryTs,
+ nonce,
+ });
+ toast.success("Recurring delegation created.");
+ }
+ onOpenChange(false);
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Failed to create delegation";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ }
+ };
+
+ const isPending =
+ createFixedMutation.isPending || createRecurringMutation.isPending;
+
+ return (
+
+
+
+
+ New Delegation
+
+
+
+
+
+
+
+ );
+}
+
+// ── Outgoing delegation card ──────────────────────────────────────────────────
+
+function OutgoingCard({
+ delegation,
+ myAddress,
+ onRevoke,
+ isRevoking,
+}: {
+ delegation: DelegationWithAddress;
+ myAddress: string;
+ onRevoke: () => void;
+ isRevoking: boolean;
+}) {
+ const delegateeStr = delegation.data.header.delegatee as string;
+ const isSelf = delegateeStr === myAddress;
+ const expired = isDelegationExpired(
+ delegation.kind === "fixed"
+ ? delegation.data.expiryTs
+ : delegation.data.expiryTs
+ );
+
+ return (
+
+
+
+
+ {delegation.kind === "fixed" ? (
+
+ ) : (
+
+ )}
+
+
+
+ {delegation.kind === "fixed" ? "Fixed" : "Recurring"}
+
+
+ To: {shortenAddress(delegateeStr)}
+ {isSelf && (
+ (self)
+ )}
+
+
+
+
+
+
+
+ {delegation.kind === "fixed" ? (
+
+ Amount
+
+ {formatUSDC(delegation.data.amount)}
+
+
+ ) : (
+ <>
+
+ Per period
+
+ {formatUSDC(delegation.data.amountPerPeriod)}
+
+
+
+ Period
+
+ {formatPeriodSeconds(delegation.data.periodLengthS)}
+
+
+ >
+ )}
+
+ Expires
+
+ {formatExpiry(
+ delegation.kind === "fixed"
+ ? delegation.data.expiryTs
+ : delegation.data.expiryTs
+ )}
+
+
+
+
+
+
+ );
+}
+
+// ── Incoming delegation card ──────────────────────────────────────────────────
+
+function IncomingCard({
+ delegation,
+ onClaim,
+ isClaiming,
+}: {
+ delegation: DelegationWithAddress;
+ myAddress: string;
+ onClaim: () => void;
+ isClaiming: boolean;
+}) {
+ const delegatorStr = delegation.data.header.delegator as string;
+ const expired = isDelegationExpired(delegation.data.expiryTs);
+
+ const nowSec = BigInt(Math.floor(Date.now() / 1000));
+ let availableToClaim: bigint;
+ if (delegation.kind === "fixed") {
+ availableToClaim = delegation.data.amount;
+ } else {
+ const periodEnd = delegation.data.currentPeriodStartTs + delegation.data.periodLengthS;
+ if (nowSec >= periodEnd) {
+ availableToClaim = delegation.data.amountPerPeriod;
+ } else {
+ const rem = delegation.data.amountPerPeriod - delegation.data.amountPulledInPeriod;
+ availableToClaim = rem > 0n ? rem : 0n;
+ }
+ }
+ const nothingToClaim = availableToClaim === 0n;
+
+ return (
+
+
+
+
+ {delegation.kind === "fixed" ? (
+
+ ) : (
+
+ )}
+
+
+
+ {delegation.kind === "fixed" ? "Fixed" : "Recurring"}
+
+
+ From: {shortenAddress(delegatorStr)}
+
+
+
+
+
+
+
+
+ Available to claim
+
+ {formatUSDC(availableToClaim)}
+
+
+ {delegation.kind === "recurring" && (
+ <>
+
+ Per period
+
+ {formatUSDC(delegation.data.amountPerPeriod)}
+
+
+
+ Period
+
+ {formatPeriodSeconds(delegation.data.periodLengthS)}
+
+
+ >
+ )}
+
+ Expires
+
+ {formatExpiry(delegation.data.expiryTs)}
+
+
+
+
+
+
+ );
+}
+
+// ── Tab content components ────────────────────────────────────────────────────
+
+function OutgoingTab({
+ loading,
+ delegations,
+ myAddress,
+ revokingAddress,
+ onRevoke,
+ onOpenDialog,
+}: {
+ loading: boolean;
+ delegations: DelegationWithAddress[];
+ myAddress: string;
+ revokingAddress: string | null;
+ onRevoke: (addr: string) => void;
+ onOpenDialog: () => void;
+}) {
+ if (loading) {
+ return (
+
+
+ Loading delegations…
+
+ );
+ }
+
+ if (delegations.length === 0) {
+ return (
+
+
+
No outgoing delegations
+
+ Create a delegation to grant token spending access to another address.
+
+
+
+ );
+ }
+
+ const fixed = delegations.filter((d) => d.kind === "fixed");
+ const recurring = delegations.filter((d) => d.kind === "recurring");
+
+ return (
+
+ {fixed.length > 0 && (
+
+
+ Fixed ({fixed.length})
+
+
+ {fixed.map((d) => (
+ onRevoke(d.address as string)}
+ isRevoking={revokingAddress === (d.address as string)}
+ />
+ ))}
+
+
+ )}
+ {recurring.length > 0 && (
+
+
+ Recurring ({recurring.length})
+
+
+ {recurring.map((d) => (
+ onRevoke(d.address as string)}
+ isRevoking={revokingAddress === (d.address as string)}
+ />
+ ))}
+
+
+ )}
+
+ );
+}
+
+function IncomingTab({
+ loading,
+ delegations,
+ myAddress,
+ claimingAddress,
+ onClaim,
+}: {
+ loading: boolean;
+ delegations: DelegationWithAddress[];
+ myAddress: string;
+ claimingAddress: string | null;
+ onClaim: (d: DelegationWithAddress) => void;
+}) {
+ if (loading) {
+ return (
+
+
+ Loading delegations…
+
+ );
+ }
+
+ if (delegations.length === 0) {
+ return (
+
+
+
No incoming delegations
+
+ Someone needs to delegate to your address first.
+
+
+ );
+ }
+
+ return (
+
+ {delegations.map((d) => (
+ onClaim(d)}
+ isClaiming={claimingAddress === (d.address as string)}
+ />
+ ))}
+
+ );
+}
+
+// ── Main page ─────────────────────────────────────────────────────────────────
+
+export default function DelegationsPage() {
+ const [mounted, setMounted] = useState(false);
+ const [activeTab, setActiveTab] = useState<"outgoing" | "incoming">(
+ "outgoing"
+ );
+ const [dialogOpen, setDialogOpen] = useState(false);
+ const [revokingAddress, setRevokingAddress] = useState(null);
+ const [claimingAddress, setClaimingAddress] = useState(null);
+
+ const { loggedIn, solanaAccount } = useWallet();
+ const {
+ outgoingDelegations,
+ incomingDelegations,
+ loadingOutgoing,
+ loadingIncoming,
+ revokeMutation,
+ claimFixedMutation,
+ claimRecurringMutation,
+ } = useDelegationOperations();
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) return null;
+
+ const myAddress = solanaAccount?.address ?? "";
+
+ const handleRevoke = async (delegationAddress: string) => {
+ setRevokingAddress(delegationAddress);
+ try {
+ await revokeMutation.mutateAsync({ delegationAddress });
+ toast.success("Delegation revoked.");
+ } catch (err) {
+ const msg =
+ err instanceof Error ? err.message : "Failed to revoke delegation";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ } finally {
+ setRevokingAddress(null);
+ }
+ };
+
+ const recurringAvailable = (d: Extract): bigint => {
+ const nowSec = BigInt(Math.floor(Date.now() / 1000));
+ const periodEnd = d.data.currentPeriodStartTs + d.data.periodLengthS;
+ if (nowSec >= periodEnd) return d.data.amountPerPeriod;
+ const rem = d.data.amountPerPeriod - d.data.amountPulledInPeriod;
+ return rem > 0n ? rem : 0n;
+ };
+
+ const handleClaim = async (delegation: DelegationWithAddress) => {
+ const addr = delegation.address as string;
+ setClaimingAddress(addr);
+ try {
+ if (delegation.kind === "fixed") {
+ if (delegation.data.amount === 0n) throw new Error("Delegation fully claimed");
+ await claimFixedMutation.mutateAsync({
+ delegation: delegation as Extract,
+ receiverAddress: myAddress,
+ });
+ } else {
+ const recurringDelegation = delegation as Extract;
+ const available = recurringAvailable(recurringDelegation);
+ await claimRecurringMutation.mutateAsync({
+ delegation: recurringDelegation,
+ receiverAddress: myAddress,
+ amount: available,
+ });
+ }
+ toast.success("Claim successful!");
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Claim failed";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ } finally {
+ setClaimingAddress(null);
+ }
+ };
+
+ return (
+
+ {/* Header */}
+
+
+
Delegations
+
+ Grant and manage token spending delegations.
+
+
+ {loggedIn && (
+
+ )}
+
+
+ {!loggedIn ? (
+
+
+
+ Sign in to manage delegations
+
+
+ Connect your wallet to view and create delegations.
+
+
+ ) : (
+ <>
+ {/* Tabs */}
+
+ {(
+ [
+ { key: "outgoing", label: "Outgoing", icon: ArrowUpRight, count: outgoingDelegations.length },
+ { key: "incoming", label: "Incoming", icon: ArrowDownLeft, count: incomingDelegations.length },
+ ] as const
+ ).map(({ key, label, icon: Icon, count }) => (
+
+ ))}
+
+
+ {activeTab === "outgoing" && (
+
setDialogOpen(true)}
+ />
+ )}
+ {activeTab === "incoming" && (
+
+ )}
+ >
+ )}
+
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/globals.css b/examples/nextjs-solana-subscriptions/src/app/globals.css
new file mode 100644
index 0000000..0b823ce
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/globals.css
@@ -0,0 +1,35 @@
+@import "tailwindcss";
+
+@variant dark (&:where(.dark, .dark *));
+
+@theme {
+ --color-primary: #4779FF;
+ --color-dark: #282828;
+ --color-light: #F9F9F9;
+ --color-border: #DADADA;
+ --color-text-primary: #030303;
+ --color-text-secondary: #606060;
+ --color-active-bg: #E8F0FE;
+ --color-active-text: #1967D2;
+}
+
+@layer base {
+ :root {
+ --background: 249 249 249;
+ --foreground: 3 3 3;
+ --border: 218 218 218;
+ --radius: 0.75rem;
+ }
+
+ html {
+ color-scheme: light;
+ background-color: #F9F9F9;
+ }
+
+ body {
+ background-color: #F9F9F9;
+ color: #030303;
+ font-family: "Roboto", system-ui, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ }
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/layout.tsx b/examples/nextjs-solana-subscriptions/src/app/layout.tsx
new file mode 100644
index 0000000..e4c4657
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/layout.tsx
@@ -0,0 +1,43 @@
+import "./globals.css";
+import type { Metadata } from "next";
+import { Roboto } from "next/font/google";
+import Providers from "@/lib/providers";
+import Footer from "@/components/footer";
+import { Header } from "@/components/header";
+import { Toaster } from "@/components/Toaster";
+
+const roboto = Roboto({
+ subsets: ["latin"],
+ weight: ["300", "400", "500", "700"],
+ display: "swap",
+});
+
+export const metadata: Metadata = {
+ title: "Solana Subscriptions with Dynamic",
+ description:
+ "Manage on-chain recurring payment subscriptions on Solana. Powered by Dynamic's embedded wallets and the Solana Subscriptions program.",
+};
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+
+
+
+
+
+ {children}
+
+
+
+
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/page.tsx b/examples/nextjs-solana-subscriptions/src/app/page.tsx
new file mode 100644
index 0000000..0f42fbd
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/page.tsx
@@ -0,0 +1,352 @@
+"use client";
+
+import { useState, useCallback, useEffect, useRef, useMemo } from "react";
+import { Store, Search, Loader2, X, Clock } from "lucide-react";
+import dynamic from "next/dynamic";
+import { useWallet } from "@/lib/useWallet";
+import { useQuery } from "@tanstack/react-query";
+import { cn, shortenAddress } from "@/lib/utils";
+import { useMerchantSearchOperations, useSubscriptionOperations, PlanStatus } from "@/lib/subscriptions";
+import { PlanCard } from "@/components/PlanCard";
+
+const STORAGE_KEY = "marketplace-recent";
+const MAX_RECENT = 5;
+const MERCHANT_CACHE_KEY = "marketplace-merchant";
+
+type RecentEntry = { address: string; label?: string; ts: number };
+
+function loadRecent(): RecentEntry[] {
+ try {
+ return JSON.parse(localStorage.getItem(STORAGE_KEY) || "[]");
+ } catch {
+ return [];
+ }
+}
+
+function saveRecent(entries: RecentEntry[]) {
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(entries.slice(0, MAX_RECENT)));
+}
+
+function addRecent(addr: string, label?: string) {
+ const entries = loadRecent().filter((e) => e.address !== addr);
+ entries.unshift({ address: addr, label, ts: Date.now() });
+ saveRecent(entries);
+}
+
+function removeRecent(addr: string) {
+ saveRecent(loadRecent().filter((e) => e.address !== addr));
+}
+
+function MarketplaceContent() {
+ const { solanaAccount, loggedIn } = useWallet();
+ const [inputValue, setInputValue] = useState(() => {
+ if (typeof window !== "undefined") {
+ return sessionStorage.getItem(MERCHANT_CACHE_KEY) ?? "";
+ }
+ return "";
+ });
+ const [searchAddress, setSearchAddress] = useState(() => {
+ if (typeof window !== "undefined") {
+ return sessionStorage.getItem(MERCHANT_CACHE_KEY);
+ }
+ return null;
+ });
+ const [showRecent, setShowRecent] = useState(false);
+ const [recent, setRecent] = useState([]);
+ const dropdownRef = useRef(null);
+
+ const { fetchMerchantPlans, networkKey } = useMerchantSearchOperations();
+
+ const {
+ subscribedPlanPdas,
+ cancellingPlanPdas,
+ subscribeMutation,
+ cancelMutation,
+ resumeMutation,
+ getSubscriptionPdaForPlan,
+ getTokenBalance,
+ tokenDecimals,
+ } = useSubscriptionOperations();
+
+ const {
+ data: plans = [],
+ isLoading,
+ isError,
+ } = useQuery({
+ queryKey: ["merchantPlans", searchAddress, networkKey],
+ queryFn: () => fetchMerchantPlans(searchAddress!),
+ enabled: !!searchAddress && !!networkKey,
+ });
+
+ const activePlans = useMemo(() => plans.filter((p) => p.data.status === PlanStatus.Active), [plans]);
+
+ useEffect(() => {
+ setRecent(loadRecent());
+ }, []);
+
+ useEffect(() => {
+ if (!activePlans.length || !searchAddress) return;
+ const label = activePlans
+ .map((p) => {
+ try {
+ return JSON.parse(p.data.data.metadataUri)?.n;
+ } catch {
+ return null;
+ }
+ })
+ .filter(Boolean)
+ .join(", ");
+ addRecent(searchAddress, label || undefined);
+ setRecent(loadRecent());
+ }, [activePlans, searchAddress]);
+
+ useEffect(() => {
+ const handler = (e: MouseEvent) => {
+ if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {
+ setShowRecent(false);
+ }
+ };
+ document.addEventListener("mousedown", handler);
+ return () => document.removeEventListener("mousedown", handler);
+ }, []);
+
+ const refreshRecent = useCallback(() => {
+ setRecent(loadRecent());
+ }, []);
+
+ const handleSearch = useCallback(() => {
+ const trimmed = inputValue.trim();
+ if (trimmed.length > 0 && !/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(trimmed)) {
+ setSearchAddress(null);
+ setShowRecent(false);
+ return;
+ }
+ const addr = trimmed.length > 0 ? trimmed : null;
+ if (addr) sessionStorage.setItem(MERCHANT_CACHE_KEY, addr);
+ else sessionStorage.removeItem(MERCHANT_CACHE_KEY);
+ setSearchAddress(addr);
+ setShowRecent(false);
+ }, [inputValue]);
+
+ const handleSelectRecent = (addr: string) => {
+ setInputValue(addr);
+ sessionStorage.setItem(MERCHANT_CACHE_KEY, addr);
+ setSearchAddress(addr);
+ setShowRecent(false);
+ };
+
+ const handleRemoveRecent = (e: React.MouseEvent, addr: string) => {
+ e.stopPropagation();
+ removeRecent(addr);
+ refreshRecent();
+ };
+
+ const isTransacting = subscribeMutation.isPending || cancelMutation.isPending || resumeMutation.isPending;
+ const hasSearched = searchAddress !== null;
+ const hasResults = activePlans.length > 0;
+
+ return (
+
+ {/* Search box */}
+
+
+ setInputValue(e.target.value)}
+ onKeyDown={(e) => e.key === "Enter" && handleSearch()}
+ onFocus={() => {
+ refreshRecent();
+ const r = loadRecent();
+ if (r.length > 0) setShowRecent(true);
+ }}
+ placeholder="Enter merchant wallet address"
+ className="flex-1 min-w-0 px-4 py-2.5 border border-[#DADADA] rounded-lg text-sm outline-none focus:border-[#4779FF] font-mono bg-white text-[#030303] placeholder-[#606060]"
+ />
+
+
+ {showRecent && recent.length > 0 && (
+
+
+ Recent searches
+
+
+ {recent.map((entry) => (
+
+ ))}
+
+ )}
+
+
+ {/* Loading */}
+ {isLoading && (
+
+
+
+ )}
+
+ {/* Error */}
+ {isError && (
+
+ Failed to fetch plans. Check the address and try again.
+
+ )}
+
+ {/* No results */}
+ {!isLoading && hasSearched && !isError && !hasResults && (
+
+
+
No active plans found for this merchant.
+
+ )}
+
+ {/* Plans grid */}
+ {hasResults && (
+
+ {activePlans.map((plan) => {
+ const planPda = plan.address as string;
+ const isSubscribed = subscribedPlanPdas.has(planPda);
+ const isCancelling = cancellingPlanPdas.has(planPda);
+ return (
+
{ await subscribeMutation.mutateAsync(p); }}
+ onCancel={async (planAddr, subPda) => { await cancelMutation.mutateAsync({ planPda: planAddr, subscriptionPda: subPda }); }}
+ onResume={async (planAddr, subPda) => { await resumeMutation.mutateAsync({ planPda: planAddr, subscriptionPda: subPda }); }}
+ disabled={!loggedIn || !solanaAccount || isTransacting}
+ getSubscriptionPdaForPlan={getSubscriptionPdaForPlan}
+ getTokenBalance={getTokenBalance}
+ tokenDecimals={tokenDecimals}
+ walletAccount={solanaAccount}
+ />
+ );
+ })}
+
+ )}
+
+ {/* Empty state before search */}
+ {!hasSearched && !isLoading && (
+
+
+
Subscription Plans
+
+ Search for a merchant address to browse their subscription plans.
+
+
+ )}
+
+ {!loggedIn && (
+
+
+ Sign in to subscribe to plans.
+
+
+ )}
+
+ );
+}
+
+// Wrapper that resolves the subscription PDA asynchronously for PlanCard
+function PlanCardWithPda({
+ plan, isSubscribed, isCancelling, onSubscribe, onCancel, onResume,
+ disabled, getSubscriptionPdaForPlan, getTokenBalance, tokenDecimals, walletAccount,
+}: {
+ plan: Parameters[0]["plan"];
+ isSubscribed: boolean;
+ isCancelling: boolean;
+ onSubscribe: (plan: Parameters[0]["plan"]) => Promise;
+ onCancel: (planPda: string, subscriptionPda: string) => Promise;
+ onResume: (planPda: string, subscriptionPda: string) => Promise;
+ disabled: boolean;
+ getSubscriptionPdaForPlan: (planPda: string) => Promise;
+ getTokenBalance: (tokenMint: string) => Promise;
+ tokenDecimals: number;
+ walletAccount: Parameters[0]["walletAccount"];
+}) {
+ const [subscriptionPda, setSubscriptionPda] = useState(null);
+
+ useEffect(() => {
+ if (!isSubscribed && !isCancelling) { setSubscriptionPda(null); return; }
+ let cancelled = false;
+ getSubscriptionPdaForPlan(plan.address as string).then((pda) => {
+ if (!cancelled) setSubscriptionPda(pda);
+ });
+ return () => { cancelled = true; };
+ }, [isSubscribed, isCancelling, plan.address, getSubscriptionPdaForPlan]);
+
+ return (
+ { if (subscriptionPda) await onCancel(plan.address as string, subscriptionPda); }}
+ onResume={async () => { if (subscriptionPda) await onResume(plan.address as string, subscriptionPda); }}
+ disabled={disabled}
+ getTokenBalance={getTokenBalance}
+ walletAccount={walletAccount}
+ tokenDecimals={tokenDecimals}
+ />
+ );
+}
+
+export default function MarketplacePage() {
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) return null;
+
+ return (
+
+
+
Marketplace
+
+ Search for a merchant to browse and subscribe to their on-chain subscription plans.
+
+
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/plans/collect/page.tsx b/examples/nextjs-solana-subscriptions/src/app/plans/collect/page.tsx
new file mode 100644
index 0000000..94527d8
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/plans/collect/page.tsx
@@ -0,0 +1,345 @@
+"use client";
+
+import { useState, useEffect, useCallback } from "react";
+import { Loader2, DollarSign, Star, Users } from "lucide-react";
+import { useWallet } from "@/lib/useWallet";
+import { useCollectPaymentsOperations } from "@/lib/subscriptions";
+import { toast } from "@/lib/toast";
+import { parsePlanMeta, formatTokenAmount, formatPeriod, shortenAddress, getTokenInfo } from "@/lib/utils";
+import { ICON_MAP } from "@/lib/plan-constants";
+import type { SubscriptionDelegation } from "@/lib/subscriptions";
+import type { Address } from "@solana/kit";
+
+type Subscriber = {
+ address: string;
+ data: SubscriptionDelegation;
+};
+
+type PlanSubscribers = {
+ planAddress: string;
+ subscribers: Subscriber[];
+ loading: boolean;
+ loaded: boolean;
+};
+
+export default function CollectPage() {
+ const [mounted, setMounted] = useState(false);
+ const [planSubscribers, setPlanSubscribers] = useState>({});
+ const [collectingPlan, setCollectingPlan] = useState(null);
+ const [collectResults, setCollectResults] = useState>({});
+ const { loggedIn } = useWallet();
+
+ const { myPlans, loadingPlans, collectPaymentMutation, fetchPlanSubscribers, tokenMintStr } =
+ useCollectPaymentsOperations();
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ const loadSubscribersForPlan = useCallback(
+ async (planAddress: string) => {
+ setPlanSubscribers((prev) => ({
+ ...prev,
+ [planAddress]: {
+ planAddress,
+ subscribers: prev[planAddress]?.subscribers ?? [],
+ loading: true,
+ loaded: false,
+ },
+ }));
+ try {
+ const subs = await fetchPlanSubscribers(planAddress);
+ setPlanSubscribers((prev) => ({
+ ...prev,
+ [planAddress]: {
+ planAddress,
+ subscribers: subs as Subscriber[],
+ loading: false,
+ loaded: true,
+ },
+ }));
+ } catch {
+ setPlanSubscribers((prev) => ({
+ ...prev,
+ [planAddress]: {
+ planAddress,
+ subscribers: [],
+ loading: false,
+ loaded: true,
+ },
+ }));
+ }
+ },
+ [fetchPlanSubscribers]
+ );
+
+ const handleCollectForPlan = useCallback(
+ async (planAddress: string) => {
+ const planSubs = planSubscribers[planAddress];
+ if (!planSubs || planSubs.subscribers.length === 0) return;
+
+ setCollectingPlan(planAddress);
+ setCollectResults((prev) => ({ ...prev, [planAddress]: "" }));
+
+ let collected = 0;
+ let errors = 0;
+
+ let lastError = "";
+ for (const sub of planSubs.subscribers) {
+ // Only collect from active subscriptions (expiresAtTs === 0n means active)
+ if (sub.data.expiresAtTs !== 0n) continue;
+ try {
+ await collectPaymentMutation.mutateAsync({
+ planAddress,
+ subscriptionAddress: sub.address,
+ delegatorAddress: sub.data.header.delegator as string,
+ amount: sub.data.terms.amount,
+ });
+ collected++;
+ } catch (err) {
+ errors++;
+ lastError = err instanceof Error ? err.message : String(err);
+ }
+ }
+
+ const resultMsg = errors > 0
+ ? `Collected ${collected}, ${errors} failed${lastError ? `: ${lastError.slice(0, 80)}` : ""}`
+ : `Collected ${collected} payment${collected !== 1 ? "s" : ""}`;
+ setCollectResults((prev) => ({ ...prev, [planAddress]: resultMsg }));
+ if (errors > 0) {
+ toast.error(resultMsg);
+ } else {
+ toast.success(resultMsg);
+ }
+ setCollectingPlan(null);
+ },
+ [planSubscribers, collectPaymentMutation]
+ );
+
+ if (!mounted) return null;
+
+ return (
+
+
+
Collect Payments
+
+ Collect recurring payments from your subscribers.
+
+
+
+
+ );
+}
+
+type CollectBodyProps = {
+ loggedIn: boolean;
+ loading: boolean;
+ plans: ReturnType["myPlans"];
+ planSubscribers: Record;
+ collectingPlan: string | null;
+ collectResults: Record;
+ tokenMintStr: string;
+ onLoadSubscribers: (planAddress: string) => void;
+ onCollect: (planAddress: string) => void;
+};
+
+function CollectBody({
+ loggedIn,
+ loading,
+ plans,
+ planSubscribers,
+ collectingPlan,
+ collectResults,
+ tokenMintStr,
+ onLoadSubscribers,
+ onCollect,
+}: CollectBodyProps) {
+ if (!loggedIn) {
+ return (
+
+
+
Sign in to collect payments
+
+ Connect your wallet to manage and collect from your plans.
+
+
+ );
+ }
+
+ if (loading) {
+ return (
+
+
+ Loading plans…
+
+ );
+ }
+
+ if (plans.length === 0) {
+ return (
+
+
+
No plans found
+
+ Create plans in{" "}
+
+ My Plans
+ {" "}
+ to start collecting.
+
+
+ );
+ }
+
+ return (
+
+ {plans.map((plan) => {
+ const planAddress = plan.address as string;
+ const meta = parsePlanMeta(plan.data.data.metadataUri);
+ const planName = meta.n || `Plan #${plan.data.data.planId}`;
+ const PlanIcon = (meta.i && ICON_MAP[meta.i]) || Star;
+ const mint = plan.data.data.mint as string;
+ const token = getTokenInfo(mint || tokenMintStr);
+ const { amount, periodHours } = plan.data.data.terms;
+ const amountFormatted = formatTokenAmount(amount, token.decimals);
+ const periodLabel = formatPeriod(periodHours);
+
+ const planSubs = planSubscribers[planAddress];
+ const activeSubscribers =
+ planSubs?.subscribers.filter((s) => s.data.expiresAtTs === 0n) ?? [];
+ const isCollecting = collectingPlan === planAddress;
+ const collectResult = collectResults[planAddress];
+
+ return (
+
+
+
+
+
+
{planName}
+
+ {amountFormatted} {token.symbol} {periodLabel}
+
+
+
+
+
+ {planSubs?.loaded && (
+
+
+ {activeSubscribers.length} active
+
+ )}
+
+ {!planSubs?.loaded && !planSubs?.loading && (
+
+ )}
+
+ {planSubs?.loading && (
+
+ )}
+
+ {planSubs?.loaded && activeSubscribers.length > 0 && (
+
+ )}
+
+ {planSubs?.loaded && activeSubscribers.length === 0 && (
+
No active subscribers
+ )}
+
+
+
+ {collectResult && (
+
+ )}
+
+ {planSubs?.loaded && planSubs.subscribers.length > 0 && (
+
+
+
+ Subscribers ({planSubs.subscribers.length})
+
+
+ {planSubs.subscribers.slice(0, 5).map((sub) => {
+ const isActive = sub.data.expiresAtTs === 0n;
+ return (
+
+
+ {shortenAddress(sub.data.header.delegator as string)}
+
+
+ {isActive ? "Active" : "Cancelled"}
+
+
+ );
+ })}
+ {planSubs.subscribers.length > 5 && (
+
+ +{planSubs.subscribers.length - 5} more
+
+ )}
+
+
+
+ )}
+
+ );
+ })}
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/plans/page.tsx b/examples/nextjs-solana-subscriptions/src/app/plans/page.tsx
new file mode 100644
index 0000000..81f7128
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/plans/page.tsx
@@ -0,0 +1,237 @@
+"use client";
+
+import { useState, useEffect } from "react";
+import { Plus, Loader2, ClipboardPen, Trash2, Star } from "lucide-react";
+import { useWallet } from "@/lib/useWallet";
+import { useMyPlansOperations } from "@/lib/subscriptions";
+import { CreatePlanDialog } from "@/components/CreatePlanDialog";
+import { parsePlanMeta, formatTokenAmount, formatPeriod, shortenAddress, getTokenInfo } from "@/lib/utils";
+import { ICON_MAP } from "@/lib/plan-constants";
+import { PlanStatus } from "@/lib/subscriptions";
+import { toast } from "@/lib/toast";
+
+type Plans = ReturnType["myPlans"];
+
+function PlansBody({
+ loggedIn,
+ loading,
+ error,
+ plans,
+ deletingAddress,
+ isPendingDelete,
+ onDelete,
+ onOpenDialog,
+}: {
+ loggedIn: boolean;
+ loading: boolean;
+ error: Error | null;
+ plans: Plans;
+ deletingAddress: string | null;
+ isPendingDelete: boolean;
+ onDelete: (planAddress: string) => void;
+ onOpenDialog: () => void;
+}) {
+ if (!loggedIn) {
+ return (
+
+
+
Sign in to manage your plans
+
+ Connect your wallet to create and manage subscription plans.
+
+
+ );
+ }
+
+ if (loading) {
+ return (
+
+
+ Loading plans…
+
+ );
+ }
+
+ if (error) {
+ return (
+
+ Failed to load plans: {error.message}
+
+ );
+ }
+
+ if (plans.length === 0) {
+ return (
+
+
+
No plans yet
+
+ Create your first subscription plan to start collecting recurring payments.
+
+
+
+ );
+ }
+
+ return (
+
+ {plans.map((plan) => {
+ const meta = parsePlanMeta(plan.data.data.metadataUri);
+ const planName = meta.n || `Plan #${plan.data.data.planId}`;
+ const planDesc = meta.d || "";
+ const PlanIcon = (meta.i && ICON_MAP[meta.i]) || Star;
+ const { amount, periodHours } = plan.data.data.terms;
+ const mint = plan.data.data.mint as string;
+ const token = getTokenInfo(mint);
+ const amountFormatted = formatTokenAmount(amount, token.decimals);
+ const periodLabel = formatPeriod(periodHours);
+ const isActive = plan.data.status === PlanStatus.Active;
+ const planAddress = plan.address as string;
+ const isDeleting = deletingAddress === planAddress;
+
+ return (
+
+
+
+
+
+
{planName}
+ {planDesc && (
+
{planDesc}
+ )}
+
+
+
+ {isActive ? "Active" : "Sunset"}
+
+
+
+
+
+ {amountFormatted}{" "}
+ {token.symbol}
+
+
{periodLabel}
+
+
+
+
+ Plan Address
+ {shortenAddress(planAddress)}
+
+ {meta.w && (
+
+ )}
+
+
+
+
+ );
+ })}
+
+ );
+}
+
+export default function PlansPage() {
+ const [mounted, setMounted] = useState(false);
+ const [dialogOpen, setDialogOpen] = useState(false);
+ const [deletingAddress, setDeletingAddress] = useState(null);
+ const { loggedIn } = useWallet();
+
+ const { myPlans, loadingMyPlans, myPlansError, deletePlanMutation } = useMyPlansOperations();
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) return null;
+
+ const handleDelete = async (planAddress: string) => {
+ if (!confirm("Are you sure you want to delete this plan? This cannot be undone.")) return;
+ setDeletingAddress(planAddress);
+ try {
+ await deletePlanMutation.mutateAsync(planAddress);
+ toast.success("Plan deleted.");
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Delete failed";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ } finally {
+ setDeletingAddress(null);
+ }
+ };
+
+ return (
+
+
+
+
My Plans
+
+ Create and manage your subscription plans as a merchant.
+
+
+ {loggedIn && (
+
+ )}
+
+
+
setDialogOpen(true)}
+ />
+
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/app/subscriptions/page.tsx b/examples/nextjs-solana-subscriptions/src/app/subscriptions/page.tsx
new file mode 100644
index 0000000..1784716
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/app/subscriptions/page.tsx
@@ -0,0 +1,225 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { Loader2, RotateCcw, Clock, CheckCircle } from "lucide-react";
+import { useWallet } from "@/lib/useWallet";
+import {
+ useSubscriptionOperations,
+ type EnrichedSubscription,
+ type UserSubscription,
+} from "@/lib/subscriptions";
+import { SubscriptionCard } from "@/components/SubscriptionCard";
+import { parsePlanMeta } from "@/lib/utils";
+import { toast } from "@/lib/toast";
+
+function SubscriptionItem({
+ enriched,
+ onCancel,
+ onResume,
+ isTransacting,
+ isPendingResume,
+}: {
+ enriched: EnrichedSubscription;
+ onCancel: () => Promise;
+ onResume: () => Promise;
+ isTransacting: boolean;
+ isPendingResume: boolean;
+}) {
+ const { sub, planData } = enriched;
+ const isCancelled = sub.data.expiresAtTs > 0n;
+ const planMeta = planData ? parsePlanMeta(planData.data.data.metadataUri) : {};
+ const now = Math.floor(Date.now() / 1000);
+ const canResume =
+ isCancelled &&
+ (sub.data.expiresAtTs === 0n || now < Number(sub.data.expiresAtTs));
+
+ return (
+
+
+ {canResume && (
+
+
+
+ )}
+
+ );
+}
+
+function SubscriptionsBody({
+ loggedIn,
+ loading,
+ error,
+ userSubscriptions,
+ enrichedSubscriptions,
+ isTransacting,
+ isPendingResume,
+ onCancel,
+ onResume,
+}: {
+ loggedIn: boolean;
+ loading: boolean;
+ error: Error | null;
+ userSubscriptions: UserSubscription[];
+ enrichedSubscriptions: EnrichedSubscription[];
+ isTransacting: boolean;
+ isPendingResume: boolean;
+ onCancel: (planPda: string, subscriptionPda: string) => Promise;
+ onResume: (planPda: string, subscriptionPda: string) => Promise;
+}) {
+ if (!loggedIn) {
+ return (
+
+
+
Sign in to view your subscriptions
+
+ Connect your wallet to see your active and cancelled subscriptions.
+
+
+ );
+ }
+
+ if (loading) {
+ return (
+
+
+ Loading subscriptions…
+
+ );
+ }
+
+ if (error) {
+ return (
+
+ Failed to load subscriptions: {error.message}
+
+ );
+ }
+
+ if (userSubscriptions.length === 0) {
+ return (
+
+
+
No subscriptions yet
+
+ Visit the{" "}
+
+ Marketplace
+ {" "}
+ to subscribe to a plan.
+
+
+ );
+ }
+
+ if (enrichedSubscriptions.length > 0) {
+ return (
+
+ {enrichedSubscriptions.map(({ sub, planData }) => (
+ onCancel(sub.data.header.delegatee as string, sub.address)}
+ onResume={() => onResume(sub.data.header.delegatee as string, sub.address)}
+ isTransacting={isTransacting}
+ isPendingResume={isPendingResume}
+ />
+ ))}
+
+ );
+ }
+
+ return (
+
+ {userSubscriptions.map((sub) => (
+ onCancel(sub.data.header.delegatee as string, sub.address)}
+ disabled={isTransacting}
+ />
+ ))}
+
+ );
+}
+
+export default function SubscriptionsPage() {
+ const [mounted, setMounted] = useState(false);
+ const { loggedIn } = useWallet();
+
+ const {
+ userSubscriptions,
+ enrichedSubscriptions,
+ loadingSubscriptions,
+ subscriptionsError,
+ cancelMutation,
+ resumeMutation,
+ } = useSubscriptionOperations();
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) return null;
+
+ const isTransacting = cancelMutation.isPending || resumeMutation.isPending;
+
+ const handleCancel = async (planPda: string, subscriptionPda: string) => {
+ try {
+ await cancelMutation.mutateAsync({ planPda, subscriptionPda });
+ toast.success("Subscription cancelled.");
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Cancel failed";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ }
+ };
+
+ const handleResume = async (planPda: string, subscriptionPda: string) => {
+ try {
+ await resumeMutation.mutateAsync({ planPda, subscriptionPda });
+ toast.success("Subscription resumed!");
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Resume failed";
+ toast.error(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ }
+ };
+
+ return (
+
+
+
My Subscriptions
+
+ View and manage your on-chain subscriptions.
+
+
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/CreatePlanDialog.tsx b/examples/nextjs-solana-subscriptions/src/components/CreatePlanDialog.tsx
new file mode 100644
index 0000000..79671c6
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/CreatePlanDialog.tsx
@@ -0,0 +1,461 @@
+"use client";
+
+import { useState, useMemo, useEffect } from "react";
+import { X, Plus, Loader2 } from "lucide-react";
+import { cn } from "@/lib/utils";
+import { PLAN_ICONS } from "@/lib/plan-constants";
+import { useMyPlansOperations } from "@/lib/subscriptions";
+import { toast } from "@/lib/toast";
+
+const USDC_MULTIPLIER = 1_000_000;
+
+const PLAN_TEMPLATES = [
+ {
+ label: "Trading Bot",
+ icon: "BarChart3",
+ planName: "Trading Bot Pro",
+ description: "Automated crypto trading signals & execution",
+ amount: "49.99",
+ periodValue: "1",
+ periodUnit: "months" as const,
+ website: "https://tradingbot.example.com",
+ },
+ {
+ label: "Crypto News",
+ icon: "Newspaper",
+ planName: "Crypto NFAs Weekly",
+ description: "Alpha calls & market analysis",
+ amount: "19.99",
+ periodValue: "1",
+ periodUnit: "weeks" as const,
+ website: "https://cryptonfas.example.com",
+ },
+ {
+ label: "Cloud Storage",
+ icon: "Cloud",
+ planName: "Cloud Storage 1TB",
+ description: "Decentralized encrypted cloud storage",
+ amount: "4.99",
+ periodValue: "1",
+ periodUnit: "months" as const,
+ website: "https://cloud.example.com",
+ },
+ {
+ label: "Streaming",
+ icon: "Video",
+ planName: "Video Streaming Plus",
+ description: "HD streaming with offline downloads",
+ amount: "14.99",
+ periodValue: "1",
+ periodUnit: "months" as const,
+ website: "https://streaming.example.com",
+ },
+];
+
+interface CreatePlanDialogProps {
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+}
+
+export function CreatePlanDialog({ open, onOpenChange }: CreatePlanDialogProps) {
+ const [planName, setPlanName] = useState("");
+ const [description, setDescription] = useState("");
+ const [selectedIcon, setSelectedIcon] = useState("");
+ const [website, setWebsite] = useState("");
+ const [amount, setAmount] = useState("");
+ const [periodValue, setPeriodValue] = useState("");
+ const [periodUnit, setPeriodUnit] = useState<"hours" | "days" | "weeks" | "months">("days");
+ const [noEndDate, setNoEndDate] = useState(true);
+ const [endDate, setEndDate] = useState("");
+ const [destinations, setDestinations] = useState([]);
+ const [pullers, setPullers] = useState([]);
+ const [error, setError] = useState(null);
+
+ const { createPlanMutation, tokenMintStr } = useMyPlansOperations();
+
+ const UNIT_TO_HOURS = { hours: 1, days: 24, weeks: 168, months: 720 } as const;
+ const periodHours = Number(periodValue) * UNIT_TO_HOURS[periodUnit];
+
+ const metadataJson = useMemo(() => {
+ const meta: Record = { n: planName, d: description };
+ if (selectedIcon) meta.i = selectedIcon;
+ if (website) meta.w = website;
+ return JSON.stringify(meta);
+ }, [planName, description, selectedIcon, website]);
+
+ const metadataBytes = useMemo(() => new TextEncoder().encode(metadataJson).length, [metadataJson]);
+
+ const resetForm = () => {
+ setPlanName("");
+ setDescription("");
+ setSelectedIcon("");
+ setWebsite("");
+ setAmount("");
+ setPeriodValue("");
+ setPeriodUnit("days");
+ setNoEndDate(true);
+ setEndDate("");
+ setDestinations([]);
+ setPullers([]);
+ setError(null);
+ };
+
+ const handleOpenChange = (next: boolean) => {
+ onOpenChange(next);
+ if (!next) resetForm();
+ };
+
+ const applyTemplate = (t: (typeof PLAN_TEMPLATES)[number]) => {
+ setPlanName(t.planName);
+ setDescription(t.description);
+ setSelectedIcon(t.icon);
+ setWebsite(t.website);
+ setAmount(t.amount);
+ setPeriodValue(t.periodValue);
+ setPeriodUnit(t.periodUnit);
+ };
+
+ const addAddress = (list: string[], setList: (v: string[]) => void) => {
+ if (list.length < 4) setList([...list, ""]);
+ };
+
+ const removeAddress = (list: string[], setList: (v: string[]) => void, idx: number) => {
+ setList(list.filter((_, i) => i !== idx));
+ };
+
+ const updateAddress = (
+ list: string[],
+ setList: (v: string[]) => void,
+ idx: number,
+ val: string
+ ) => {
+ const next = [...list];
+ next[idx] = val;
+ setList(next);
+ };
+
+ const isFormValid =
+ planName.length > 0 &&
+ description.length > 0 &&
+ selectedIcon.length > 0 &&
+ Number(amount) > 0 &&
+ periodHours >= 1 &&
+ metadataBytes <= 128 &&
+ tokenMintStr.length > 0;
+
+ const handleSubmit = async () => {
+ if (!tokenMintStr) {
+ setError("No token mint configured. Set NEXT_PUBLIC_TOKEN_MINT in .env.local");
+ return;
+ }
+ setError(null);
+ try {
+ const planId = crypto.getRandomValues(new BigUint64Array(1))[0];
+ const amountInSmallestUnits = BigInt(Math.round(Number(amount) * USDC_MULTIPLIER));
+ const endTsRaw = endDate
+ ? Math.floor(new Date(`${endDate}T12:00:00`).getTime() / 1000)
+ : 0;
+ const endTs = Number.isNaN(endTsRaw) ? 0 : endTsRaw;
+
+ await createPlanMutation.mutateAsync({
+ planId,
+ mint: tokenMintStr,
+ amount: amountInSmallestUnits,
+ periodHours,
+ endTs,
+ destinations,
+ pullers,
+ metadataUri: metadataJson,
+ });
+ toast.success(`Plan "${planName}" created!`);
+ handleOpenChange(false);
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Failed to create plan";
+ const display = msg.length > 200 ? msg.slice(0, 200) + "…" : msg;
+ setError(display);
+ toast.error(display);
+ }
+ };
+
+ if (!open) return null;
+
+ return (
+
+
+ {/* Header */}
+
+
Create Subscription Plan
+
+
+
+ {/* Templates */}
+
+
Quick Templates
+
+ {PLAN_TEMPLATES.map((t) => {
+ const TIcon = PLAN_ICONS.find((i) => i.name === t.icon)?.icon;
+ return (
+
+ );
+ })}
+
+
+
+ {/* Form */}
+
+
+
+
+
+
+ setPlanName(e.target.value)}
+ placeholder="My Subscription"
+ className="px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] text-[#030303]"
+ />
+
+
+
+
+ setDescription(e.target.value)}
+ placeholder="Access to premium features"
+ className="px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] text-[#030303]"
+ />
+
+
+
+
+
+
+
+
+
+ setWebsite(e.target.value)}
+ placeholder="https://example.com"
+ className="px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] text-[#030303]"
+ />
+
+
+
+ 128 ? "text-red-600" : "text-[#606060]"
+ )}
+ >
+ {metadataBytes}/128 bytes
+
+
+
+
+
+
+
+
+
+
+ setAmount(e.target.value)}
+ placeholder="9.99"
+ className="flex-1 px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] text-[#030303]"
+ />
+
+ USDC
+
+
+
+
+
+
+
+ setPeriodValue(e.target.value)}
+ placeholder="30"
+ className="flex-1 px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] text-[#030303]"
+ />
+
+
+
+
+
+
+
+
+
+ {noEndDate ? (
+
+ This plan will not have an end date
+
+ ) : (
+
setEndDate(e.target.value)}
+ className="px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] text-[#030303] bg-white"
+ />
+ )}
+
+
+ {/* Destinations */}
+
+
+ {destinations.map((addr, i) => (
+
+ updateAddress(destinations, setDestinations, i, e.target.value)}
+ placeholder="Solana address"
+ className="flex-1 px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] font-mono text-[#030303]"
+ />
+
+
+ ))}
+ {destinations.length < 4 && (
+
+ )}
+
+ Leave empty to allow any destination at transfer time.
+
+
+
+ {/* Pullers */}
+
+
+ {pullers.map((addr, i) => (
+
+ updateAddress(pullers, setPullers, i, e.target.value)}
+ placeholder="Solana address"
+ className="flex-1 px-3 py-2 text-sm border border-[#DADADA] rounded-lg outline-none focus:border-[#4779FF] font-mono text-[#030303]"
+ />
+
+
+ ))}
+ {pullers.length < 4 && (
+
+ )}
+
+ Leave empty to restrict pulling to plan owner only (recommended).
+
+
+
+
+
+ {/* Footer */}
+
+ {error && (
+
{error}
+ )}
+
+
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/PlanCard.tsx b/examples/nextjs-solana-subscriptions/src/components/PlanCard.tsx
new file mode 100644
index 0000000..78deba8
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/PlanCard.tsx
@@ -0,0 +1,218 @@
+"use client";
+
+import { useState } from "react";
+import { Check, Loader2, Repeat, RotateCcw, Wallet, XCircle } from "lucide-react";
+import { cn, formatTokenAmount, formatPeriod, getTokenInfo, shortenAddress, parsePlanMeta } from "@/lib/utils";
+import { ICON_MAP } from "@/lib/plan-constants";
+import type { PlanWithAddress } from "@/lib/subscriptions";
+import type { SolanaWalletAccount } from "@dynamic-labs-sdk/solana";
+import { fundWalletWithSol } from "@/lib/useCheckoutFunding";
+import { toast } from "@/lib/toast";
+
+interface PlanCardProps {
+ plan: PlanWithAddress;
+ isSubscribed: boolean;
+ isCancelling?: boolean;
+ subscriptionPda: string | null;
+ onSubscribe: (plan: PlanWithAddress) => Promise;
+ onCancel: () => Promise;
+ onResume: () => Promise;
+ getTokenBalance: (tokenMint: string) => Promise;
+ walletAccount: SolanaWalletAccount | null;
+ tokenDecimals: number;
+ disabled?: boolean;
+}
+
+export function PlanCard({
+ plan,
+ isSubscribed,
+ isCancelling = false,
+ subscriptionPda,
+ onSubscribe,
+ onCancel,
+ onResume,
+ getTokenBalance,
+ walletAccount,
+ disabled,
+}: PlanCardProps) {
+ const [loading, setLoading] = useState(false);
+ const [loadingLabel, setLoadingLabel] = useState("Subscribe");
+ const [error, setError] = useState(null);
+ const [alreadyFunded, setAlreadyFunded] = useState(false);
+
+ const { amount, periodHours, createdAt } = plan.data.data.terms;
+ const mint = plan.data.data.mint as string;
+ const planId = plan.data.data.planId;
+ const endTs = plan.data.data.endTs;
+ const metadataUri = plan.data.data.metadataUri;
+
+ const planMeta = parsePlanMeta(metadataUri);
+ const planName = planMeta.n || `Plan #${planId.toString()}`;
+ const planDesc = planMeta.d || "";
+ const PlanIcon = (planMeta.i && ICON_MAP[planMeta.i]) || Repeat;
+ const token = getTokenInfo(mint);
+ const amountFormatted = formatTokenAmount(amount, token.decimals);
+ const periodLabel = formatPeriod(periodHours);
+ const amountUsd = Number(amount) / 10 ** token.decimals;
+ const isActive = !endTs || endTs === 0n;
+
+ const handleSubscribe = async () => {
+ setError(null);
+ setLoading(true);
+ setLoadingLabel("Subscribe");
+ try {
+ const balance = await getTokenBalance(mint);
+ if (!alreadyFunded && balance < amount) {
+ if (!walletAccount) throw new Error("Wallet not connected");
+ setLoadingLabel("Swapping SOL → USDC…");
+ await fundWalletWithSol(amountUsd, walletAccount.address, walletAccount);
+ setAlreadyFunded(true);
+ toast.success("Wallet funded — subscribing…");
+ }
+ setLoadingLabel("Subscribing…");
+ try {
+ await onSubscribe(plan);
+ } catch (err) {
+ // Already subscribed — state was stale, just refresh
+ if (String(err).includes("0x205")) { setAlreadyFunded(false); return; }
+ throw err;
+ }
+ setAlreadyFunded(false);
+ toast.success(`Subscribed to ${planName}!`);
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Transaction failed";
+ const display = msg.length > 120 ? msg.slice(0, 120) + "…" : msg;
+ setError(display);
+ toast.error(display);
+ } finally {
+ setLoading(false);
+ setLoadingLabel("Subscribe");
+ }
+ };
+
+ const handleCancel = async () => {
+ setError(null);
+ setLoading(true);
+ try {
+ await onCancel();
+ toast.success("Subscription cancelled.");
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Transaction failed";
+ const display = msg.length > 120 ? msg.slice(0, 120) + "…" : msg;
+ setError(display);
+ toast.error(display);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+
+
+
+
+
+
{planName}
+
{planDesc || token.symbol}
+
+
+ {isSubscribed && (
+
+
+ Subscribed
+
+ )}
+ {isCancelling && (
+
+
+ Cancelling
+
+ )}
+
+
+
+
+ {amountFormatted}{" "}
+ {token.symbol}
+
+
{periodLabel}
+
+
+
+
+ Token
+ {shortenAddress(mint)}
+
+
+ Period
+ {Number(periodHours)}h
+
+ {metadataUri && metadataUri.startsWith("http") && (
+
+ )}
+ {!isActive && (
+
+ Ends
+ {new Date(Number(endTs) * 1000).toLocaleDateString()}
+
+ )}
+ {createdAt > 0n && (
+
+ Created
+ {new Date(Number(createdAt) * 1000).toLocaleDateString()}
+
+ )}
+
+
+ {error && (
+
{error}
+ )}
+
+ {isSubscribed && (
+
+ )}
+
+ {isCancelling && (
+
+ )}
+
+ {!isSubscribed && !isCancelling && (
+
+ )}
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/SubscriptionCard.tsx b/examples/nextjs-solana-subscriptions/src/components/SubscriptionCard.tsx
new file mode 100644
index 0000000..a729b73
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/SubscriptionCard.tsx
@@ -0,0 +1,140 @@
+"use client";
+
+import { useState } from "react";
+import { Clock, Loader2, XCircle } from "lucide-react";
+import { formatTokenAmount, formatPeriod, getTokenInfo, shortenAddress } from "@/lib/utils";
+import type { UserSubscription } from "@/lib/subscriptions";
+
+interface SubscriptionCardProps {
+ subscription: UserSubscription;
+ onCancel: () => Promise;
+ disabled?: boolean;
+ planName?: string;
+}
+
+export function SubscriptionCard({
+ subscription,
+ onCancel,
+ disabled,
+ planName,
+}: SubscriptionCardProps) {
+ const [loading, setLoading] = useState(false);
+ const [error, setError] = useState(null);
+
+ const { data } = subscription;
+ const planPda = data.header.delegatee as string;
+ const subscriptionPda = subscription.address;
+ const isCancelling = data.expiresAtTs > 0n;
+
+ // Terms are stored in the delegation account as a snapshot of the plan at subscribe time
+ const { amount, periodHours } = data.terms;
+ // Mint is not stored on the delegation — use the configured token mint from env
+ const configuredMint = process.env.NEXT_PUBLIC_TOKEN_MINT ?? "";
+
+ const token = getTokenInfo(configuredMint);
+ const amountFormatted = amount > 0n ? formatTokenAmount(amount, token.decimals) : "—";
+ const periodLabel = periodHours > 0n ? formatPeriod(periodHours) : "";
+
+ const handleCancel = async () => {
+ setError(null);
+ setLoading(true);
+ try {
+ await onCancel();
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Cancellation failed";
+ setError(msg.length > 120 ? msg.slice(0, 120) + "…" : msg);
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ return (
+
+ {/* Header */}
+
+
+
+
+
+
+
+ {planName || "Active Subscription"}
+
+
+ {shortenAddress(subscriptionPda)}
+
+
+
+ {isCancelling ? (
+
+
+ Cancelling
+
+ ) : (
+
+ Active
+
+ )}
+
+
+ {/* Details */}
+
+ {amountFormatted !== "—" && (
+
+ Amount
+
+ {amountFormatted} {token.symbol} {periodLabel}
+
+
+ )}
+
+ Plan
+ {shortenAddress(planPda)}
+
+ {configuredMint && (
+
+ Token
+ {shortenAddress(configuredMint)}
+
+ )}
+ {data.amountPulledInPeriod > 0n && (
+
+ Pulled this period
+
+ {formatTokenAmount(data.amountPulledInPeriod, token.decimals)}{" "}
+ {token.symbol}
+
+
+ )}
+ {isCancelling && data.expiresAtTs > 0n && (
+
+ Expires at
+
+ {new Date(Number(data.expiresAtTs) * 1000).toLocaleString()}
+
+
+ )}
+
+
+ {/* Action */}
+ {error && (
+
+ {error}
+
+ )}
+ {!isCancelling && (
+
+ )}
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/SubscriptionsInterface.tsx b/examples/nextjs-solana-subscriptions/src/components/SubscriptionsInterface.tsx
new file mode 100644
index 0000000..c067cd1
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/SubscriptionsInterface.tsx
@@ -0,0 +1,309 @@
+"use client";
+
+import { useState, useEffect } from "react";
+import { Loader2, Repeat, LayoutList } from "lucide-react";
+import { cn } from "@/lib/utils";
+import { useWallet } from "@/lib/useWallet";
+import { useSubscriptionOperations } from "@/lib/subscriptions";
+import { PlanCard } from "./PlanCard";
+import { SubscriptionCard } from "./SubscriptionCard";
+
+type Tab = "plans" | "subscriptions";
+
+export function SubscriptionsInterface() {
+ const { solanaAccount, loggedIn } = useWallet();
+ const [activeTab, setActiveTab] = useState("plans");
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => setMounted(true), []);
+
+ const {
+ activePlans,
+ userSubscriptions,
+ subscribedPlanPdas,
+ cancellingPlanPdas,
+ loadingPlans,
+ loadingSubscriptions,
+ plansError,
+ subscriptionsError,
+ subscribeMutation,
+ cancelMutation,
+ resumeMutation,
+ merchantAddress,
+ tokenDecimals,
+ getSubscriptionPdaForPlan,
+ getTokenBalance,
+ } = useSubscriptionOperations();
+
+ const isTransacting =
+ subscribeMutation.isPending || cancelMutation.isPending || resumeMutation.isPending;
+
+ const handleSubscribe = async (plan: (typeof activePlans)[0]) => {
+ await subscribeMutation.mutateAsync(plan);
+ };
+
+ const handleCancel = async (planPda: string, subscriptionPda: string) => {
+ await cancelMutation.mutateAsync({ planPda, subscriptionPda });
+ };
+
+ const handleResume = async (planPda: string, subscriptionPda: string) => {
+ await resumeMutation.mutateAsync({ planPda, subscriptionPda });
+ };
+
+ if (!mounted) return null;
+
+ return (
+
+ {/* Page header */}
+
+
+ {/* Auth prompt */}
+ {!loggedIn && (
+
+
+
+
+
Sign in to subscribe
+
+ Connect your wallet to browse plans and manage subscriptions.
+
+
+ )}
+
+ {/* Merchant config warning */}
+ {!merchantAddress && (
+
+
+ Configuration required
+
+
+ Set{" "}
+
+ NEXT_PUBLIC_MERCHANT_ADDRESS
+ {" "}
+ in your{" "}
+
+ .env.local
+ {" "}
+ to display subscription plans.
+
+
+ )}
+
+ {/* Tabs */}
+
+ {(
+ [
+ { key: "plans", label: "Available Plans", Icon: Repeat },
+ { key: "subscriptions", label: "My Subscriptions", Icon: LayoutList },
+ ] as const
+ ).map(({ key, label, Icon }) => (
+
+ ))}
+
+
+ {/* Plans tab */}
+ {activeTab === "plans" && (
+ <>
+ {loadingPlans ? (
+
+
+ Loading plans…
+
+ ) : plansError ? (
+
+ Failed to load plans: {(plansError as Error).message}
+
+ ) : activePlans.length === 0 ? (
+
+ {merchantAddress
+ ? "No active plans found for this merchant."
+ : "Configure a merchant address to see available plans."}
+
+ ) : (
+
+ {activePlans.map((plan) => {
+ const planPda = plan.address as string;
+ const isSubscribed = subscribedPlanPdas.has(planPda);
+ return (
+
+ );
+ })}
+
+ )}
+ >
+ )}
+
+ {/* My subscriptions tab */}
+ {activeTab === "subscriptions" && (
+ <>
+ {!loggedIn ? (
+
+ Sign in to view your subscriptions.
+
+ ) : loadingSubscriptions ? (
+
+
+ Loading subscriptions…
+
+ ) : subscriptionsError ? (
+
+ Failed to load subscriptions: {(subscriptionsError as Error).message}
+
+ ) : userSubscriptions.length === 0 ? (
+
+ You have no subscriptions yet.{" "}
+
+
+ ) : (
+
+ {userSubscriptions.map((sub) => (
+
+ handleCancel(
+ sub.data.header.delegatee as string,
+ sub.address
+ )
+ }
+ disabled={isTransacting}
+ />
+ ))}
+
+ )}
+ >
+ )}
+
+ {/* Global error from mutations */}
+ {(subscribeMutation.error || cancelMutation.error) && (
+
+ {(
+ (subscribeMutation.error || cancelMutation.error) as Error
+ )?.message || "Transaction failed"}
+
+ )}
+
+ );
+}
+
+// Wrapper that resolves the subscription PDA asynchronously for PlanCard
+function PlanCardWithPda({
+ plan,
+ isSubscribed,
+ isCancelling,
+ onSubscribe,
+ onCancel,
+ onResume,
+ disabled,
+ getSubscriptionPdaForPlan,
+ getTokenBalance,
+ tokenDecimals,
+ walletAccount,
+}: {
+ plan: Parameters[0]["plan"];
+ isSubscribed: boolean;
+ isCancelling: boolean;
+ onSubscribe: (plan: Parameters[0]["plan"]) => Promise;
+ onCancel: (planPda: string, subscriptionPda: string) => Promise;
+ onResume: (planPda: string, subscriptionPda: string) => Promise;
+ disabled: boolean;
+ getSubscriptionPdaForPlan: (planPda: string) => Promise;
+ getTokenBalance: (tokenMint: string) => Promise;
+ tokenDecimals: number;
+ walletAccount: Parameters[0]["walletAccount"];
+}) {
+ const [subscriptionPda, setSubscriptionPda] = useState(null);
+
+ useEffect(() => {
+ if (!isSubscribed && !isCancelling) {
+ setSubscriptionPda(null);
+ return;
+ }
+ let cancelled = false;
+ getSubscriptionPdaForPlan(plan.address as string).then((pda) => {
+ if (!cancelled) setSubscriptionPda(pda);
+ });
+ return () => { cancelled = true; };
+ }, [isSubscribed, isCancelling, plan.address, getSubscriptionPdaForPlan]);
+
+ return (
+ { if (subscriptionPda) await onCancel(plan.address as string, subscriptionPda); }}
+ onResume={async () => { if (subscriptionPda) await onResume(plan.address as string, subscriptionPda); }}
+ disabled={disabled}
+ getTokenBalance={getTokenBalance}
+ walletAccount={walletAccount}
+ tokenDecimals={tokenDecimals}
+ />
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/Toaster.tsx b/examples/nextjs-solana-subscriptions/src/components/Toaster.tsx
new file mode 100644
index 0000000..272dac5
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/Toaster.tsx
@@ -0,0 +1,44 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { CheckCircle, XCircle, X } from "lucide-react";
+import { toast, type ToastItem } from "@/lib/toast";
+
+export function Toaster() {
+ const [toasts, setToasts] = useState([]);
+
+ useEffect(() => {
+ const unsub = toast.subscribe(setToasts);
+ return () => { unsub(); };
+ }, []);
+
+ if (toasts.length === 0) return null;
+
+ return (
+
+ {toasts.map((t) => (
+
+ {t.type === "success" ? (
+
+ ) : (
+
+ )}
+ {t.message}
+
+
+ ))}
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/dynamic/dynamic-button.tsx b/examples/nextjs-solana-subscriptions/src/components/dynamic/dynamic-button.tsx
new file mode 100644
index 0000000..24fbe5a
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/dynamic/dynamic-button.tsx
@@ -0,0 +1,340 @@
+"use client";
+
+import { useState, useCallback, useRef, useEffect } from "react";
+import {
+ getAvailableWalletProvidersData,
+ connectAndVerifyWithWalletProvider,
+ sendEmailOTP,
+ verifyOTP,
+ authenticateWithSocial,
+ type WalletProviderData,
+ type OTPVerification,
+} from "@dynamic-labs-sdk/client";
+import { exportWaasPrivateKey } from "@dynamic-labs-sdk/client/waas";
+import { useWallet } from "@/lib/useWallet";
+import { dynamicClient } from "@/lib/dynamic";
+import { shortenAddress } from "@/lib/utils";
+import { KeyRound } from "lucide-react";
+
+function GoogleIcon() {
+ return (
+
+ );
+}
+
+function EmailIcon() {
+ return (
+
+ );
+}
+
+function WalletIcon() {
+ return (
+
+ );
+}
+
+const primaryBtn =
+ "w-full flex items-center gap-3 px-4 py-2.5 rounded-lg text-sm font-medium transition-colors bg-[#4779FF] text-white hover:bg-[#3366ee] disabled:opacity-50 disabled:cursor-not-allowed";
+const outlineBtn =
+ "w-full flex items-center gap-3 px-4 py-2.5 rounded-lg text-sm font-medium transition-colors bg-white border border-[#DADADA] text-[#030303] hover:bg-[#F9F9F9] disabled:opacity-50 disabled:cursor-not-allowed";
+
+export default function DynamicButton() {
+ const { solanaAccount, loggedIn, disconnect, ensureSolanaWallet } = useWallet();
+ const [open, setOpen] = useState(false);
+ const [view, setView] = useState<"menu" | "email" | "otp" | "wallet" | "export">("menu");
+ const [email, setEmail] = useState("");
+ const [otp, setOtp] = useState("");
+ const [otpVerification, setOtpVerification] = useState(null);
+ const [loading, setLoading] = useState(false);
+ const [error, setError] = useState(null);
+ const panelRef = useRef(null);
+ const exportContainerRef = useRef(null);
+ const [exportPassword, setExportPassword] = useState("");
+ const [exportRevealed, setExportRevealed] = useState(false);
+
+ useEffect(() => {
+ if (!open) return;
+ function handler(e: MouseEvent) {
+ if (panelRef.current && !panelRef.current.contains(e.target as Node)) {
+ setOpen(false);
+ setView("menu");
+ setError(null);
+ }
+ }
+ document.addEventListener("mousedown", handler);
+ return () => document.removeEventListener("mousedown", handler);
+ }, [open]);
+
+ const reset = () => {
+ setView("menu");
+ setEmail("");
+ setOtp("");
+ setOtpVerification(null);
+ setError(null);
+ setLoading(false);
+ setExportPassword("");
+ setExportRevealed(false);
+ };
+
+ const handleExportKey = useCallback(async () => {
+ if (!exportContainerRef.current || !solanaAccount) return;
+ setLoading(true);
+ setError(null);
+ try {
+ await exportWaasPrivateKey(
+ { displayContainer: exportContainerRef.current, password: exportPassword, walletAccount: solanaAccount },
+ dynamicClient
+ );
+ setExportRevealed(true);
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "Export failed");
+ } finally {
+ setLoading(false);
+ }
+ }, [exportPassword, solanaAccount]);
+
+ const handleSendOTP = useCallback(async (e: React.FormEvent) => {
+ e.preventDefault();
+ setLoading(true);
+ setError(null);
+ try {
+ const verification = await sendEmailOTP({ email }, dynamicClient);
+ setOtpVerification(verification);
+ setView("otp");
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "Failed to send OTP");
+ } finally {
+ setLoading(false);
+ }
+ }, [email]);
+
+ const handleVerifyOTP = useCallback(async (e: React.FormEvent) => {
+ e.preventDefault();
+ if (!otpVerification) return;
+ setLoading(true);
+ setError(null);
+ try {
+ await verifyOTP({ otpVerification, verificationToken: otp }, dynamicClient);
+ await ensureSolanaWallet();
+ setOpen(false);
+ reset();
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : "Invalid code";
+ setError(msg.toLowerCase().includes("unauthorized")
+ ? "Verification failed. Please request a new code and try again."
+ : msg);
+ } finally {
+ setLoading(false);
+ }
+ }, [otpVerification, otp, ensureSolanaWallet]);
+
+ const handleGoogle = useCallback(async () => {
+ setLoading(true);
+ setError(null);
+ try {
+ await authenticateWithSocial(
+ { provider: "google", redirectUrl: typeof window !== "undefined" ? window.location.href : "" },
+ dynamicClient
+ );
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "Google sign-in failed");
+ setLoading(false);
+ }
+ }, []);
+
+ const getSolanaProviders = (): WalletProviderData[] =>
+ getAvailableWalletProvidersData(dynamicClient).filter((p) => p.chain === "SOL");
+
+ const handleConnectWallet = useCallback(async (providerKey: string) => {
+ setLoading(true);
+ setError(null);
+ try {
+ await connectAndVerifyWithWalletProvider({ walletProviderKey: providerKey }, dynamicClient);
+ await ensureSolanaWallet();
+ setOpen(false);
+ reset();
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "Connection failed");
+ } finally {
+ setLoading(false);
+ }
+ }, [ensureSolanaWallet]);
+
+ if (loggedIn && solanaAccount) {
+ return (
+
+
+
+ {open && (
+
+ {view !== "export" && (
+ <>
+
+
Connected
+
{solanaAccount.address}
+
+
+
+
+
+ >
+ )}
+ {view === "export" && (
+
+
+
+ {!exportRevealed && (
+ <>
+
setExportPassword(e.target.value)} placeholder="Enter your password" className="w-full text-sm rounded-lg px-3 py-2 outline-none focus:ring-2 focus:ring-[#4779FF]" style={{ border: "1px solid #DADADA", background: "#F9F9F9" }} />
+ {error &&
{error}
}
+
+ >
+ )}
+
+
+ )}
+
+ )}
+
+ );
+ }
+
+ return (
+
+
+
+ {open && (
+
+ {view === "menu" && (
+
+
Sign in to Subscriptions
+
+
+ {getSolanaProviders().length > 0 && (
+ <>
+
+
+ >
+ )}
+ {error &&
{error}
}
+
+ )}
+
+ {view === "email" && (
+
+ )}
+
+ {view === "otp" && (
+
+ )}
+
+ {view === "wallet" && (
+
+
+
Choose a Solana wallet
+ {getSolanaProviders().length === 0 ? (
+
No Solana wallets detected. Install Phantom or another Solana wallet.
+ ) : (
+ getSolanaProviders().map((provider) => (
+
+ ))
+ )}
+ {error &&
{error}
}
+
+ )}
+
+ )}
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/dynamic/logo.tsx b/examples/nextjs-solana-subscriptions/src/components/dynamic/logo.tsx
new file mode 100644
index 0000000..4f45d15
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/dynamic/logo.tsx
@@ -0,0 +1,59 @@
+interface DynamicLogoProps {
+ width?: number;
+ height?: number;
+ className?: string;
+}
+
+export default function DynamicLogo({
+ width = 150,
+ height = 30,
+ className = "text-[#141839] dark:text-white",
+}: DynamicLogoProps) {
+ return (
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/footer.tsx b/examples/nextjs-solana-subscriptions/src/components/footer.tsx
new file mode 100644
index 0000000..24b4670
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/footer.tsx
@@ -0,0 +1,44 @@
+import DynamicLogo from "./dynamic/logo";
+
+interface FooterProps {
+ bottomLinks?: { text: string; url: string }[];
+}
+
+export default function Footer({
+ bottomLinks = [
+ {
+ text: "GitHub",
+ url: "https://github.com/dynamic-labs/examples/tree/main/examples/nextjs-solana-subscriptions",
+ },
+ { text: "Docs", url: "https://docs.dynamic.xyz" },
+ { text: "Dashboard", url: "https://app.dynamic.xyz" },
+ { text: "Support", url: "https://www.dynamic.xyz/join-slack" },
+ ],
+}: FooterProps) {
+ return (
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/header.tsx b/examples/nextjs-solana-subscriptions/src/components/header.tsx
new file mode 100644
index 0000000..e4bd754
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/header.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import Link from "next/link";
+import dynamic from "next/dynamic";
+import DynamicLogo from "./dynamic/logo";
+import { Nav } from "./nav";
+
+const DynamicButton = dynamic(() => import("./dynamic/dynamic-button"), {
+ ssr: false,
+});
+
+export function Header() {
+ return (
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/components/nav.tsx b/examples/nextjs-solana-subscriptions/src/components/nav.tsx
new file mode 100644
index 0000000..096caad
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/components/nav.tsx
@@ -0,0 +1,40 @@
+"use client";
+
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+import { cn } from "@/lib/utils";
+
+const navLinks = [
+ { href: "/", label: "Marketplace" },
+ { href: "/subscriptions", label: "Subscriptions" },
+ { href: "/plans", label: "My Plans" },
+ { href: "/plans/collect", label: "Collect" },
+ { href: "/delegations", label: "Delegations" },
+ { href: "/dashboard", label: "Dashboard" },
+];
+
+export function Nav() {
+ const pathname = usePathname();
+
+ return (
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/dynamic.ts b/examples/nextjs-solana-subscriptions/src/lib/dynamic.ts
new file mode 100644
index 0000000..bc164a6
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/dynamic.ts
@@ -0,0 +1,26 @@
+import {
+ createDynamicClient,
+ getActiveNetworkData,
+ initializeClient,
+} from "@dynamic-labs-sdk/client";
+import { addSolanaExtension } from "@dynamic-labs-sdk/solana";
+import { createSolanaRpc } from "@solana/kit";
+import type { SolanaWalletAccount } from "@dynamic-labs-sdk/solana";
+
+export const dynamicClient = createDynamicClient({
+ autoInitialize: false,
+ environmentId: process.env.NEXT_PUBLIC_DYNAMIC_ENV_ID!,
+ metadata: {
+ name: "Solana Subscriptions",
+ },
+});
+
+addSolanaExtension();
+void initializeClient(dynamicClient);
+
+// Creates a kit v2 RPC pointed at the same endpoint the WaaS provider uses.
+export async function getKitRpc(walletAccount: SolanaWalletAccount) {
+ const { networkData } = await getActiveNetworkData({ walletAccount }, dynamicClient);
+ if (!networkData) throw new Error("Could not determine active Solana network");
+ return createSolanaRpc(networkData.rpcUrls.http[0]);
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/plan-constants.ts b/examples/nextjs-solana-subscriptions/src/lib/plan-constants.ts
new file mode 100644
index 0000000..745f6b0
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/plan-constants.ts
@@ -0,0 +1,57 @@
+import {
+ BarChart3,
+ Newspaper,
+ Gamepad2,
+ Palette,
+ Music,
+ Video,
+ Cloud,
+ Shield,
+ Zap,
+ Star,
+ Globe,
+ Code,
+ BookOpen,
+ Camera,
+ Rocket,
+ Heart,
+} from "lucide-react";
+import type { LucideIcon } from "lucide-react";
+
+export const PLAN_ICONS = [
+ { name: "BarChart3", label: "Finance", icon: BarChart3 },
+ { name: "Newspaper", label: "News", icon: Newspaper },
+ { name: "Gamepad2", label: "Gaming", icon: Gamepad2 },
+ { name: "Palette", label: "Art/NFTs", icon: Palette },
+ { name: "Music", label: "Music", icon: Music },
+ { name: "Video", label: "Streaming", icon: Video },
+ { name: "Cloud", label: "Cloud", icon: Cloud },
+ { name: "Shield", label: "Security", icon: Shield },
+ { name: "Zap", label: "Utilities", icon: Zap },
+ { name: "Star", label: "Premium", icon: Star },
+ { name: "Globe", label: "Web", icon: Globe },
+ { name: "Code", label: "Dev Tools", icon: Code },
+ { name: "BookOpen", label: "Education", icon: BookOpen },
+ { name: "Camera", label: "Photo", icon: Camera },
+ { name: "Rocket", label: "Startup", icon: Rocket },
+ { name: "Heart", label: "Health", icon: Heart },
+] as const;
+
+export const ICON_MAP: Record = {
+ BarChart3,
+ Newspaper,
+ Gamepad2,
+ Palette,
+ Music,
+ Video,
+ Cloud,
+ Shield,
+ Zap,
+ Star,
+ Globe,
+ Code,
+ BookOpen,
+ Camera,
+ Rocket,
+ Heart,
+};
diff --git a/examples/nextjs-solana-subscriptions/src/lib/providers.tsx b/examples/nextjs-solana-subscriptions/src/lib/providers.tsx
new file mode 100644
index 0000000..78ae1bd
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/providers.tsx
@@ -0,0 +1,68 @@
+"use client";
+
+// Polyfill BigInt.toJSON so JSON.stringify doesn't throw inside Solana/Dynamic SDKs
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+if (typeof BigInt !== "undefined") (BigInt.prototype as any).toJSON = function () { return this.toString(); };
+
+import { type ReactNode, useEffect } from "react";
+import {
+ completeSocialAuthentication,
+ detectOAuthRedirect,
+ onEvent,
+} from "@dynamic-labs-sdk/client";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { DynamicProvider } from "@dynamic-labs-sdk/react-hooks";
+import { dynamicClient } from "./dynamic";
+import { useWallet } from "./useWallet";
+
+const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ staleTime: 1000 * 60 * 5,
+ refetchOnWindowFocus: false,
+ },
+ },
+});
+
+function AppInit() {
+ const { ensureSolanaWallet } = useWallet();
+
+ useEffect(() => {
+ const unsub = onEvent(
+ {
+ event: "walletAccountsChanged",
+ listener: () => { void ensureSolanaWallet(); },
+ },
+ dynamicClient
+ );
+ return () => unsub?.();
+ }, [ensureSolanaWallet]);
+
+ useEffect(() => {
+ const handleOAuthRedirect = async () => {
+ if (typeof window === "undefined") return;
+ try {
+ const url = new URL(window.location.href);
+ if (await detectOAuthRedirect({ url }, dynamicClient)) {
+ await completeSocialAuthentication({ url }, dynamicClient);
+ await ensureSolanaWallet();
+ window.history.replaceState({}, "", window.location.pathname);
+ }
+ } catch {}
+ };
+ handleOAuthRedirect();
+ }, [ensureSolanaWallet]);
+
+ return null;
+}
+
+export default function Providers({ children }: { children: ReactNode }) {
+ return (
+
+
+
+ {children}
+
+
+ );
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/subscriptions/index.ts b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/index.ts
new file mode 100644
index 0000000..c11b4a7
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/index.ts
@@ -0,0 +1,14 @@
+export type {
+ FixedDelegation,
+ PlanWithAddress,
+ RecurringDelegation,
+ SubscriptionDelegation,
+} from "@solana/subscriptions";
+
+export { PlanStatus, useSubscriptionOperations, useMerchantSearchOperations } from "./useSubscriptions";
+export type { UserSubscription, EnrichedSubscription } from "./useSubscriptions";
+
+export { useMyPlansOperations, useCollectPaymentsOperations } from "./usePlans";
+
+export { useDelegationOperations, useWalletBalances } from "./useDelegations";
+export type { DelegationWithAddress } from "./useDelegations";
diff --git a/examples/nextjs-solana-subscriptions/src/lib/subscriptions/tx.ts b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/tx.ts
new file mode 100644
index 0000000..b3b0169
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/tx.ts
@@ -0,0 +1,80 @@
+"use client";
+
+import {
+ appendTransactionMessageInstructions,
+ compileTransaction,
+ createTransactionMessage,
+ getBase64EncodedWireTransaction,
+ pipe,
+ setTransactionMessageFeePayerSigner,
+ setTransactionMessageLifetimeUsingBlockhash,
+ type Blockhash,
+ type Instruction,
+ type TransactionSigner,
+} from "@solana/kit";
+import { VersionedTransaction } from "@solana/web3.js";
+import { getActiveNetworkData } from "@dynamic-labs-sdk/client";
+import { getSolanaConnection, signAndSendTransaction } from "@dynamic-labs-sdk/solana";
+import { dynamicClient } from "@/lib/dynamic";
+import { useWallet } from "@/lib/useWallet";
+
+// Builds a kit v6 transaction, sends it via the Dynamic embedded wallet,
+// and waits for on-chain confirmation before returning.
+export async function sendKitInstructions(
+ instructions: Instruction[],
+ feePayer: TransactionSigner,
+ walletAccount: ReturnType["solanaAccount"],
+): Promise {
+ if (!walletAccount) throw new Error("Wallet not connected");
+
+ // Use the same RPC the WaaS provider uses so the blockhash is in its node's cache.
+ const { networkData } = await getActiveNetworkData({ walletAccount }, dynamicClient);
+ if (!networkData) throw new Error("Could not determine active Solana network");
+
+ const connection = getSolanaConnection({ networkData });
+
+ // web3.js Connection API — returns plain string/number, cast to kit branded types
+ const { blockhash: rawBlockhash, lastValidBlockHeight: rawLastValid } =
+ await connection.getLatestBlockhash("confirmed");
+ const blockhash = rawBlockhash as Blockhash;
+ const lastValidBlockHeight = BigInt(rawLastValid);
+
+ const txMessage = pipe(
+ createTransactionMessage({ version: 0 }),
+ (m) => setTransactionMessageFeePayerSigner(feePayer, m),
+ (m) => setTransactionMessageLifetimeUsingBlockhash({ blockhash, lastValidBlockHeight }, m),
+ (m) => appendTransactionMessageInstructions(instructions, m),
+ );
+
+ const versionedTx = VersionedTransaction.deserialize(
+ Buffer.from(getBase64EncodedWireTransaction(compileTransaction(txMessage)), "base64"),
+ );
+
+ let signature: string;
+ try {
+ const { signature: sig } = await signAndSendTransaction(
+ { transaction: versionedTx, walletAccount, options: { skipPreflight: true } },
+ dynamicClient,
+ );
+ signature = sig;
+ } catch (err) {
+ const msg = err instanceof Error ? err.message : String(err);
+ if (msg.includes("no record of a prior credit") || msg.includes("debit an account")) {
+ throw new Error("Your wallet has no SOL for transaction fees.");
+ }
+ throw err;
+ }
+
+ // Poll for confirmation using the same web3.js Connection
+ const deadline = Date.now() + 60_000;
+ while (Date.now() < deadline) {
+ const { value } = await connection.getSignatureStatuses([signature]);
+ const status = value[0];
+ if (status?.confirmationStatus === "confirmed" || status?.confirmationStatus === "finalized") {
+ if (status.err) throw new Error(`Transaction failed on-chain: ${JSON.stringify(status.err)}`);
+ return signature;
+ }
+ await new Promise((r) => setTimeout(r, 1500));
+ }
+ return signature; // return anyway after timeout — tx may still land
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/subscriptions/useDelegations.ts b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/useDelegations.ts
new file mode 100644
index 0000000..9ff0fff
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/useDelegations.ts
@@ -0,0 +1,171 @@
+"use client";
+
+import { useMemo } from "react";
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import { address, createNoopSigner, type Address, type Instruction } from "@solana/kit";
+import {
+ findAssociatedTokenPda,
+ getCreateAssociatedTokenIdempotentInstruction,
+ TOKEN_PROGRAM_ADDRESS,
+} from "@solana-program/token";
+import {
+ fetchDelegationsByDelegatee,
+ fetchDelegationsByDelegator,
+ fetchMaybeSubscriptionAuthority,
+ findSubscriptionAuthorityPda,
+ getCreateFixedDelegationOverlayInstructionAsync,
+ getCreateRecurringDelegationOverlayInstructionAsync,
+ getInitSubscriptionAuthorityOverlayInstructionAsync,
+ getRevokeDelegationOverlayInstruction,
+ getTransferFixedOverlayInstructionAsync,
+ getTransferRecurringOverlayInstructionAsync,
+ type Delegation,
+} from "@solana/subscriptions";
+import { useWallet } from "@/lib/useWallet";
+import { getKitRpc } from "@/lib/dynamic";
+import { sendKitInstructions } from "./tx";
+
+export type DelegationWithAddress = Exclude;
+
+export function useDelegationOperations() {
+ const { solanaAccount } = useWallet();
+ const queryClient = useQueryClient();
+ const tokenMintStr = process.env.NEXT_PUBLIC_TOKEN_MINT ?? "";
+
+ const { data: outgoingDelegations = [], isLoading: loadingOutgoing } = useQuery({
+ queryKey: ["delegations", "outgoing", solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ const all = await fetchDelegationsByDelegator(rpc, address(solanaAccount!.address));
+ return all.filter((d): d is DelegationWithAddress => d.kind !== "subscription");
+ },
+ enabled: !!solanaAccount,
+ });
+
+ const { data: incomingDelegations = [], isLoading: loadingIncoming } = useQuery({
+ queryKey: ["delegations", "incoming", solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ const all = await fetchDelegationsByDelegatee(rpc, address(solanaAccount!.address));
+ return all.filter((d): d is DelegationWithAddress => d.kind !== "subscription");
+ },
+ enabled: !!solanaAccount,
+ });
+
+ async function ensureAuthority(rpc: Awaited>, userAddr: Address, noopSigner: ReturnType): Promise {
+ const tokenMint = address(tokenMintStr);
+ const [authorityPda] = await findSubscriptionAuthorityPda({ tokenMint, user: userAddr });
+ const maybeAuth = await fetchMaybeSubscriptionAuthority(rpc, authorityPda);
+ if (!maybeAuth.exists) {
+ const [userAta] = await findAssociatedTokenPda({ mint: tokenMint, owner: userAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS });
+ return [await getInitSubscriptionAuthorityOverlayInstructionAsync({ owner: noopSigner, tokenMint, tokenProgram: TOKEN_PROGRAM_ADDRESS, userAta })];
+ }
+ return [];
+ }
+
+ async function claimTransfer(
+ receiverAddress: string,
+ delegation: { data: { mint: Address; header: { delegator: Address } }; address: Address },
+ getTransferIx: (signer: ReturnType, delegatorAta: Address, receiverAta: Address) => Promise
+ ) {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const noopSigner = createNoopSigner(address(solanaAccount.address));
+ const { mint: mintAddr, header: { delegator } } = delegation.data;
+ const [delegatorAta] = await findAssociatedTokenPda({ mint: mintAddr, owner: delegator, tokenProgram: TOKEN_PROGRAM_ADDRESS });
+ const [receiverAta] = await findAssociatedTokenPda({ mint: mintAddr, owner: address(receiverAddress), tokenProgram: TOKEN_PROGRAM_ADDRESS });
+ return sendKitInstructions(
+ [
+ getCreateAssociatedTokenIdempotentInstruction({ payer: noopSigner, ata: receiverAta, owner: address(receiverAddress), mint: mintAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS }) as unknown as Instruction,
+ await getTransferIx(noopSigner, delegatorAta, receiverAta),
+ ],
+ noopSigner, solanaAccount
+ );
+ }
+
+ const createFixedMutation = useMutation({
+ mutationFn: async ({ delegateeAddress, amount, expiryTs, nonce }: { delegateeAddress: string; amount: bigint; expiryTs: bigint; nonce: bigint }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const rpc = await getKitRpc(solanaAccount);
+ const userAddr = address(solanaAccount.address);
+ const noopSigner = createNoopSigner(userAddr);
+ const instructions = await ensureAuthority(rpc, userAddr, noopSigner);
+ instructions.push(await getCreateFixedDelegationOverlayInstructionAsync({ delegator: noopSigner, tokenMint: address(tokenMintStr), delegatee: address(delegateeAddress), nonce, amount, expiryTs }));
+ return sendKitInstructions(instructions, noopSigner, solanaAccount);
+ },
+ onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["delegations", "outgoing", solanaAccount?.address] }); },
+ });
+
+ const createRecurringMutation = useMutation({
+ mutationFn: async ({ delegateeAddress, amountPerPeriod, periodLengthS, startTs, expiryTs, nonce }: { delegateeAddress: string; amountPerPeriod: bigint; periodLengthS: bigint; startTs: bigint; expiryTs: bigint; nonce: bigint }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const rpc = await getKitRpc(solanaAccount);
+ const userAddr = address(solanaAccount.address);
+ const noopSigner = createNoopSigner(userAddr);
+ const instructions = await ensureAuthority(rpc, userAddr, noopSigner);
+ instructions.push(await getCreateRecurringDelegationOverlayInstructionAsync({ delegator: noopSigner, tokenMint: address(tokenMintStr), delegatee: address(delegateeAddress), nonce, amountPerPeriod, periodLengthS, startTs, expiryTs }));
+ return sendKitInstructions(instructions, noopSigner, solanaAccount);
+ },
+ onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["delegations", "outgoing", solanaAccount?.address] }); },
+ });
+
+ const revokeMutation = useMutation({
+ mutationFn: async ({ delegationAddress }: { delegationAddress: string }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const noopSigner = createNoopSigner(address(solanaAccount.address));
+ return sendKitInstructions(
+ [getRevokeDelegationOverlayInstruction({ authority: noopSigner, delegationAccount: address(delegationAddress) })],
+ noopSigner, solanaAccount
+ );
+ },
+ onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["delegations", "outgoing", solanaAccount?.address] }); },
+ });
+
+ const invalidateIncoming = () => { queryClient.invalidateQueries({ queryKey: ["delegations", "incoming", solanaAccount?.address] }); };
+
+ const claimFixedMutation = useMutation({
+ mutationFn: ({ delegation, receiverAddress }: { delegation: Extract; receiverAddress: string }) =>
+ claimTransfer(receiverAddress, delegation, (signer, delegatorAta, receiverAta) =>
+ getTransferFixedOverlayInstructionAsync({ delegatee: signer, delegationPda: delegation.address, delegator: delegation.data.header.delegator, delegatorAta, receiverAta, tokenMint: delegation.data.mint, tokenProgram: TOKEN_PROGRAM_ADDRESS, amount: delegation.data.amount })
+ ),
+ onSuccess: invalidateIncoming,
+ });
+
+ const claimRecurringMutation = useMutation({
+ mutationFn: ({ delegation, receiverAddress, amount }: { delegation: Extract; receiverAddress: string; amount: bigint }) => {
+ if (amount === 0n) throw new Error("Nothing available to claim this period");
+ return claimTransfer(receiverAddress, delegation, (signer, delegatorAta, receiverAta) =>
+ getTransferRecurringOverlayInstructionAsync({ delegatee: signer, delegationPda: delegation.address, delegator: delegation.data.header.delegator, delegatorAta, receiverAta, tokenMint: delegation.data.mint, tokenProgram: TOKEN_PROGRAM_ADDRESS, amount })
+ );
+ },
+ onSuccess: invalidateIncoming,
+ });
+
+ return { outgoingDelegations, incomingDelegations, loadingOutgoing, loadingIncoming, createFixedMutation, createRecurringMutation, revokeMutation, claimFixedMutation, claimRecurringMutation };
+}
+
+export function useWalletBalances() {
+ const { solanaAccount } = useWallet();
+ const tokenMintStr = process.env.NEXT_PUBLIC_TOKEN_MINT ?? "";
+
+ const { data, isLoading: loading } = useQuery({
+ queryKey: ["balances", solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ const userAddr = address(solanaAccount!.address);
+ const [solResult, tokenBalance] = await Promise.all([
+ rpc.getBalance(userAddr).send(),
+ tokenMintStr
+ ? findAssociatedTokenPda({ mint: address(tokenMintStr), owner: userAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS })
+ .then(([ata]) => rpc.getTokenAccountBalance(ata).send())
+ .then((r) => BigInt(r.value.amount))
+ .catch(() => 0n)
+ : Promise.resolve(0n),
+ ]);
+ return { solBalance: solResult.value, tokenBalance };
+ },
+ enabled: !!solanaAccount,
+ refetchInterval: 30_000,
+ });
+
+ return { solBalance: data?.solBalance ?? 0n, tokenBalance: data?.tokenBalance ?? 0n, tokenMintStr, loading };
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/subscriptions/usePlans.ts b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/usePlans.ts
new file mode 100644
index 0000000..8b150e4
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/usePlans.ts
@@ -0,0 +1,121 @@
+"use client";
+
+import { useCallback, useMemo } from "react";
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import { address, createNoopSigner, type Instruction } from "@solana/kit";
+import {
+ findAssociatedTokenPda,
+ getCreateAssociatedTokenIdempotentInstruction,
+ TOKEN_PROGRAM_ADDRESS,
+} from "@solana-program/token";
+import {
+ fetchDelegationsByDelegatee,
+ fetchPlansForOwner,
+ getCreatePlanOverlayInstructionAsync,
+ getDeletePlanOverlayInstruction,
+ getTransferSubscriptionOverlayInstructionAsync,
+ type Delegation,
+} from "@solana/subscriptions";
+import { useWallet } from "@/lib/useWallet";
+import { getKitRpc } from "@/lib/dynamic";
+import { sendKitInstructions } from "./tx";
+
+export function useMyPlansOperations() {
+ const { solanaAccount } = useWallet();
+ const queryClient = useQueryClient();
+ const tokenMintStr = process.env.NEXT_PUBLIC_TOKEN_MINT ?? "";
+
+ const { data: myPlans = [], isLoading: loadingMyPlans, error: myPlansError } = useQuery({
+ queryKey: ["plans", "my", solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ return fetchPlansForOwner(rpc, address(solanaAccount!.address));
+ },
+ enabled: !!solanaAccount,
+ });
+
+ const createPlanMutation = useMutation({
+ mutationFn: async (params: {
+ planId: bigint; mint: string; amount: bigint; periodHours: number;
+ endTs: number; destinations: string[]; pullers: string[]; metadataUri: string;
+ }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const noopSigner = createNoopSigner(address(solanaAccount.address));
+ return sendKitInstructions(
+ [await getCreatePlanOverlayInstructionAsync({
+ owner: noopSigner,
+ planId: params.planId,
+ mint: address(params.mint),
+ amount: params.amount,
+ periodHours: BigInt(params.periodHours),
+ endTs: BigInt(params.endTs),
+ destinations: params.destinations.filter(Boolean).map((d) => address(d)),
+ pullers: params.pullers.filter(Boolean).map((p) => address(p)),
+ metadataUri: params.metadataUri,
+ tokenProgram: TOKEN_PROGRAM_ADDRESS,
+ })],
+ noopSigner, solanaAccount
+ );
+ },
+ onSuccess: () => { setTimeout(() => queryClient.invalidateQueries({ queryKey: ["plans", "my"] }), 2000); },
+ });
+
+ const deletePlanMutation = useMutation({
+ mutationFn: async (planAddress: string) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const noopSigner = createNoopSigner(address(solanaAccount.address));
+ return sendKitInstructions(
+ [getDeletePlanOverlayInstruction({ owner: noopSigner, planPda: address(planAddress) })],
+ noopSigner, solanaAccount
+ );
+ },
+ onSuccess: () => { setTimeout(() => queryClient.invalidateQueries({ queryKey: ["plans", "my"] }), 2000); },
+ });
+
+ return { myPlans, loadingMyPlans, myPlansError, tokenMintStr, createPlanMutation, deletePlanMutation };
+}
+
+export function useCollectPaymentsOperations() {
+ const { solanaAccount } = useWallet();
+ const queryClient = useQueryClient();
+ const tokenMintStr = process.env.NEXT_PUBLIC_TOKEN_MINT ?? "";
+
+ const { data: myPlans = [], isLoading: loadingPlans } = useQuery({
+ queryKey: ["plans", "my", solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ return fetchPlansForOwner(rpc, address(solanaAccount!.address));
+ },
+ enabled: !!solanaAccount,
+ });
+
+ const collectPaymentMutation = useMutation({
+ mutationFn: async ({ planAddress, subscriptionAddress, delegatorAddress, amount }: { planAddress: string; subscriptionAddress: string; delegatorAddress: string; amount: bigint }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const rpc = await getKitRpc(solanaAccount);
+ const userAddr = address(solanaAccount.address);
+ const noopSigner = createNoopSigner(userAddr);
+ const mintAddr = address(tokenMintStr);
+ const [receiverAta] = await findAssociatedTokenPda({ mint: mintAddr, owner: userAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS });
+ return sendKitInstructions(
+ [
+ getCreateAssociatedTokenIdempotentInstruction({ payer: noopSigner, ata: receiverAta, owner: userAddr, mint: mintAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS }) as unknown as Instruction,
+ await getTransferSubscriptionOverlayInstructionAsync({ caller: noopSigner, subscriptionPda: address(subscriptionAddress), planPda: address(planAddress), delegator: address(delegatorAddress), receiverAta, tokenMint: mintAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS, amount }),
+ ],
+ noopSigner, solanaAccount
+ );
+ },
+ onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["plans", "my"] }); },
+ });
+
+ const fetchPlanSubscribers = useCallback(async (planAddress: string) => {
+ if (!solanaAccount) return [];
+ const rpc = await getKitRpc(solanaAccount);
+ const delegations = await fetchDelegationsByDelegatee(rpc, address(planAddress));
+ return delegations
+ .filter((d): d is Extract => d.kind === "subscription")
+ .map((d) => ({ address: d.address as string, data: d.data }));
+ }, [solanaAccount]);
+
+ return { myPlans, loadingPlans, collectPaymentMutation, fetchPlanSubscribers, tokenMintStr };
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/subscriptions/useSubscriptions.ts b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/useSubscriptions.ts
new file mode 100644
index 0000000..f7c2465
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/subscriptions/useSubscriptions.ts
@@ -0,0 +1,189 @@
+"use client";
+
+import { useCallback, useMemo } from "react";
+import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import { address, createNoopSigner, type Instruction } from "@solana/kit";
+import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from "@solana-program/token";
+import {
+ fetchMaybeSubscriptionAuthority,
+ fetchPlan,
+ fetchPlansForOwner,
+ fetchSubscriptionsForUser,
+ findSubscriptionAuthorityPda,
+ findSubscriptionDelegationPda,
+ getCancelSubscriptionOverlayInstructionAsync,
+ getInitSubscriptionAuthorityOverlayInstructionAsync,
+ getResumeSubscriptionOverlayInstructionAsync,
+ getSubscribeOverlayInstructionAsync,
+ type PlanWithAddress,
+ type SubscriptionDelegation,
+} from "@solana/subscriptions";
+import { isSolanaWalletAccount } from "@dynamic-labs-sdk/solana";
+import { useWalletAccounts } from "@dynamic-labs-sdk/react-hooks";
+import { useWallet } from "@/lib/useWallet";
+import { getKitRpc } from "@/lib/dynamic";
+import { sendKitInstructions } from "./tx";
+
+export const PlanStatus = { Active: 1, Sunset: 0 } as const;
+
+export type UserSubscription = { address: string; data: SubscriptionDelegation };
+export type EnrichedSubscription = { sub: UserSubscription; planData: PlanWithAddress | null };
+
+export function useSubscriptionOperations() {
+ const { solanaAccount } = useWallet();
+ const queryClient = useQueryClient();
+ const tokenMintStr = process.env.NEXT_PUBLIC_TOKEN_MINT ?? "";
+
+ const invalidateSubscriptions = useCallback(() => {
+ queryClient.invalidateQueries({ queryKey: ["subscriptions", solanaAccount?.address] });
+ queryClient.invalidateQueries({ queryKey: ["enrichedSubscriptions"] });
+ }, [queryClient, solanaAccount?.address]);
+
+ const { data: plans = [], isLoading: loadingPlans, error: plansError } = useQuery({
+ queryKey: ["plans", process.env.NEXT_PUBLIC_MERCHANT_ADDRESS, solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ return fetchPlansForOwner(rpc, address(process.env.NEXT_PUBLIC_MERCHANT_ADDRESS!));
+ },
+ enabled: !!process.env.NEXT_PUBLIC_MERCHANT_ADDRESS && !!solanaAccount,
+ });
+
+ const activePlans = useMemo(() => plans.filter((p) => p.data.status === PlanStatus.Active), [plans]);
+
+ const { data: userSubscriptions = [], isLoading: loadingSubscriptions, error: subscriptionsError } = useQuery({
+ queryKey: ["subscriptions", solanaAccount?.address],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ return fetchSubscriptionsForUser(rpc, address(solanaAccount!.address)) as Promise;
+ },
+ enabled: !!solanaAccount,
+ });
+
+ const subscribedPlanPdas = useMemo(() => {
+ const set = new Set();
+ for (const sub of userSubscriptions)
+ if (sub.data.expiresAtTs === 0n)
+ set.add(sub.data.header.delegatee as string);
+ return set;
+ }, [userSubscriptions]);
+
+ const cancellingPlanPdas = useMemo(() => {
+ const set = new Set();
+ for (const sub of userSubscriptions)
+ if (sub.data.expiresAtTs > 0n)
+ set.add(sub.data.header.delegatee as string);
+ return set;
+ }, [userSubscriptions]);
+
+ const getTokenBalance = useCallback(async (tokenMint: string): Promise => {
+ if (!solanaAccount) return 0n;
+ try {
+ const rpc = await getKitRpc(solanaAccount);
+ const [ata] = await findAssociatedTokenPda({ mint: address(tokenMint), owner: address(solanaAccount.address), tokenProgram: TOKEN_PROGRAM_ADDRESS });
+ return BigInt((await rpc.getTokenAccountBalance(ata).send()).value.amount);
+ } catch { return 0n; }
+ }, [solanaAccount]);
+
+ const subscribeMutation = useMutation({
+ mutationFn: async (plan: PlanWithAddress) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const rpc = await getKitRpc(solanaAccount);
+ const userAddr = address(solanaAccount.address);
+ const noopSigner = createNoopSigner(userAddr);
+ const tokenMint = address(tokenMintStr);
+ const instructions: Instruction[] = [];
+
+ const [authorityPda] = await findSubscriptionAuthorityPda({ tokenMint, user: userAddr });
+ const maybeAuth = await fetchMaybeSubscriptionAuthority(rpc, authorityPda);
+ if (!maybeAuth.exists) {
+ const [userAta] = await findAssociatedTokenPda({ mint: tokenMint, owner: userAddr, tokenProgram: TOKEN_PROGRAM_ADDRESS });
+ instructions.push(await getInitSubscriptionAuthorityOverlayInstructionAsync({ owner: noopSigner, tokenMint, tokenProgram: TOKEN_PROGRAM_ADDRESS, userAta }));
+ }
+ instructions.push(await getSubscribeOverlayInstructionAsync({
+ subscriber: noopSigner,
+ merchant: plan.data.owner,
+ planId: plan.data.data.planId,
+ tokenMint,
+ expectedAmount: plan.data.data.terms.amount,
+ expectedCreatedAt: plan.data.data.terms.createdAt,
+ expectedPeriodHours: plan.data.data.terms.periodHours,
+ }));
+ return sendKitInstructions(instructions, noopSigner, solanaAccount);
+ },
+ onSuccess: invalidateSubscriptions,
+ onError: (err) => {
+ // 0x205 = alreadySubscribed — treat as success and refresh state
+ if (String(err).includes("0x205")) invalidateSubscriptions();
+ },
+ });
+
+ const cancelMutation = useMutation({
+ mutationFn: async ({ planPda, subscriptionPda }: { planPda: string; subscriptionPda: string }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const noopSigner = createNoopSigner(address(solanaAccount.address));
+ return sendKitInstructions(
+ [await getCancelSubscriptionOverlayInstructionAsync({ subscriber: noopSigner, planPda: address(planPda), subscriptionPda: address(subscriptionPda) })],
+ noopSigner, solanaAccount
+ );
+ },
+ onSuccess: invalidateSubscriptions,
+ });
+
+ const resumeMutation = useMutation({
+ mutationFn: async ({ planPda, subscriptionPda }: { planPda: string; subscriptionPda: string }) => {
+ if (!solanaAccount) throw new Error("Wallet not connected");
+ const noopSigner = createNoopSigner(address(solanaAccount.address));
+ return sendKitInstructions(
+ [await getResumeSubscriptionOverlayInstructionAsync({ subscriber: noopSigner, planPda: address(planPda), subscriptionPda: address(subscriptionPda) })],
+ noopSigner, solanaAccount
+ );
+ },
+ onSuccess: invalidateSubscriptions,
+ });
+
+ const getSubscriptionPdaForPlan = useCallback(async (planPda: string): Promise => {
+ if (!solanaAccount) return null;
+ const [subPda] = await findSubscriptionDelegationPda({ planPda: address(planPda), subscriber: address(solanaAccount.address) });
+ return subscribedPlanPdas.has(planPda) ? (subPda as string) : null;
+ }, [solanaAccount, subscribedPlanPdas]);
+
+ const { data: enrichedSubscriptions = [] } = useQuery({
+ queryKey: ["enrichedSubscriptions", userSubscriptions.map((s) => s.address)],
+ queryFn: async () => {
+ const rpc = await getKitRpc(solanaAccount!);
+ const results = await Promise.allSettled(
+ userSubscriptions.map(async (sub) => {
+ let planData: PlanWithAddress | null = null;
+ try { planData = await fetchPlan(rpc, sub.data.header.delegatee); } catch { /* not found */ }
+ return { sub, planData };
+ })
+ );
+ return results
+ .map((r) => r.status === "fulfilled" ? r.value : { sub: null, planData: null })
+ .filter((r): r is EnrichedSubscription => r.sub !== null);
+ },
+ enabled: userSubscriptions.length > 0 && !!solanaAccount,
+ });
+
+ return {
+ activePlans, userSubscriptions, enrichedSubscriptions, subscribedPlanPdas, cancellingPlanPdas,
+ loadingPlans, loadingSubscriptions, plansError, subscriptionsError,
+ subscribeMutation, cancelMutation, resumeMutation,
+ merchantAddress: process.env.NEXT_PUBLIC_MERCHANT_ADDRESS,
+ tokenMintStr, tokenDecimals: 6,
+ getSubscriptionPdaForPlan, getTokenBalance,
+ };
+}
+
+export function useMerchantSearchOperations() {
+ const walletAccounts = useWalletAccounts();
+ const solanaAccount = walletAccounts.find(isSolanaWalletAccount) ?? null;
+
+ const fetchMerchantPlans = useCallback(async (addr: string) => {
+ if (!solanaAccount) return [];
+ const rpc = await getKitRpc(solanaAccount);
+ return fetchPlansForOwner(rpc, address(addr));
+ }, [solanaAccount]);
+
+ return { fetchMerchantPlans, networkKey: solanaAccount?.address ?? "" };
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/toast.ts b/examples/nextjs-solana-subscriptions/src/lib/toast.ts
new file mode 100644
index 0000000..926fec3
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/toast.ts
@@ -0,0 +1,40 @@
+type ToastType = "success" | "error";
+
+export type ToastItem = {
+ id: number;
+ type: ToastType;
+ message: string;
+};
+
+type Listener = (toasts: ToastItem[]) => void;
+
+let items: ToastItem[] = [];
+let nextId = 1;
+const listeners = new Set();
+
+function notify() {
+ listeners.forEach((l) => l([...items]));
+}
+
+export const toast = {
+ success(message: string) {
+ const id = nextId++;
+ items = [...items, { id, type: "success", message }];
+ notify();
+ setTimeout(() => toast.dismiss(id), 4000);
+ },
+ error(message: string) {
+ const id = nextId++;
+ items = [...items, { id, type: "error", message }];
+ notify();
+ setTimeout(() => toast.dismiss(id), 6000);
+ },
+ dismiss(id: number) {
+ items = items.filter((t) => t.id !== id);
+ notify();
+ },
+ subscribe(listener: Listener): () => void {
+ listeners.add(listener);
+ return () => { listeners.delete(listener); };
+ },
+};
diff --git a/examples/nextjs-solana-subscriptions/src/lib/useCheckoutFunding.ts b/examples/nextjs-solana-subscriptions/src/lib/useCheckoutFunding.ts
new file mode 100644
index 0000000..d94d3ef
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/useCheckoutFunding.ts
@@ -0,0 +1,70 @@
+"use client";
+
+import {
+ executeSwapTransaction,
+ getActiveNetworkData,
+ getSwapQuote,
+ getSwapStatus,
+} from "@dynamic-labs-sdk/client";
+import type { SolanaWalletAccount } from "@dynamic-labs-sdk/solana";
+
+const SOL_TOKEN = "So11111111111111111111111111111111111111112";
+const USDC_MINT = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
+const STATUS_POLL_INTERVAL = 3000;
+
+// Swaps SOL → USDC via Dynamic's swap SDK (mirrors the Dynamic demo app pattern).
+// LI.FI handles USDC ATA creation inside the swap transaction — do NOT pre-create it.
+export async function fundWalletWithSol(
+ amountUsd: number,
+ walletAddress: string,
+ walletAccount: SolanaWalletAccount,
+): Promise {
+ const { networkData } = await getActiveNetworkData({ walletAccount });
+ if (!networkData)
+ throw new Error("Could not determine active Solana network");
+ const networkId = networkData.networkId;
+
+ const usdcAmount = Math.ceil(amountUsd * 1_000_000_000).toString();
+
+ // Step 1 — get quote (ExactOut: receive exactly the USDC amount needed)
+ const quote = await getSwapQuote({
+ from: {
+ address: walletAddress,
+ chain: "SOL",
+ networkId,
+ tokenAddress: SOL_TOKEN,
+ },
+ to: {
+ address: walletAddress,
+ chain: "SOL",
+ networkId,
+ tokenAddress: USDC_MINT,
+ amount: usdcAmount,
+ },
+ slippage: 0.1,
+ order: "FASTEST",
+ });
+
+ if (!quote.signingPayload)
+ throw new Error("No signing payload in swap quote");
+
+ // Step 2 — execute (Dynamic handles MPC signing + broadcast)
+ const { transactionHash } = await executeSwapTransaction({
+ walletAccount,
+ signingPayload: quote.signingPayload,
+ });
+
+ // Step 3 — poll until DONE or FAILED (matches demo's checkStatusAtom pattern)
+ while (true) {
+ const { status, substatus } = await getSwapStatus({
+ txHash: transactionHash,
+ from: { chain: "SOL", networkId },
+ });
+
+ if (status === "DONE") return;
+ if (status === "FAILED")
+ throw new Error(`Swap failed: ${substatus ?? "unknown"}`);
+
+ await new Promise((r) => setTimeout(r, STATUS_POLL_INTERVAL));
+ }
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/useWallet.ts b/examples/nextjs-solana-subscriptions/src/lib/useWallet.ts
new file mode 100644
index 0000000..fda5a2a
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/useWallet.ts
@@ -0,0 +1,33 @@
+"use client";
+
+import { useCallback } from "react";
+import {
+ getWalletAccounts,
+ isSignedIn,
+ logout,
+} from "@dynamic-labs-sdk/client";
+import { createWaasWalletAccounts } from "@dynamic-labs-sdk/client/waas";
+import { isSolanaWalletAccount } from "@dynamic-labs-sdk/solana";
+import { useUser, useWalletAccounts } from "@dynamic-labs-sdk/react-hooks";
+import { dynamicClient } from "./dynamic";
+
+export function useWallet() {
+ const loggedIn = useUser() !== null;
+ const solanaAccount =
+ useWalletAccounts().find(isSolanaWalletAccount) ?? null;
+
+ const disconnect = useCallback(async () => {
+ await logout(dynamicClient);
+ }, []);
+
+ const ensureSolanaWallet = useCallback(async () => {
+ try {
+ const accounts = getWalletAccounts(dynamicClient);
+ if (!accounts.some(isSolanaWalletAccount) && isSignedIn(dynamicClient)) {
+ await createWaasWalletAccounts({ chains: ["SOL"] }, dynamicClient);
+ }
+ } catch {}
+ }, []);
+
+ return { solanaAccount, loggedIn, ensureSolanaWallet, disconnect };
+}
diff --git a/examples/nextjs-solana-subscriptions/src/lib/utils.ts b/examples/nextjs-solana-subscriptions/src/lib/utils.ts
new file mode 100644
index 0000000..7762412
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/src/lib/utils.ts
@@ -0,0 +1,60 @@
+import { type ClassValue, clsx } from "clsx";
+import { twMerge } from "tailwind-merge";
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs));
+}
+
+// Mainnet USDC, USDT, and SOL — addresses sourced from official Solana token list
+const TOKEN_INFO: Record = {
+ EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v: { symbol: "USDC", name: "USD Coin", decimals: 6 },
+ Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB: { symbol: "USDT", name: "Tether USD", decimals: 6 },
+ So11111111111111111111111111111111111111112: { symbol: "SOL", name: "Solana", decimals: 9 },
+};
+
+
+export function getTokenInfo(mint: string): { symbol: string; name: string; decimals: number } {
+ return TOKEN_INFO[mint] ?? { symbol: mint.slice(0, 4) + "...", name: "Unknown Token", decimals: 6 };
+}
+
+export function formatTokenAmount(amount: bigint, decimals: number): string {
+ const divisor = BigInt(10 ** decimals);
+ const whole = amount / divisor;
+ const frac = amount % divisor;
+ const fracStr = frac.toString().padStart(decimals, "0").slice(0, 2);
+ return `${whole.toLocaleString()}.${fracStr}`;
+}
+
+export function formatPeriod(periodHours: bigint): string {
+ const h = Number(periodHours);
+ if (h === 1) return "per hour";
+ if (h === 24) return "per day";
+ if (h === 168) return "per week";
+ if (h === 720) return "per month";
+ if (h === 8760) return "per year";
+ return `every ${h} hours`;
+}
+
+export function shortenAddress(address: string, chars = 4): string {
+ return `${address.slice(0, chars)}...${address.slice(-chars)}`;
+}
+
+export function isPlanActive(status: number): boolean {
+ return status === 1; // PlanStatus.Active = 1, Sunset = 0
+}
+
+
+export interface PlanMeta {
+ n?: string;
+ d?: string;
+ i?: string;
+ w?: string;
+}
+
+export function parsePlanMeta(metadataUri: string): PlanMeta {
+ try {
+ return JSON.parse(metadataUri);
+ } catch {
+ return {};
+ }
+}
diff --git a/examples/nextjs-solana-subscriptions/tsconfig.json b/examples/nextjs-solana-subscriptions/tsconfig.json
new file mode 100644
index 0000000..d7e05e5
--- /dev/null
+++ b/examples/nextjs-solana-subscriptions/tsconfig.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}