diff --git a/examples/nodejs-omnibus-sweep/.gitignore b/examples/nodejs-omnibus-sweep/.gitignore index 10f8a3a..481067d 100644 --- a/examples/nodejs-omnibus-sweep/.gitignore +++ b/examples/nodejs-omnibus-sweep/.gitignore @@ -13,3 +13,6 @@ node_modules/ # OS generated files .DS_Store Thumbs.db + +# Wallet storage +.wallets.json diff --git a/examples/nodejs-omnibus-sweep/README.md b/examples/nodejs-omnibus-sweep/README.md index 782dcb9..08b707d 100644 --- a/examples/nodejs-omnibus-sweep/README.md +++ b/examples/nodejs-omnibus-sweep/README.md @@ -1,40 +1,33 @@ -# Dynamic Omnibus Sweep +# Dynamic Server-Side Wallet Management -This demo shows a complete server-side wallet management workflow. It uses Dynamic's SDK to create wallets, execute gasless transactions, and aggregate funds through an omnibus account structure. +This collection of demos shows comprehensive server-side wallet management workflows using Dynamic's SDK. From basic wallet operations to complex fund aggregation patterns, these examples demonstrate how to build secure, scalable financial infrastructure. -## šŸŽÆ Demo Overview +## šŸŽÆ What You'll Learn -The omnibus sweep pattern performs three main steps: +These demos cover the complete spectrum of server-side wallet operations: -1. **Create wallets**: Generate multiple customer wallets and one omnibus account -2. **Fund wallets**: Add random USDC amounts to each customer wallet -3. **Sweep funds**: Transfer all funds from customer wallets to the omnibus account +### 1. Wallet Management -This workflow demonstrates: +- Create ephemeral or persistent server-side wallets +- Password protection for enhanced security +- List and manage saved wallets with local storage +- Complete wallet lifecycle (create, save, list, delete) -### 1. Programmatic Wallet Creation +### 2. Transaction Signing & Sending -- Server-side creation of customer wallets with 2-of-2 threshold signatures -- Automatic generation of omnibus accounts for fund collection -- Complete wallet lifecycle management handled server-side - -### 2. Gasless USDC Operations - -- Mint USDC tokens to customer wallets without paying gas fees -- Transfer USDC from customer wallets to omnibus without gas fees -- Zero-friction token operations for seamless user experience +- Sign messages for authentication and verification +- Send transactions with multiple gas providers: + - Standard (user pays gas) + - ZeroDev (gasless sponsorship) + - Pimlico (gasless sponsorship) +- Support for both new and saved wallets ### 3. Omnibus Fund Aggregation -- Centralized collection of customer funds into omnibus accounts -- Streamlined settlement processing for financial institutions -- Clear separation and tracking of customer funds - -### 4. Scalable Concurrent Processing - -- Rate-limited wallet creation (1 wallet per second) to respect API limits -- Parallel transaction processing (up to 10 concurrent operations) -- Optimized performance for handling multiple customer wallets +- Create multiple customer wallets and centralized omnibus accounts +- Fund customer wallets with USDC tokens +- Sweep all funds to omnibus account in parallel +- Rate-limited wallet creation and concurrent transaction processing ## šŸ›”ļø Security Features @@ -45,10 +38,10 @@ This workflow demonstrates: ## šŸ—ļø Technical Stack -- **Dynamic SDK**: Handles server-side wallet creation and signature management -- **Pimlico**: Provides gasless transaction sponsorship on Base Sepolia testnet -- **Viem**: Manages Ethereum transaction encoding and blockchain interaction -- **Base Sepolia testnet**: Test environment for USDC token operations +- **Dynamic SDK**: Server-side wallet creation, signature management, and transaction signing +- **Pimlico & ZeroDev**: Gasless transaction sponsorship providers +- **Viem**: Ethereum transaction encoding and blockchain interaction +- **Base Sepolia testnet**: Test environment for demonstrations ## šŸ“‹ Prerequisites @@ -72,37 +65,113 @@ This workflow demonstrates: PIMLICO_API_KEY=your_pimlico_api_key ``` -## šŸŽÆ Running the Demo +## šŸŽÆ Running the Demos -### Basic Wallet Creation Demo +### 1. Wallet Management (`pnpm wallet`) -For a simpler introduction to Dynamic wallet creation and gasless transactions, run the basic wallet demo: +Create and manage server-side wallets with various options: ```bash -pnpm create-wallet +# Create ephemeral wallet (not saved) +pnpm wallet --create + +# Create and save wallet for reuse +pnpm wallet --create --save + +# Create wallet with password protection +pnpm wallet --create --save --password mySecretPassword + +# List all saved wallets +pnpm wallet --list + +# Delete a saved wallet +pnpm wallet --delete 0x123... ``` -This creates a single wallet with 2-of-2 threshold signatures and executes a basic gasless transaction, serving as a foundation for understanding the omnibus sweep pattern. +### 2. Message Signing (`pnpm sign-msg`) -### Omnibus Sweep Demo +Sign messages for authentication and verification: -The omnibus sweep demo creates multiple customer wallets, funds each one, and then transfers all funds to a centralized omnibus account. +```bash +# Sign with new ephemeral wallet +pnpm sign-msg "Hello, World!" -**Run with default settings (10 wallets):** +# Sign with saved wallet +pnpm sign-msg "Hello, World!" --address 0x123... + +# Sign with password-protected wallet +pnpm sign-msg "Hello, World!" --address 0x123... --password myPassword +``` + +### 3. Send Transactions (`pnpm send-txn`) + +Send transactions with different gas sponsorship options: ```bash -pnpm omnibus +# Standard transaction (user pays gas) +pnpm send-txn standard + +# Gasless with ZeroDev +pnpm send-txn zerodev + +# Gasless with Pimlico +pnpm send-txn pimlico + +# Use saved wallet +pnpm send-txn zerodev --address 0x123... + +# Use password-protected wallet +pnpm send-txn pimlico --address 0x123... --password myPassword ``` -**Run with custom number of wallets:** +### 4. Omnibus Sweep (`pnpm omnibus`) + +Create multiple customer wallets, fund them, and sweep all funds to an omnibus account: ```bash +# Run with default settings (10 wallets) +pnpm omnibus + +# Run with custom number of wallets pnpm omnibus 20 ``` ## šŸ“Š Sample Output -Here's what you'll see when running the demo with 10 wallets: +### Wallet Creation + +``` +Creating server wallet... +āœ… Server wallet created in 2.34s +šŸ“ Address: 0x7E3629...5A02f0 +šŸ’” Tip: Add '--save' flag to persist wallet for reuse +``` + +### Message Signing + +``` +Signing message... + +āœ… Message signed in 1.45s +šŸ“ Message: "Hello, World!" +āœļø Signature: 0xabc123...def456 +šŸ‘› Signer: 0x7E3629...5A02f0 +``` + +### Send Transaction + +``` +Creating Pimlico smart account... +Sending gasless transaction (Pimlico)... + +āœ… Transaction sent in 3.21s +šŸ“ Hash: 0x789...012 +šŸ”— Explorer: https://sepolia.basescan.org/tx/0x789...012 +šŸ’³ Provider: pimlico +šŸ‘› Wallet: 0x7E3629...5A02f0 +``` + +### Omnibus Sweep ``` Dynamic Gasless Transaction Demo - Omnibus Sweep diff --git a/examples/nodejs-omnibus-sweep/package.json b/examples/nodejs-omnibus-sweep/package.json index 3fdfcfb..437c3c0 100644 --- a/examples/nodejs-omnibus-sweep/package.json +++ b/examples/nodejs-omnibus-sweep/package.json @@ -4,13 +4,15 @@ "description": "", "scripts": { "omnibus": "tsx src/omnibus-sweep.ts", - "create-wallet": "tsx src/create-wallet.ts" + "wallet": "tsx src/wallet.ts", + "send-txn": "tsx src/send-transaction.ts", + "sign-msg": "tsx src/sign-message.ts" }, "dependencies": { - "@dynamic-labs-wallet/node": "0.0.183", - "@dynamic-labs-wallet/node-evm": "0.0.183", - "@dynamic-labs-wallet/node-svm": "0.0.183", - "@dynamic-labs/sdk-api": "^0.0.805", + "@dynamic-labs-wallet/node": "0.0.188", + "@dynamic-labs-wallet/node-evm": "0.0.188", + "@dynamic-labs-wallet/node-svm": "0.0.188", + "@dynamic-labs/sdk-api": "0.0.814", "dotenv": "^17.2.3", "p-limit": "^7.1.1", "permissionless": "^0.2.57", diff --git a/examples/nodejs-omnibus-sweep/pnpm-lock.yaml b/examples/nodejs-omnibus-sweep/pnpm-lock.yaml index 73b9772..bad2826 100644 --- a/examples/nodejs-omnibus-sweep/pnpm-lock.yaml +++ b/examples/nodejs-omnibus-sweep/pnpm-lock.yaml @@ -9,17 +9,17 @@ importers: .: dependencies: '@dynamic-labs-wallet/node': - specifier: 0.0.183 - version: 0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10) + specifier: 0.0.188 + version: 0.0.188(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@dynamic-labs-wallet/node-evm': - specifier: 0.0.183 - version: 0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + specifier: 0.0.188 + version: 0.0.188(@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) '@dynamic-labs-wallet/node-svm': - specifier: 0.0.183 - version: 0.0.183(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + specifier: 0.0.188 + version: 0.0.188(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) '@dynamic-labs/sdk-api': - specifier: ^0.0.805 - version: 0.0.805 + specifier: 0.0.814 + version: 0.0.814 dotenv: specifier: ^17.2.3 version: 17.2.3 @@ -49,34 +49,71 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} + '@dynamic-labs-sdk/assert-package-version@0.1.0-alpha.23': + resolution: {integrity: sha512-0KuiXqnplX0+jB/arO9NecjL7nJkmdc2eRW3L0wCyJFCi/wNlH4ceOLTNgY0p/VNlBcXYjUw5HiJ5zxvORcUTA==} + + '@dynamic-labs-sdk/client@0.1.0-alpha.23': + resolution: {integrity: sha512-ESBoFwXgwPCmnZlh6DFq7hYBUmRXymwgOwH1XvtffOQ6ZgR21zPJT8KTKBVb++MzJJ6+miHc09qdoxUxlybfVQ==} + + '@dynamic-labs-sdk/evm@0.1.0-alpha.23': + resolution: {integrity: sha512-PXJUzHBUzVTIxa+j3BbWF1EiNRqwm7bFJ0LKW/HDuu8k2221932jgkeawbhm8In4W7SLOlpscimDFbiuHdPu+g==} + peerDependencies: + viem: ^2.28.4 + + '@dynamic-labs-sdk/wallet-connect@0.1.0-alpha.23': + resolution: {integrity: sha512-HgP4kVG+EinogeMd+qUJSYTSb0UqJK5dbz1MNn1GgYKTQpqgPC7RYuiiVDlrA/nEV/JnsoaMewQOaXvjxlFICA==} + + '@dynamic-labs-sdk/zerodev@0.1.0-alpha.23': + resolution: {integrity: sha512-pLQ8yBW6qtD9ButvxnBY/ZENZ0I90D2DBy7Kw2mTfixkQiyOvYYQURYEoZWFg7lkpLRtfGiqbNI+7oOLhoAs9A==} + peerDependencies: + viem: ^2.28.4 + + '@dynamic-labs-wallet/browser-wallet-client@0.0.187': + resolution: {integrity: sha512-0kv5RfZ9tB5JiBtNk8VdNzKYJ8eRP/M4OgJxsKh99wz3fjw/KPIU2kQSxNTGs4vl3N0Jk9rSMV26ttowwuPV7A==} + '@dynamic-labs-wallet/browser@0.0.167': resolution: {integrity: sha512-HDmUetnJ1iz6kGd5PB1kJzeLI7ZJmwxlJ1QGtUqSQHDdBkhLwaDPlccB2IviC5iPfU5PR/IQ1BYEqpoTWx2sBA==} '@dynamic-labs-wallet/core@0.0.167': resolution: {integrity: sha512-jEHD/mDfnqx2/ML/MezY725uPPrKGsGoR3BaS1JNITGIitai1gPEgaEMqbXIhzId/m+Xieb8ZrLDiaYYJcXcyQ==} - '@dynamic-labs-wallet/core@0.0.183': - resolution: {integrity: sha512-mnGF2eTVBvaecPVFOGH2BEkKYU/PtXNq++gzgV4wbY3njLBzqXCnhDt6BMHgy4WxPocYpTEngBMMTpY7Z10qrw==} + '@dynamic-labs-wallet/core@0.0.187': + resolution: {integrity: sha512-tjV81BSImsRklEW2Xb1N+M6Nj41hIXJSQfLzxI2fEsIWCfPVix/Piy7EquMiw8AOJTRK/ptyOrILAqvppeSLjQ==} + + '@dynamic-labs-wallet/core@0.0.188': + resolution: {integrity: sha512-hDBQfQFI44izSCIr/V5D8qkq0tKtQT10eWGSL+fDwEM07U2jHvZuHCm1t+sOiTB2GKqkdkX+UbDKbYrkw14ipg==} + + '@dynamic-labs-wallet/forward-mpc-client@0.1.0': + resolution: {integrity: sha512-nh81Oq/Stk4FwN6YNR8VDZZWvQPaWpBwVLdkV27aTuLHt8Fr7pcTAjUW+OsQauWove8iTnsHyIVoo0PphNRz8g==} '@dynamic-labs-wallet/forward-mpc-client@0.1.0-alpha.8': resolution: {integrity: sha512-p7uPyWKqrHZJVFqns5Kj4ZRnS09l9dBdJtodb4wS+yPDdDpmjth+L7bZHG3KZj/CpBuy+x0MA4Y47TPBlHvXuA==} + '@dynamic-labs-wallet/forward-mpc-shared@0.1.0': + resolution: {integrity: sha512-xRpMri4+ZuClonwf04RcnT/BCG8oA36ononD7s0MA5wSqd8kOuHjzNTSoM6lWnPiCmlpECyPARJ1CEO02Sfq9Q==} + '@dynamic-labs-wallet/forward-mpc-shared@0.1.0-alpha.8': resolution: {integrity: sha512-UOk8MjU1s4VKg5FkrbN5rtYkqFd3u1xLhOav+CWzp8HtKTYiLb4Fk+SlusCGWHqJwoqC/BmupRfUnCjR+YFfAA==} - '@dynamic-labs-wallet/node-evm@0.0.183': - resolution: {integrity: sha512-P0zFuWSuRHc9jqtDIwgBLr2JpAIx0aDhSFsvVZ/NuaVaxxFH9j2i2tn2HRKKD2VDozTqj8Ay1XgwtTVyco5A3A==} + '@dynamic-labs-wallet/node-evm@0.0.188': + resolution: {integrity: sha512-yVm/8iWCDTo3Fi90j87d6PYFT+gNftjFfqap8s3l5xP9vKVRG63EkS8NM66h5vXkVHTRoLt5fz2oKYiAKdLGIg==} peerDependencies: - viem: ^2.22.1 + viem: 2.38.2 + + '@dynamic-labs-wallet/node-svm@0.0.188': + resolution: {integrity: sha512-i/9+b3UA3KpOwqGu9shrCca8APP4YQF/0ApasE51z6JUg7sLVIt8k6D6aO/UOyt5NW3HGRR86rZz7lROWeGWBA==} - '@dynamic-labs-wallet/node-svm@0.0.183': - resolution: {integrity: sha512-RMScomHboR0w7cDnY4T/PX16zj4Iy5PhzLdG4Z5Wl/K4rOdBBH4mx3ZlEDpXOPZ+lHeQZuT8F1D8wCwWcjrDtg==} + '@dynamic-labs-wallet/node@0.0.188': + resolution: {integrity: sha512-QRr6YiaCBn+WjVEBT9VB0jDwZwCmuvZ1tVUpVWX5tRM7b8icinbQn+zqo7DNVfajP1c0cumEonNq6v96VxZEfQ==} - '@dynamic-labs-wallet/node@0.0.183': - resolution: {integrity: sha512-D/r7NHWZh/9QU+SaIjtpT5Jl9MOdwwBstOH6YdjILLRRUuRnB7Z8CpjbiPcytsdGRNGLBxPAsQJCfp3QFeiMjA==} + '@dynamic-labs/assert-package-version@4.39.0': + resolution: {integrity: sha512-Vi4/sMqGa889c12b+zLDMMONsoICU17HVfdGI4MCI6Hbc9sL8YWkNs5WOOkrZTxC83RtgCTRV3YsDlazxzbCRg==} - '@dynamic-labs/logger@4.37.2': - resolution: {integrity: sha512-X/hoE9DHa8UVsEjf9/qG92JUc9TqEAsxXYtkgXtA7+OyP67ivH7IDMSU1Qx7fyt1U3dJLqCSttAWfISguuftww==} + '@dynamic-labs/logger@4.39.0': + resolution: {integrity: sha512-VIbKVzK4TwGdGt8y37Dy7TvARd1MKq76tkz5oSHQg/BnAS4vme+Hlrn+0ZzPz5FI/Oks2CRCJagrZDm0sXpUOw==} + + '@dynamic-labs/message-transport@4.39.0': + resolution: {integrity: sha512-WnTPXs/c4e00uwH1ND/QNTAedIuus+cFIASLjMdlTYbgWUgD+ua8Usx+93kCe5ATtY5mgwFHoujVosfHuNFdOQ==} '@dynamic-labs/sdk-api-core@0.0.764': resolution: {integrity: sha512-79JptJTTClLc9qhioThtwMuzTHJ+mrj8sTEglb7Mcx3lJub9YbXqNdzS9mLRxZsr2et3aqqpzymXdUBzSEaMng==} @@ -84,8 +121,20 @@ packages: '@dynamic-labs/sdk-api-core@0.0.801': resolution: {integrity: sha512-kiPz/xL9zim7C9eCtU2rjsgFyaYvqURRfP2V0PHKlPIHvP03e5zEpdmGxcBBPTLUv38cMvE13TLn3M9eYKbcXA==} - '@dynamic-labs/sdk-api@0.0.805': - resolution: {integrity: sha512-giuxnugcgB6m9Uoe3/bXH5PJdF6yKqpyB+ujGhXpj29yUhvNgt/1rl96i2jP50UgMiKfbQmLU/ScbBm2YkyzrQ==} + '@dynamic-labs/sdk-api-core@0.0.809': + resolution: {integrity: sha512-5ECxeStqEGxARdhY6plIJMZfAJvrQewRFZt7UPecG4WL5uU/kDrU6OXe+jJkKCGnfBN4vnJeh1nSQhXArFoRjA==} + + '@dynamic-labs/sdk-api-core@0.0.813': + resolution: {integrity: sha512-z2xkdw6zU6nj+F+diF4QFro7GZcF9wSfuBTU3rEI17pJCNuyv2Sx+fKOXjKlCUKr/rpczXVuMCO4bTycPZf9cQ==} + + '@dynamic-labs/sdk-api@0.0.814': + resolution: {integrity: sha512-VFSm2nKfQ9CkLiFySY6awgSpzIQ0hbSM7uYQoOAmTRvDxFDj8KkPmwhQDaQjCK+woAdp+sKLEcpmyoa6OZe9lg==} + + '@dynamic-labs/types@4.39.0': + resolution: {integrity: sha512-SktRPAOgbSoHWFjorUrBfr2sdsUSabiRXPfKP2R//n++aRWyWB35X4pUQFmR7flwylpMdd4s6e5x4HcKNboxoA==} + + '@dynamic-labs/utils@4.39.0': + resolution: {integrity: sha512-oB2R5Ipr4JstckrwBo7Dg+mC5cZ3+Xm2vTEGecDkFjDvajV+LHqsbiUKym7MHXB1zGEO2rnESzWA4mc1E4hEbg==} '@esbuild/aix-ppc64@0.25.10': resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} @@ -243,9 +292,22 @@ packages: cpu: [x64] os: [win32] + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + '@evervault/wasm-attestation-bindings@0.3.0': resolution: {integrity: sha512-PUOwRbr4PQiOw82dhJ6eAtNzRBDG7/N8oyzRpWfx2BfGu8vbtu0Llv3udP6eixrXN4uwIHdnINsm/ROWJ9UFaw==} + '@msgpack/msgpack@3.1.2': + resolution: {integrity: sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==} + engines: {node: '>= 18'} + '@noble/ciphers@0.4.1': resolution: {integrity: sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==} @@ -253,10 +315,21 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@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} @@ -265,6 +338,14 @@ packages: resolution: {integrity: sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==} engines: {node: '>= 20.19.0'} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.7.0': + resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} + engines: {node: ^14.21.3 || >=16} + '@noble/hashes@1.7.1': resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} engines: {node: ^14.21.3 || >=16} @@ -281,15 +362,45 @@ packages: resolution: {integrity: sha512-etMDBkCuB95Xj/gfsWYBD2x+84IjL4uMLd/FhGoUUG/g+eh0K2eP7pJz1EmvpN8Df3vKdoWVAc7RxIBCHQfFHQ==} engines: {node: '>= 20.19.0'} + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + '@scure/bip32@1.7.0': resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@scure/bip39@1.6.0': resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + '@simplewebauthn/browser@13.1.0': + resolution: {integrity: sha512-WuHZ/PYvyPJ9nxSzgHtOEjogBhwJfC8xzYkPC+rR/+8chl/ft4ngjiK8kSU5HtRJfczupyOh33b25TjYbvwAcg==} + + '@simplewebauthn/browser@8.3.7': + resolution: {integrity: sha512-ZtRf+pUEgOCvjrYsbMsJfiHOdKcrSZt2zrAnIIpfmA06r0FxBovFYq0rJ171soZbe13KmWzAoLKjSxVW7KxCdQ==} + + '@simplewebauthn/browser@9.0.1': + resolution: {integrity: sha512-wD2WpbkaEP4170s13/HUxPcAV5y4ZXaKo1TfNklS5zDefPinIgXOpgz1kpEvobAsaLPa2KeH7AKKX/od1mrBJw==} + + '@simplewebauthn/types@12.0.0': + resolution: {integrity: sha512-q6y8MkoV8V8jB4zzp18Uyj2I7oFp2/ONL8c3j8uT06AOWu3cIChc1au71QYHrP2b+xDapkGTiv+9lX7xkTlAsA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@simplewebauthn/types@9.0.1': + resolution: {integrity: sha512-tGSRP1QvsAvsJmnOlRQyw/mvK9gnPtjEc5fg2+m8n+QUa+D7rvrKkOYyfpy42GTs90X3RDOnqJgfHt+qO67/+w==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@simplewebauthn/typescript-types@8.3.4': + resolution: {integrity: sha512-38xtca0OqfRVNloKBrFB5LEM6PN5vzFbJG6rAutPVrtGHFYxPdiV3btYWq0eAZAZmP+dqFPYJxJWeJrGfmYHng==} + deprecated: This package has been renamed to @simplewebauthn/types. Please install @simplewebauthn/types instead to ensure you receive future updates. + '@solana/buffer-layout@4.0.1': resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} @@ -337,6 +448,110 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@vue/reactivity@3.5.22': + resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} + + '@vue/shared@3.5.22': + resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + + '@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==} + + '@zerodev/ecdsa-validator@5.4.9': + resolution: {integrity: sha512-9NVE8/sQIKRo42UOoYKkNdmmHJY8VlT4t+2MHD2ipLg21cpbY9fS17TGZh61+Bl3qlqc8pP23I6f89z9im7kuA==} + peerDependencies: + '@zerodev/sdk': ^5.4.13 + viem: ^2.28.0 + + '@zerodev/multi-chain-ecdsa-validator@5.4.5': + resolution: {integrity: sha512-cmQcsl5WbjnyQuhAS76BUqsHGtUOfWqdkMlm60s75kmRKzF5PiKzRpWIZyeISVmJV0F4P5u1keo1xYONEFiw1w==} + peerDependencies: + '@zerodev/sdk': ^5.4.0 + '@zerodev/webauthn-key': ^5.4.0 + viem: ^2.28.0 + + '@zerodev/sdk@5.4.36': + resolution: {integrity: sha512-8ewwlijbzWA16AZ03w7zqvTVXFdaUqGOJmbcAZPIIuz52bsdBsKYiF37RZ05KJ24hfdYsIHjE8pwocfjrtMcng==} + peerDependencies: + viem: ^2.28.0 + + '@zerodev/webauthn-key@5.4.4': + resolution: {integrity: sha512-LgBwViiGdOD5K6mP+ko/mPD82Be3yQBb+fSQwsz6YB7cwbcRXmYPWgL2ozvhHmEuR+fkpHscazPDGoCm1pii4Q==} + peerDependencies: + viem: ^2.28.0 + + 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.1.0: resolution: {integrity: sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==} peerDependencies: @@ -352,12 +567,20 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + argon2id@1.0.1: resolution: {integrity: sha512-rsiD3lX+0L0CsiZARp3bf9EGxprtuWAT7PpiJd+Fk53URV0/USOQkBIP1dLTV8t6aui0ECbymQ9W9YCcTd6XgA==} 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'} + axios@1.12.2: resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} @@ -367,9 +590,21 @@ packages: 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.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + bn.js@5.2.2: resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} @@ -379,6 +614,12 @@ packages: bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -394,6 +635,10 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -405,6 +650,22 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -417,6 +678,12 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + dotenv@17.2.3: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} @@ -425,6 +692,12 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -441,6 +714,9 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 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==} @@ -452,16 +728,38 @@ packages: engines: {node: '>=18'} hasBin: true + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + 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-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==} + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -501,6 +799,9 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + h3@1.15.4: + resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -520,6 +821,9 @@ packages: 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==} @@ -531,6 +835,13 @@ packages: peerDependencies: fp-ts: ^2.5.0 + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + isomorphic-ws@4.0.1: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: @@ -549,10 +860,23 @@ packages: json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -564,6 +888,12 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + 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} @@ -577,6 +907,34 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + node-mock-http@1.0.3: + resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + ox@0.7.1: + resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + ox@0.9.6: resolution: {integrity: sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==} peerDependencies: @@ -598,9 +956,51 @@ packages: ox: optional: true + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + 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 + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -610,6 +1010,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -618,6 +1022,17 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + 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'} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -628,6 +1043,20 @@ packages: 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_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + superstruct@2.0.2: resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} engines: {node: '>=14.0.0'} @@ -635,6 +1064,16 @@ packages: text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.0.16: + resolution: {integrity: sha512-TkEq38COU640mzOKPk4D1oH3FFVvwEtMaKIfw/+F/umVsy7ONWu8PPQH0c11qJ/Jq/zbcQGprXGsT8GcaDSmJg==} + hasBin: true + toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -642,6 +1081,13 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -655,13 +1101,90 @@ packages: engines: {node: '>=14.17'} hasBin: true + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@7.14.0: resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + unstorage@1.17.1: + resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==} + 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.0.3 || ^7.0.0 + '@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.0.1 + 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 + utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + 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 @@ -670,6 +1193,14 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + viem@2.31.0: + resolution: {integrity: sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + viem@2.38.1: resolution: {integrity: sha512-+5c5b8AmGBYJGMU0A3spIFgsBXseV1E+LlQnSDG80IBoXYDqeQ2XZ8wrwCl9FqLVeP+8NgXtouJaPpmv9VGwHQ==} peerDependencies: @@ -678,12 +1209,19 @@ packages: typescript: optional: true + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + 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'} @@ -696,6 +1234,18 @@ packages: 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.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -712,16 +1262,152 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zod@4.0.5: + resolution: {integrity: sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==} + snapshots: '@adraffy/ens-normalize@1.11.1': {} '@babel/runtime@7.28.4': {} + '@dynamic-labs-sdk/assert-package-version@0.1.0-alpha.23': {} + + '@dynamic-labs-sdk/client@0.1.0-alpha.23(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@dynamic-labs-sdk/assert-package-version': 0.1.0-alpha.23 + '@dynamic-labs-wallet/browser-wallet-client': 0.0.187(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs/sdk-api-core': 0.0.813 + '@simplewebauthn/browser': 13.1.0 + buffer: 6.0.3 + eventemitter3: 5.0.1 + zod: 4.0.5 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@dynamic-labs-sdk/evm@0.1.0-alpha.23(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@dynamic-labs-sdk/assert-package-version': 0.1.0-alpha.23 + '@dynamic-labs-sdk/client': 0.1.0-alpha.23(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs-sdk/wallet-connect': 0.1.0-alpha.23(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@dynamic-labs/sdk-api-core': 0.0.813 + '@walletconnect/types': 2.21.8 + '@walletconnect/utils': 2.21.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.0.5) + viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + 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 + - debug + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@dynamic-labs-sdk/wallet-connect@0.1.0-alpha.23(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@dynamic-labs-sdk/assert-package-version': 0.1.0-alpha.23 + '@dynamic-labs-sdk/client': 0.1.0-alpha.23(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs/sdk-api-core': 0.0.813 + '@walletconnect/sign-client': 2.21.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.0.5) + '@walletconnect/types': 2.21.8 + '@walletconnect/utils': 2.21.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - ioredis + - typescript + - uploadthing + - utf-8-validate + + '@dynamic-labs-sdk/zerodev@0.1.0-alpha.23(@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@dynamic-labs-sdk/assert-package-version': 0.1.0-alpha.23 + '@dynamic-labs-sdk/client': 0.1.0-alpha.23(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs-sdk/evm': 0.1.0-alpha.23(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@dynamic-labs/sdk-api-core': 0.0.813 + '@zerodev/ecdsa-validator': 5.4.9(@zerodev/sdk@5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@zerodev/multi-chain-ecdsa-validator': 5.4.5(@zerodev/sdk@5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@zerodev/sdk': 5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + 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' + - '@zerodev/webauthn-key' + - aws4fetch + - bufferutil + - db0 + - debug + - ioredis + - typescript + - uploadthing + - utf-8-validate + - zod + + '@dynamic-labs-wallet/browser-wallet-client@0.0.187(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@dynamic-labs-wallet/core': 0.0.187(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs/logger': 4.39.0 + '@dynamic-labs/message-transport': 4.39.0 + uuid: 11.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + '@dynamic-labs-wallet/browser@0.0.167': dependencies: '@dynamic-labs-wallet/core': 0.0.167 - '@dynamic-labs/logger': 4.37.2 + '@dynamic-labs/logger': 4.39.0 '@dynamic-labs/sdk-api-core': 0.0.764 '@noble/hashes': 1.7.1 argon2id: 1.0.1 @@ -740,10 +1426,10 @@ snapshots: transitivePeerDependencies: - debug - '@dynamic-labs-wallet/core@0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@dynamic-labs-wallet/core@0.0.187(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@dynamic-labs-wallet/forward-mpc-client': 0.1.0-alpha.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@dynamic-labs/sdk-api-core': 0.0.801 + '@dynamic-labs/sdk-api-core': 0.0.813 axios: 1.12.2 uuid: 11.1.0 transitivePeerDependencies: @@ -751,10 +1437,21 @@ snapshots: - debug - utf-8-validate - '@dynamic-labs-wallet/forward-mpc-client@0.1.0-alpha.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@dynamic-labs-wallet/core@0.0.188(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@dynamic-labs-wallet/forward-mpc-client': 0.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs/sdk-api-core': 0.0.813 + axios: 1.12.2 + uuid: 11.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@dynamic-labs-wallet/forward-mpc-client@0.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@dynamic-labs-wallet/core': 0.0.167 - '@dynamic-labs-wallet/forward-mpc-shared': 0.1.0-alpha.8 + '@dynamic-labs-wallet/forward-mpc-shared': 0.1.0 '@evervault/wasm-attestation-bindings': 0.3.0 '@noble/hashes': 2.0.1 '@noble/post-quantum': 0.5.2 @@ -766,7 +1463,34 @@ snapshots: - debug - utf-8-validate - '@dynamic-labs-wallet/forward-mpc-shared@0.1.0-alpha.8': + '@dynamic-labs-wallet/forward-mpc-client@0.1.0-alpha.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@dynamic-labs-wallet/core': 0.0.167 + '@dynamic-labs-wallet/forward-mpc-shared': 0.1.0-alpha.8 + '@evervault/wasm-attestation-bindings': 0.3.0 + '@noble/hashes': 2.0.1 + '@noble/post-quantum': 0.5.2 + eventemitter3: 5.0.1 + fp-ts: 2.16.11 + ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + '@dynamic-labs-wallet/forward-mpc-shared@0.1.0': + dependencies: + '@dynamic-labs-wallet/browser': 0.0.167 + '@dynamic-labs-wallet/core': 0.0.167 + '@noble/ciphers': 0.4.1 + '@noble/hashes': 2.0.1 + '@noble/post-quantum': 0.5.2 + fp-ts: 2.16.11 + io-ts: 2.2.22(fp-ts@2.16.11) + transitivePeerDependencies: + - debug + + '@dynamic-labs-wallet/forward-mpc-shared@0.1.0-alpha.8': dependencies: '@dynamic-labs-wallet/browser': 0.0.167 '@dynamic-labs-wallet/core': 0.0.167 @@ -778,19 +1502,46 @@ snapshots: transitivePeerDependencies: - debug - '@dynamic-labs-wallet/node-evm@0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@dynamic-labs-wallet/node-evm@0.0.188(@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': dependencies: - '@dynamic-labs-wallet/node': 0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs-sdk/client': 0.1.0-alpha.23(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs-sdk/evm': 0.1.0-alpha.23(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@dynamic-labs-sdk/zerodev': 0.1.0-alpha.23(@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@dynamic-labs-wallet/node': 0.0.188(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@dynamic-labs/sdk-api-core': 0.0.801 + '@zerodev/ecdsa-validator': 5.4.9(@zerodev/sdk@5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@zerodev/sdk': 5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) 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' + - '@zerodev/webauthn-key' + - aws4fetch - bufferutil + - db0 - debug + - ioredis + - typescript + - uploadthing - utf-8-validate + - zod - '@dynamic-labs-wallet/node-svm@0.0.183(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@dynamic-labs-wallet/node-svm@0.0.188(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: - '@dynamic-labs-wallet/node': 0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs-wallet/node': 0.0.188(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.4(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -799,10 +1550,11 @@ snapshots: - typescript - utf-8-validate - '@dynamic-labs-wallet/node@0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@dynamic-labs-wallet/node@0.0.188(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@dynamic-labs-wallet/core': 0.0.183(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@dynamic-labs/logger': 4.37.2 + '@dynamic-labs-wallet/core': 0.0.188(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs-wallet/forward-mpc-client': 0.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@dynamic-labs/logger': 4.39.0 '@dynamic-labs/sdk-api-core': 0.0.801 '@noble/hashes': 1.7.1 uuid: 11.1.0 @@ -811,15 +1563,46 @@ snapshots: - debug - utf-8-validate - '@dynamic-labs/logger@4.37.2': + '@dynamic-labs/assert-package-version@4.39.0': + dependencies: + '@dynamic-labs/logger': 4.39.0 + + '@dynamic-labs/logger@4.39.0': dependencies: eventemitter3: 5.0.1 + '@dynamic-labs/message-transport@4.39.0': + dependencies: + '@dynamic-labs/assert-package-version': 4.39.0 + '@dynamic-labs/logger': 4.39.0 + '@dynamic-labs/utils': 4.39.0 + '@vue/reactivity': 3.5.22 + eventemitter3: 5.0.1 + '@dynamic-labs/sdk-api-core@0.0.764': {} '@dynamic-labs/sdk-api-core@0.0.801': {} - '@dynamic-labs/sdk-api@0.0.805': {} + '@dynamic-labs/sdk-api-core@0.0.809': {} + + '@dynamic-labs/sdk-api-core@0.0.813': {} + + '@dynamic-labs/sdk-api@0.0.814': {} + + '@dynamic-labs/types@4.39.0': + dependencies: + '@dynamic-labs/assert-package-version': 4.39.0 + '@dynamic-labs/sdk-api-core': 0.0.809 + + '@dynamic-labs/utils@4.39.0': + dependencies: + '@dynamic-labs/assert-package-version': 4.39.0 + '@dynamic-labs/logger': 4.39.0 + '@dynamic-labs/sdk-api-core': 0.0.809 + '@dynamic-labs/types': 4.39.0 + buffer: 6.0.3 + eventemitter3: 5.0.1 + tldts: 6.0.16 '@esbuild/aix-ppc64@0.25.10': optional: true @@ -899,16 +1682,38 @@ snapshots: '@esbuild/win32-x64@0.25.10': optional: true + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + '@evervault/wasm-attestation-bindings@0.3.0': {} + '@msgpack/msgpack@3.1.2': {} + '@noble/ciphers@0.4.1': {} '@noble/ciphers@1.3.0': {} + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.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 @@ -917,6 +1722,10 @@ snapshots: dependencies: '@noble/hashes': 2.0.1 + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.7.0': {} + '@noble/hashes@1.7.1': {} '@noble/hashes@1.8.0': {} @@ -928,19 +1737,48 @@ snapshots: '@noble/curves': 2.0.1 '@noble/hashes': 2.0.1 + '@scure/base@1.1.9': {} + '@scure/base@1.2.6': {} + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + '@scure/bip32@1.7.0': dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + '@scure/bip39@1.6.0': dependencies: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + '@simplewebauthn/browser@13.1.0': {} + + '@simplewebauthn/browser@8.3.7': + dependencies: + '@simplewebauthn/typescript-types': 8.3.4 + + '@simplewebauthn/browser@9.0.1': + dependencies: + '@simplewebauthn/types': 9.0.1 + + '@simplewebauthn/types@12.0.0': {} + + '@simplewebauthn/types@9.0.1': {} + + '@simplewebauthn/typescript-types@8.3.4': {} + '@solana/buffer-layout@4.0.1': dependencies: buffer: 6.0.3 @@ -1009,18 +1847,320 @@ snapshots: dependencies: '@types/node': 24.7.2 - abitype@1.1.0(typescript@5.9.3): + '@vue/reactivity@3.5.22': + dependencies: + '@vue/shared': 3.5.22 + + '@vue/shared@3.5.22': {} + + '@walletconnect/core@2.21.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.0.9)(utf-8-validate@5.0.10) + '@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.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + 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.1(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.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.0.5)': + dependencies: + '@walletconnect/core': 2.21.8(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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 + + '@zerodev/ecdsa-validator@5.4.9(@zerodev/sdk@5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@zerodev/sdk': 5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + + '@zerodev/multi-chain-ecdsa-validator@5.4.5(@zerodev/sdk@5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)))(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@simplewebauthn/browser': 9.0.1 + '@simplewebauthn/typescript-types': 8.3.4 + '@zerodev/sdk': 5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@zerodev/webauthn-key': 5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)) + merkletreejs: 0.3.11 + viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + + '@zerodev/sdk@5.4.36(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + semver: 7.7.3 + viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + + '@zerodev/webauthn-key@5.4.4(viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@noble/curves': 1.9.7 + '@simplewebauthn/browser': 8.3.7 + '@simplewebauthn/types': 12.0.0 + viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + + abitype@1.0.8(typescript@5.9.3)(zod@4.0.5): optionalDependencies: typescript: 5.9.3 + zod: 4.0.5 + + abitype@1.1.0(typescript@5.9.3)(zod@4.0.5): + optionalDependencies: + typescript: 5.9.3 + zod: 4.0.5 agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + argon2id@1.0.1: {} asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + axios@1.12.2: dependencies: follow-redirects: 1.15.11 @@ -1041,8 +2181,16 @@ snapshots: dependencies: safe-buffer: 5.2.1 + base-x@5.0.1: {} + base64-js@1.5.1: {} + bignumber.js@9.3.1: {} + + blakejs@1.2.1: {} + + bn.js@4.11.6: {} + bn.js@5.2.2: {} borsh@0.7.0: @@ -1055,6 +2203,12 @@ snapshots: dependencies: base-x: 3.0.11 + bs58@6.0.0: + dependencies: + base-x: 5.0.1 + + buffer-reverse@1.0.1: {} + buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -1072,6 +2226,10 @@ snapshots: chalk@5.6.2: {} + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -1080,12 +2238,28 @@ snapshots: commander@2.20.3: {} + cookie-es@1.2.2: {} + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + crypto-js@4.2.0: {} + + decode-uri-component@0.2.2: {} + + defu@6.1.4: {} + delay@5.0.0: {} delayed-stream@1.0.0: {} depd@2.0.0: {} + destr@2.0.5: {} + + detect-browser@5.3.0: {} + dotenv@17.2.3: {} dunder-proto@1.0.1: @@ -1094,6 +2268,17 @@ snapshots: 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 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -1109,6 +2294,8 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + es-toolkit@1.39.3: {} + es6-promise@4.2.8: {} es6-promisify@5.0.0: @@ -1144,12 +2331,34 @@ snapshots: '@esbuild/win32-ia32': 0.25.10 '@esbuild/win32-x64': 0.25.10 + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.8.0 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethjs-unit@0.1.6: + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + eventemitter3@5.0.1: {} + events@3.3.0: {} + eyes@0.1.8: {} + fast-redact@3.5.0: {} + fast-stable-stringify@1.0.0: {} + filter-obj@1.1.0: {} + follow-redirects@1.15.11: {} form-data@4.0.4: @@ -1191,6 +2400,18 @@ snapshots: gopd@1.2.0: {} + h3@1.15.4: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.3 + radix3: 1.1.2 + ufo: 1.6.1 + uncrypto: 0.1.3 + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -1213,6 +2434,8 @@ snapshots: dependencies: ms: 2.1.3 + idb-keyval@6.2.2: {} + ieee754@1.2.1: {} inherits@2.0.4: {} @@ -1221,10 +2444,18 @@ snapshots: dependencies: fp-ts: 2.16.11 + iron-webcrypto@1.2.1: {} + + is-hex-prefixed@1.0.0: {} + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + isows@1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + isows@1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -1249,8 +2480,22 @@ snapshots: json-stringify-safe@5.0.1: {} + keyvaluestorage-interface@1.0.0: {} + + lru-cache@10.4.3: {} + math-intrinsics@1.1.0: {} + merkletreejs@0.3.11: + dependencies: + bignumber.js: 9.3.1 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.4 + + micro-ftch@0.3.1: {} + mime-db@1.52.0: {} mime-types@2.1.35: @@ -1259,6 +2504,10 @@ snapshots: ms@2.1.3: {} + multiformats@9.9.0: {} + + node-fetch-native@1.6.7: {} + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -1266,6 +2515,42 @@ snapshots: node-gyp-build@4.8.4: optional: true + node-mock-http@1.0.3: {} + + normalize-path@3.0.0: {} + + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + ofetch@1.4.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.1 + + on-exit-leak-free@0.2.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + ox@0.7.1(typescript@5.9.3)(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.1.0(typescript@5.9.3)(zod@4.0.5) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + ox@0.9.6(typescript@5.9.3): dependencies: '@adraffy/ens-normalize': 1.11.1 @@ -1274,7 +2559,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3) + abitype: 1.1.0(typescript@5.9.3)(zod@4.0.5) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -1289,8 +2574,58 @@ snapshots: dependencies: viem: 2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10) + picomatch@2.3.1: {} + + 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 + + process-warning@1.0.0: {} + proxy-from-env@1.1.0: {} + 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 + + quick-format-unescaped@4.0.4: {} + + radix3@1.1.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@4.1.2: {} + + real-require@0.1.0: {} + resolve-pkg-maps@1.0.0: {} rpc-websockets@9.2.0: @@ -1308,10 +2643,20 @@ snapshots: safe-buffer@5.2.1: {} + safe-stable-stringify@2.5.0: {} + semver@7.7.3: {} setprototypeof@1.2.0: {} + sonic-boom@2.8.0: + dependencies: + atomic-sleep: 1.0.0 + + split-on-first@1.1.0: {} + + split2@4.2.0: {} + statuses@2.0.1: {} stream-chain@2.2.5: {} @@ -1320,14 +2665,40 @@ snapshots: dependencies: stream-chain: 2.2.5 + stream-shift@1.0.3: {} + + strict-uri-encode@2.0.0: {} + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + superstruct@2.0.2: {} text-encoding-utf-8@1.0.2: {} + thread-stream@0.15.2: + dependencies: + real-require: 0.1.0 + + tldts-core@6.1.86: {} + + tldts@6.0.16: + dependencies: + tldts-core: 6.1.86 + toidentifier@1.0.1: {} tr46@0.0.3: {} + treeify@1.1.0: {} + + tslib@1.14.1: {} + tslib@2.8.1: {} tsx@4.20.6: @@ -1339,24 +2710,66 @@ snapshots: typescript@5.9.3: {} + ufo@1.6.1: {} + + uint8arrays@3.1.1: + dependencies: + multiformats: 9.9.0 + + uncrypto@0.1.3: {} + undici-types@7.14.0: {} + unstorage@1.17.1(idb-keyval@6.2.2): + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.4 + lru-cache: 10.4.3 + node-fetch-native: 1.6.7 + ofetch: 1.4.1 + ufo: 1.6.1 + optionalDependencies: + idb-keyval: 6.2.2 + utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.4 optional: true + utf8@3.0.0: {} + + util-deprecate@1.0.2: {} + uuid@11.1.0: {} uuid@8.3.2: {} + viem@2.31.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(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.3)(zod@4.0.5) + isows: 1.0.7(ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + ox: 0.7.1(typescript@5.9.3)(zod@4.0.5) + ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + viem@2.38.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3) + abitype: 1.1.0(typescript@5.9.3)(zod@4.0.5) isows: 1.0.7(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) ox: 0.9.6(typescript@5.9.3) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -1367,6 +2780,17 @@ snapshots: - utf-8-validate - zod + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.2 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + webidl-conversions@3.0.1: {} whatwg-url@5.0.0: @@ -1374,14 +2798,23 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + wrappy@1.0.2: {} + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 utf-8-validate: 5.0.10 + ws@8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 utf-8-validate: 5.0.10 yocto-queue@1.2.1: {} + + zod@4.0.5: {} diff --git a/examples/nodejs-omnibus-sweep/src/create-wallet.ts b/examples/nodejs-omnibus-sweep/src/create-wallet.ts deleted file mode 100644 index 2058d9b..0000000 --- a/examples/nodejs-omnibus-sweep/src/create-wallet.ts +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env tsx - -/** - * Dynamic Basic Wallet Demo - * - * This demo showcases the fundamental Dynamic wallet creation and - * gasless transaction capabilities. It demonstrates: - * - * 1. Server-side wallet account creation using Dynamic's API - * 2. Wallet client configuration with threshold signatures - * 3. Smart account setup with Pimlico for gasless transactions - * 4. Basic transaction execution without gas fees - * - * Business Use Case: - * This serves as a foundation for understanding Dynamic's wallet management - * and gasless transaction infrastructure before implementing more complex - * patterns like omnibus sweeps. - * - * Usage: pnpm create-wallet - */ - -import { ThresholdSignatureScheme } from "@dynamic-labs-wallet/node"; -import { zeroAddress } from "viem"; -import { baseSepolia } from "viem/chains"; - -import { authenticatedEvmClient } from "./libs/dynamic"; -import { getAuthorization, getSmartAccountClient } from "./libs/pimlico"; -import { getWalletClient } from "./libs/viem"; - -/** - * Main demo execution flow: - * 1. Create a Dynamic wallet account with 2-of-2 threshold signatures - * 2. Configure wallet client with the created account - * 3. Set up smart account with Pimlico for gasless transactions - * 4. Execute a basic transaction to demonstrate gasless capabilities - */ -async function main() { - const dynamicEvmClient = await authenticatedEvmClient(); - const wallet = await dynamicEvmClient.createWalletAccount({ - thresholdSignatureScheme: ThresholdSignatureScheme.TWO_OF_TWO, - backUpToClientShareService: false, - }); - console.info(`Wallet created: ${wallet.accountAddress}`); - - const walletClient = getWalletClient({ - dynamicEvmClient, - address: wallet.accountAddress, - externalServerKeyShares: wallet.externalServerKeyShares, - }); - - const [smartAccount, authorization] = await Promise.all([ - getSmartAccountClient(baseSepolia, walletClient), - getAuthorization(baseSepolia, walletClient), - ]); - - const hash = await smartAccount.sendTransaction({ - to: zeroAddress, - authorization, - }); - - console.info(`Transaction hash: ${hash}`); - - process.exit(0); -} - -main().catch((err) => { - console.error(err); - process.exit(1); -}); diff --git a/examples/nodejs-omnibus-sweep/src/libs/dynamic.ts b/examples/nodejs-omnibus-sweep/src/libs/dynamic.ts index b41062c..164b3f6 100644 --- a/examples/nodejs-omnibus-sweep/src/libs/dynamic.ts +++ b/examples/nodejs-omnibus-sweep/src/libs/dynamic.ts @@ -1,4 +1,8 @@ -import { DynamicEvmWalletClient } from "@dynamic-labs-wallet/node-evm"; +import { + createZerodevClient, + DynamicEvmWalletClient, +} from "@dynamic-labs-wallet/node-evm"; +import type { KernelClient } from "@dynamic-labs-wallet/node-evm/src/zerodev/types"; import { DynamicSvmWalletClient } from "@dynamic-labs-wallet/node-svm"; import { DYNAMIC_API_TOKEN, DYNAMIC_ENVIRONMENT_ID } from "../../constants"; @@ -7,13 +11,19 @@ interface ClientProps { environmentId?: string; } -export type SupportedChain = "EVM" | "SVM"; +interface SmartAccountClientProps { + evmClient: DynamicEvmWalletClient; + networkId: string; + address: `0x${string}`; + externalServerKeyShares?: string[]; + password?: string; +} export const authenticatedEvmClient = async (args?: ClientProps) => { const environmentId = args?.environmentId ?? DYNAMIC_ENVIRONMENT_ID; const authToken = args?.authToken ?? DYNAMIC_API_TOKEN; - const client = new DynamicEvmWalletClient({ environmentId }); + await client.authenticateApiToken(authToken); return client; }; @@ -21,8 +31,24 @@ export const authenticatedEvmClient = async (args?: ClientProps) => { export const authenticatedSvmClient = async (args?: ClientProps) => { const environmentId = args?.environmentId ?? DYNAMIC_ENVIRONMENT_ID; const authToken = args?.authToken ?? DYNAMIC_API_TOKEN; - const client = new DynamicSvmWalletClient({ environmentId }); + await client.authenticateApiToken(authToken); return client; }; + +export const smartAccountClient = async ( + args: SmartAccountClientProps +): Promise => { + const zerodevClient = await createZerodevClient(args.evmClient); + + return await zerodevClient.createKernelClientForAddress({ + withSponsorship: true, + address: args.address, + networkId: args.networkId, + ...(args.externalServerKeyShares && { + externalServerKeyShares: args.externalServerKeyShares, + }), + ...(args.password && { password: args.password }), + }); +}; diff --git a/examples/nodejs-omnibus-sweep/src/libs/pimlico.ts b/examples/nodejs-omnibus-sweep/src/libs/pimlico.ts index 57a83db..d6cd29d 100644 --- a/examples/nodejs-omnibus-sweep/src/libs/pimlico.ts +++ b/examples/nodejs-omnibus-sweep/src/libs/pimlico.ts @@ -77,9 +77,7 @@ export async function getSmartAccountClient( const { bundlerTransport } = getPimlicoClientsForChain(chain.id, opts); const paymaster = createPimlicoPaymasterClient(chain.id, opts); const client = getPublicClient({ chain }); - const account = await to7702SimpleSmartAccount({ client, owner }); - console.info(`Smart account created...`); return createSmartAccountClient({ client, diff --git a/examples/nodejs-omnibus-sweep/src/utils.ts b/examples/nodejs-omnibus-sweep/src/libs/utils.ts similarity index 100% rename from examples/nodejs-omnibus-sweep/src/utils.ts rename to examples/nodejs-omnibus-sweep/src/libs/utils.ts diff --git a/examples/nodejs-omnibus-sweep/src/libs/viem.ts b/examples/nodejs-omnibus-sweep/src/libs/viem.ts index 4780fb1..220d2ed 100644 --- a/examples/nodejs-omnibus-sweep/src/libs/viem.ts +++ b/examples/nodejs-omnibus-sweep/src/libs/viem.ts @@ -18,6 +18,7 @@ interface CreateWalletAccountParams { externalServerKeyShares?: Awaited< ReturnType >["externalServerKeyShares"]; + password?: string; } export function getPublicClient({ chain, rpcUrl }: GetPublicClientParams) { @@ -32,6 +33,7 @@ export function getWalletClient({ dynamicEvmClient, address, externalServerKeyShares, + password, }: CreateWalletAccountParams) { const account = { address: address as `0x${string}`, @@ -43,6 +45,7 @@ export function getWalletClient({ accountAddress: address, externalServerKeyShares, message, + ...(password && { password }), }); return signature as Hex; }, @@ -51,6 +54,7 @@ export function getWalletClient({ accountAddress: address, externalServerKeyShares, typedData: parameters, + ...(password && { password }), })) as Hex; }, signTransaction: async (transaction: any) => { @@ -58,6 +62,7 @@ export function getWalletClient({ senderAddress: address, externalServerKeyShares, transaction, + ...(password && { password }), })) as Hex; }, signAuthorization: async (parameters: any) => { @@ -65,6 +70,7 @@ export function getWalletClient({ accountAddress: address, externalServerKeyShares, authorization: parameters, + ...(password && { password }), }); // Return the complete signed authorization (original data + signature) return { ...parameters, ...signature }; diff --git a/examples/nodejs-omnibus-sweep/src/libs/wallet-helpers.ts b/examples/nodejs-omnibus-sweep/src/libs/wallet-helpers.ts new file mode 100644 index 0000000..17e06a5 --- /dev/null +++ b/examples/nodejs-omnibus-sweep/src/libs/wallet-helpers.ts @@ -0,0 +1,56 @@ +import { ThresholdSignatureScheme } from "@dynamic-labs-wallet/node"; +import type { DynamicEvmWalletClient } from "@dynamic-labs-wallet/node-evm"; + +import { getWallet } from "./wallet-storage"; + +export interface WalletInfo { + address: string; + externalServerKeyShares: string[]; +} + +/** + * Get an existing wallet from storage or create a new ephemeral wallet + * + * @param dynamicEvmClient - Authenticated Dynamic EVM client + * @param addressArg - Optional wallet address to load from storage + * @param password - Optional password for wallet creation + * @returns Wallet address and key shares + */ +export async function getOrCreateWallet( + dynamicEvmClient: DynamicEvmWalletClient, + addressArg?: string, + password?: string +): Promise { + // If address provided, load from storage + if (addressArg) { + console.info(`šŸ” Looking up wallet: ${addressArg}`); + const stored = getWallet(addressArg); + + if (!stored) { + console.error(`āŒ Wallet not found: ${addressArg}`); + console.error(`šŸ’” Tip: Use "pnpm wallet --list" to see saved wallets`); + process.exit(1); + } + + console.info(`āœ… Loaded wallet from storage`); + return { + address: stored.address, + externalServerKeyShares: stored.externalServerKeyShares, + }; + } + + // Create new ephemeral wallet + console.info(`Creating new wallet...`); + const wallet = await dynamicEvmClient.createWalletAccount({ + thresholdSignatureScheme: ThresholdSignatureScheme.TWO_OF_TWO, + backUpToClientShareService: false, + ...(password && { password }), + }); + + console.info(`āœ… Wallet created: ${wallet.accountAddress}`); + + return { + address: wallet.accountAddress, + externalServerKeyShares: wallet.externalServerKeyShares, + }; +} diff --git a/examples/nodejs-omnibus-sweep/src/libs/wallet-storage.ts b/examples/nodejs-omnibus-sweep/src/libs/wallet-storage.ts new file mode 100644 index 0000000..820a9e8 --- /dev/null +++ b/examples/nodejs-omnibus-sweep/src/libs/wallet-storage.ts @@ -0,0 +1,98 @@ +/** + * Wallet Storage Utilities + * + * āš ļø WARNING: FOR TESTING AND DEVELOPMENT ONLY - NOT FOR PRODUCTION USE + * + * This file provides simple file-based storage for wallet key shares. + * It is intended ONLY for local development and testing purposes. + * + * DO NOT USE IN PRODUCTION because: + * - Key shares are stored unencrypted in a local JSON file + * - No access control or security measures are implemented + * - File permissions are not managed + * - No backup or recovery mechanisms + * + * For production environments, you should: + * - Use a secure key management service (AWS KMS, HashiCorp Vault, etc.) + * - Encrypt key shares at rest + * - Implement proper access controls and audit logging + * - Use a secure database with encryption + * - Follow your organization's security best practices + */ + +import { existsSync, readFileSync, writeFileSync } from "node:fs"; +import { join } from "node:path"; + +// Local file storage - FOR TESTING ONLY +const WALLET_FILE = join(process.cwd(), ".wallets.json"); + +export interface StoredWallet { + address: string; + externalServerKeyShares: string[]; + createdAt: string; +} + +export interface WalletStorage { + [address: string]: StoredWallet; +} + +/** + * Load all saved wallets from local storage + * āš ļø FOR TESTING ONLY - Use secure storage in production + */ +export function loadWallets(): WalletStorage { + if (!existsSync(WALLET_FILE)) return {}; + + try { + const data = readFileSync(WALLET_FILE, "utf-8"); + return JSON.parse(data); + } catch (error) { + console.warn("Failed to load wallets file:", error); + return {}; + } +} + +/** + * Save a wallet to local storage + * āš ļø FOR TESTING ONLY - Use secure storage in production + */ +export function saveWallet(wallet: StoredWallet): void { + const wallets = loadWallets(); + wallets[wallet.address] = wallet; + + writeFileSync(WALLET_FILE, JSON.stringify(wallets, null, 2)); + console.info(`šŸ’¾ Wallet saved to ${WALLET_FILE}`); +} + +/** + * Get a specific wallet by address + * āš ļø FOR TESTING ONLY - Use secure storage in production + */ +export function getWallet(address: string): StoredWallet | undefined { + const wallets = loadWallets(); + return wallets[address]; +} + +/** + * List all saved wallets + * āš ļø FOR TESTING ONLY - Use secure storage in production + */ +export function listWallets(): StoredWallet[] { + const wallets = loadWallets(); + return Object.values(wallets); +} + +/** + * Delete a wallet from local storage + * āš ļø FOR TESTING ONLY - Use secure storage in production + */ +export function deleteWallet(address: string): boolean { + const wallets = loadWallets(); + + if (!wallets[address]) return false; + + delete wallets[address]; + writeFileSync(WALLET_FILE, JSON.stringify(wallets, null, 2)); + console.info(`šŸ—‘ļø Wallet ${address} deleted`); + return true; +} diff --git a/examples/nodejs-omnibus-sweep/src/omnibus-sweep.ts b/examples/nodejs-omnibus-sweep/src/omnibus-sweep.ts index 01421c5..c65cc89 100644 --- a/examples/nodejs-omnibus-sweep/src/omnibus-sweep.ts +++ b/examples/nodejs-omnibus-sweep/src/omnibus-sweep.ts @@ -3,22 +3,32 @@ /** * Dynamic Gasless Transaction Demo - Omnibus Sweep * - * This demo showcases Dynamic's server-side wallet management capabilities - * for financial institutions. It demonstrates: + * Demonstrates how to create and manage multiple server-side wallets + * with gasless transactions for financial applications. * - * 1. Creation of omnibus account using Dynamic's API - * 2. Creation of multiple customer wallets using Dynamic's API - * 3. Gasless USDC token operations - * 4. Aggregation of funds from customer wallets to omnibus account - * 5. Scalable concurrent transaction processing + * ## What This Demo Does * - * Business Use Case: - * You can use this pattern to manage customer funds in a compliant, - * gas-efficient manner where individual customer wallets hold funds - * that can be swept to centralized omnibus accounts for settlement. + * 1. Creates an omnibus wallet for fund aggregation + * 2. Creates multiple customer wallets (default: 10) + * 3. Funds each customer wallet with random USDC amounts + * 4. Sweeps all funds to the omnibus wallet using gasless transactions + * 5. Processes transactions concurrently for scalability * - * Usage: pnpm omnibus [number_of_wallets] - * Example: pnpm omnibus 20 + * ## Usage + * + * Run with default settings (10 wallets): + * pnpm omnibus + * + * Run with custom number of wallets: + * pnpm omnibus 20 + * + * ## Use Case + * + * This pattern is ideal for financial institutions that need to: + * - Manage individual customer wallets + * - Aggregate funds to centralized omnibus accounts + * - Execute transactions without customers holding ETH for gas + * - Process operations at scale with concurrent transactions */ import { ThresholdSignatureScheme } from "@dynamic-labs-wallet/node"; @@ -29,13 +39,13 @@ import { baseSepolia } from "viem/chains"; import { CONTRACTS, TOKEN_ABI } from "../constants"; import { authenticatedEvmClient } from "./libs/dynamic"; import { getAuthorization, getSmartAccountClient } from "./libs/pimlico"; -import { getPublicClient, getWalletClient } from "./libs/viem"; import { dollarsToTokenUnits, formatAddress, getAddressLink, getTransactionLink, -} from "./utils"; +} from "./libs/utils"; +import { getPublicClient, getWalletClient } from "./libs/viem"; interface SendTransactionParams { walletClient: LocalAccount; @@ -86,9 +96,11 @@ if (Number.isNaN(NUM_WALLETS) || NUM_WALLETS <= 0) { let dynamicEvmClient: DynamicEvmWalletClient; /** - * Creates a new Dynamic wallet account with 2-of-2 threshold signatures. - * This ensures that transactions require both server-side and client-side approval, - * providing enhanced security for financial applications. + * Creates a new Dynamic wallet account with retry logic and timeout handling. + * Uses 2-of-2 threshold signatures for enhanced security. + * + * Note: This function includes retry logic specific to the omnibus demo. + * For simpler wallet creation, see wallet.ts or wallet-helpers.ts */ async function createWalletAccount( walletNumber: number @@ -141,8 +153,8 @@ async function createWalletAccount( } /** - * Creates a wallet client for a customer wallet with the necessary Dynamic configuration. - * This encapsulates the common wallet client setup logic used across multiple functions. + * Creates a wallet client for signing transactions from a customer wallet. + * Uses the shared getWalletClient helper from libs/viem.ts */ async function createWalletClientForCustomer( customerWallet: CustomerWallet @@ -157,8 +169,8 @@ async function createWalletClientForCustomer( } /** - * Sends a gasless transaction using Pimlico's paymaster service and waits for confirmation. - * This demonstrates how to execute transactions without requiring customers to hold ETH. + * Sends a gasless transaction using Pimlico and waits for confirmation. + * The paymaster sponsors gas so customers don't need ETH. */ async function sendTransactionAndWait({ walletClient, @@ -178,8 +190,7 @@ async function sendTransactionAndWait({ } /** - * Creates a customer wallet account and assigns it a random USDC amount for the demo. - * This encapsulates the wallet creation logic and amount assignment in a single function. + * Creates a customer wallet and assigns it a random USDC amount (1-1000). */ async function createCustomerWallet( index: number @@ -203,8 +214,8 @@ async function createCustomerWallet( } /** - * Funds a customer wallet by minting the specified amount of USDC tokens. - * This simulates depositing funds into a customer account. + * Funds a customer wallet by minting USDC tokens. + * In production, this would be replaced with actual token transfers. */ async function fundCustomerWallet( customerWallet: CustomerWallet @@ -229,8 +240,8 @@ async function fundCustomerWallet( } /** - * Transfers all USDC tokens from a customer wallet to the omnibus account. - * This demonstrates the fund aggregation pattern used in financial institutions. + * Transfers USDC from a customer wallet to the omnibus account. + * This is the core "sweep" operation that aggregates funds. */ async function sweepToOmnibus( customerWallet: CustomerWallet, @@ -263,14 +274,6 @@ async function sweepToOmnibus( return customerWallet.usdcAmount; } -/** - * Main demo execution flow: - * 1. Create omnibus wallet for fund aggregation - * 2. Create multiple customer wallets with random USDC amounts - * 3. Fund each customer wallet with USDC tokens - * 4. Sweep all funds from customer wallets to omnibus account - * 5. Report total aggregated amount - */ async function main() { console.info("Dynamic Gasless Transaction Demo - Omnibus Sweep"); console.info( diff --git a/examples/nodejs-omnibus-sweep/src/send-transaction.ts b/examples/nodejs-omnibus-sweep/src/send-transaction.ts new file mode 100644 index 0000000..3aef713 --- /dev/null +++ b/examples/nodejs-omnibus-sweep/src/send-transaction.ts @@ -0,0 +1,152 @@ +#!/usr/bin/env tsx + +/** + * Dynamic Transaction Demo + * + * Send transactions with different gas sponsorship providers. + * + * Usage: + * pnpm send-txn standard # Create new wallet, user pays gas + * pnpm send-txn zerodev # Create new wallet, ZeroDev sponsorship + * pnpm send-txn pimlico # Create new wallet, Pimlico sponsorship + * pnpm send-txn zerodev --address 0x123... # Use saved wallet + * pnpm send-txn zerodev --address 0x123... --password # Use password-protected wallet + */ + +import { createWalletClient, http, zeroAddress } from "viem"; +import { baseSepolia } from "viem/chains"; + +import { authenticatedEvmClient, smartAccountClient } from "./libs/dynamic"; +import { getAuthorization, getSmartAccountClient } from "./libs/pimlico"; +import { getTransactionLink } from "./libs/utils"; +import { getWalletClient } from "./libs/viem"; +import { getOrCreateWallet, type WalletInfo } from "./libs/wallet-helpers"; + +type GasProvider = "standard" | "zerodev" | "pimlico"; + +async function sendTransactionStandard(wallet: WalletInfo, password?: string) { + const dynamicEvmClient = await authenticatedEvmClient(); + + const account = getWalletClient({ + dynamicEvmClient, + address: wallet.address, + externalServerKeyShares: wallet.externalServerKeyShares, + password, + }); + + const walletClient = createWalletClient({ + account, + chain: baseSepolia, + transport: http(), + }); + + console.info(`Sending standard transaction (user pays gas)...`); + const hash = await walletClient.sendTransaction({ + to: zeroAddress, + value: 0n, + }); + + return hash; +} + +async function sendTransactionZerodev(wallet: WalletInfo, password?: string) { + const dynamicEvmClient = await authenticatedEvmClient(); + + console.info(`Creating ZeroDev smart account...`); + const smartAccount = await smartAccountClient({ + evmClient: dynamicEvmClient, + networkId: "84532", + address: wallet.address as `0x${string}`, + externalServerKeyShares: wallet.externalServerKeyShares, + ...(password && { password }), + }); + + console.info(`Sending gasless transaction (ZeroDev)...`); + const hash = await smartAccount.sendTransaction({ + to: zeroAddress, + }); + + return hash; +} + +async function sendTransactionPimlico(wallet: WalletInfo, password?: string) { + const dynamicEvmClient = await authenticatedEvmClient(); + + const account = getWalletClient({ + dynamicEvmClient, + address: wallet.address, + externalServerKeyShares: wallet.externalServerKeyShares, + password, + }); + + console.info(`Creating Pimlico smart account...`); + const [smartAccountClient, authorization] = await Promise.all([ + getSmartAccountClient(baseSepolia, account), + getAuthorization(baseSepolia, account), + ]); + + console.info(`Sending gasless transaction (Pimlico)...`); + const hash = await smartAccountClient.sendTransaction({ + to: zeroAddress, + ...(authorization && { authorization }), + }); + + return hash; +} + +async function main() { + const args = process.argv.slice(2); + const provider = (args[0] || "standard") as GasProvider; + + // Parse --address flag + const addressIndex = args.indexOf("--address"); + const address = addressIndex !== -1 ? args[addressIndex + 1] : undefined; + + // Parse --password flag + const passwordIndex = args.indexOf("--password"); + const password = passwordIndex !== -1 ? args[passwordIndex + 1] : undefined; + + const validProviders: GasProvider[] = ["standard", "zerodev", "pimlico"]; + if (!validProviders.includes(provider)) { + console.error(`āŒ Invalid provider: ${provider}`); + console.error(`āœ… Valid providers: ${validProviders.join(", ")}`); + process.exit(1); + } + + try { + const dynamicEvmClient = await authenticatedEvmClient(); + const wallet = await getOrCreateWallet(dynamicEvmClient, address, password); + + const start = Date.now(); + let hash: string; + + switch (provider) { + case "standard": + hash = await sendTransactionStandard(wallet, password); + break; + case "zerodev": + hash = await sendTransactionZerodev(wallet, password); + break; + case "pimlico": + hash = await sendTransactionPimlico(wallet, password); + break; + } + + const duration = ((Date.now() - start) / 1000).toFixed(2); + console.info(`\nāœ… Transaction sent in ${duration}s`); + console.info(`šŸ“ Hash: ${hash}`); + console.info(`šŸ”— Explorer: ${getTransactionLink(hash)}`); + console.info(`šŸ’³ Provider: ${provider}`); + console.info(`šŸ‘› Wallet: ${wallet.address}`); + + process.exit(0); + } catch (error) { + console.error("āŒ Error:", error); + process.exit(1); + } +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/examples/nodejs-omnibus-sweep/src/sign-message.ts b/examples/nodejs-omnibus-sweep/src/sign-message.ts new file mode 100644 index 0000000..da7d3bc --- /dev/null +++ b/examples/nodejs-omnibus-sweep/src/sign-message.ts @@ -0,0 +1,100 @@ +#!/usr/bin/env tsx + +/** + * Dynamic Message Signing Demo + * + * Sign messages with Dynamic server wallets for authentication, + * verification, and proof of ownership. + * + * ## Signing Messages + * + * Sign with a new ephemeral wallet: + * pnpm sign-msg "Hello, World!" + * + * Sign with a saved wallet: + * pnpm sign-msg "Hello, World!" --address 0x123... + * + * Sign with password-protected wallet: + * pnpm sign-msg "Hello, World!" --address 0x123... --password myPassword + * + * ## Use Cases + * + * - Authenticate users by proving wallet ownership + * - Sign authorization tokens or session data + * - Verify identity without on-chain transactions + * - Create off-chain signatures for gasless flows + */ + +import { authenticatedEvmClient } from "./libs/dynamic"; +import { getOrCreateWallet, type WalletInfo } from "./libs/wallet-helpers"; + +async function signMessage( + message: string, + wallet: WalletInfo, + password?: string +) { + const dynamicEvmClient = await authenticatedEvmClient(); + + console.info(`\nSigning message...`); + const start = Date.now(); + + // Sign the message using the wallet's key shares + // If wallet was created with a password, it must be provided here + const signature = await dynamicEvmClient.signMessage({ + accountAddress: wallet.address, + externalServerKeyShares: wallet.externalServerKeyShares, + message, + ...(password && { password }), + }); + + const duration = ((Date.now() - start) / 1000).toFixed(2); + + console.info(`\nāœ… Message signed in ${duration}s`); + console.info(`šŸ“ Message: "${message}"`); + console.info(`āœļø Signature: ${signature}`); + console.info(`šŸ‘› Signer: ${wallet.address}`); + + return signature; +} + +async function main() { + const args = process.argv.slice(2); + + // First argument is the message to sign + const message = args[0]; + + if (!message) { + console.error("āŒ Please provide a message to sign"); + console.error("\nUsage:"); + console.error(' pnpm sign-msg "Hello, World!"'); + console.error(' pnpm sign-msg "Hello, World!" --address 0x123...'); + console.error( + ' pnpm sign-msg "Hello, World!" --address 0x123... --password xyz' + ); + process.exit(1); + } + + // Parse --address flag + const addressIndex = args.indexOf("--address"); + const address = addressIndex !== -1 ? args[addressIndex + 1] : undefined; + + // Parse --password flag + const passwordIndex = args.indexOf("--password"); + const password = passwordIndex !== -1 ? args[passwordIndex + 1] : undefined; + + try { + const dynamicEvmClient = await authenticatedEvmClient(); + const wallet = await getOrCreateWallet(dynamicEvmClient, address, password); + + await signMessage(message, wallet, password); + process.exit(0); + } catch (error) { + console.error("āŒ Error:", error); + process.exit(1); + } +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/examples/nodejs-omnibus-sweep/src/wallet.ts b/examples/nodejs-omnibus-sweep/src/wallet.ts new file mode 100644 index 0000000..57fb2a5 --- /dev/null +++ b/examples/nodejs-omnibus-sweep/src/wallet.ts @@ -0,0 +1,176 @@ +#!/usr/bin/env tsx + +/** + * Dynamic Server Wallet Management + * + * Create and manage server-side wallets for automated operations like + * omnibus payments, treasury management, and gasless transactions. + * + * ## Creating Wallets + * + * Create ephemeral wallets for one-time use: + * pnpm wallet --create + * + * Create and save wallets for reuse: + * pnpm wallet --create --save + * + * Create wallet with password protection: + * pnpm wallet --create --save --password mySecretPassword + * + * ## Managing Saved Wallets + * + * List all saved wallets: + * pnpm wallet --list + * + * Delete a saved wallet: + * pnpm wallet --delete 0x123... + * + * ## Using Wallets + * + * Created wallets can be used with other examples: + * + * send-transaction.ts - Send transactions with different gas providers: + * - Standard transactions (user pays gas) + * - Gasless transactions with ZeroDev + * - Gasless transactions with Pimlico + * + * sign-message.ts - Sign messages for authentication and verification + */ + +import { ThresholdSignatureScheme } from "@dynamic-labs-wallet/node"; + +import { authenticatedEvmClient } from "./libs/dynamic"; +import { deleteWallet, listWallets, saveWallet } from "./libs/wallet-storage"; + +async function createWallet(shouldSave: boolean, password?: string) { + // Step 1: Authenticate with Dynamic using your API token + // This returns a client that can create and manage wallets + const dynamicEvmClient = await authenticatedEvmClient(); + + console.info(`Creating server wallet...`); + const start = Date.now(); + + // Step 2: Create a new server-side wallet + // Returns: { accountAddress: string, externalServerKeyShares: string[] } + // + // Parameters: + // - thresholdSignatureScheme: TWO_OF_TWO means both key shares are required to sign + // - backUpToClientShareService: false keeps key shares local (not backed up to Dynamic) + // - password: (Optional) Encrypts the key shares with a password for additional security + const wallet = await dynamicEvmClient.createWalletAccount({ + thresholdSignatureScheme: ThresholdSignatureScheme.TWO_OF_TWO, + backUpToClientShareService: false, + ...(password && { password }), + }); + + const duration = ((Date.now() - start) / 1000).toFixed(2); + console.info(`āœ… Server wallet created in ${duration}s`); + console.info(`šŸ“ Address: ${wallet.accountAddress}`); + if (password) console.info(`šŸ”’ Password protection enabled`); + + if (shouldSave) { + // Step 3 (Optional): Persist wallet to .wallets.json + // You MUST save externalServerKeyShares to use this wallet for future transactions + // Without the key shares, you cannot sign transactions with this address + saveWallet({ + address: wallet.accountAddress, + externalServerKeyShares: wallet.externalServerKeyShares, + createdAt: new Date().toISOString(), + }); + } else { + console.info(`šŸ’” Tip: Add '--save' flag to persist wallet for reuse`); + } +} + +function displayWalletList() { + const wallets = listWallets(); + + if (wallets.length === 0) { + console.info("šŸ“­ No saved wallets found"); + console.info( + "šŸ’” Tip: Use 'pnpm wallet --create --save' to create a wallet" + ); + return; + } + + console.info(`šŸ“š Saved wallets (${wallets.length}):\n`); + wallets.forEach((w, i) => { + console.info(`${i + 1}. ${w.address}`); + console.info(` Created: ${new Date(w.createdAt).toLocaleString()}`); + console.info(""); + }); +} + +function removeWallet(address: string) { + const success = deleteWallet(address); + + if (!success) { + console.error(`āŒ Wallet not found: ${address}`); + console.info(`šŸ’” Tip: Use 'pnpm wallet --list' to see saved wallets`); + process.exit(1); + } + + console.info(`āœ… Wallet deleted successfully`); +} + +async function main() { + const args = process.argv.slice(2); + const shouldCreate = args.includes("--create"); + const shouldList = args.includes("--list"); + const shouldSave = args.includes("--save"); + + // Parse --delete flag and address + const deleteIndex = args.indexOf("--delete"); + const shouldDelete = deleteIndex !== -1; + const deleteAddress = shouldDelete ? args[deleteIndex + 1] : undefined; + + // Parse --password flag and value + const passwordIndex = args.indexOf("--password"); + const password = passwordIndex !== -1 ? args[passwordIndex + 1] : undefined; + + if (!shouldCreate && !shouldList && !shouldDelete) { + console.error("āŒ Please specify an action:"); + console.error( + " pnpm wallet --create # Create wallet (ephemeral)" + ); + console.error( + " pnpm wallet --create --save # Create and save wallet" + ); + console.error( + " pnpm wallet --create --save --password xyz # Create with password" + ); + console.error( + " pnpm wallet --list # List saved wallets" + ); + console.error( + " pnpm wallet --delete
# Delete a saved wallet" + ); + process.exit(1); + } + + if (shouldDelete && !deleteAddress) { + console.error("āŒ Please provide an address to delete"); + console.error(" pnpm wallet --delete
"); + process.exit(1); + } + + try { + if (shouldList) { + displayWalletList(); + } else if (shouldDelete && deleteAddress) { + removeWallet(deleteAddress); + } else if (shouldCreate) { + await createWallet(shouldSave, password); + } + + process.exit(0); + } catch (error) { + console.error("Error:", error); + process.exit(1); + } +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/examples/react-native-expo-demo/app/(tabs)/index.tsx b/examples/react-native-expo-demo/app/(tabs)/index.tsx index af5c257..520e2de 100644 --- a/examples/react-native-expo-demo/app/(tabs)/index.tsx +++ b/examples/react-native-expo-demo/app/(tabs)/index.tsx @@ -28,7 +28,7 @@ export default function HomeScreen() { const tokenListRef = useRef<{ refresh: () => Promise }>(null); // Get user information from Dynamic client - const primaryWallet = client.auth.authenticatedUser?.verifiedCredentials?.[0]; + const primaryWallet = client.wallets.primary; const walletAddress = primaryWallet?.address || ""; const onRefresh = async () => { diff --git a/examples/react-native-expo-demo/assets/images/icon.png b/examples/react-native-expo-demo/assets/images/icon.png new file mode 100644 index 0000000..97ecfed Binary files /dev/null and b/examples/react-native-expo-demo/assets/images/icon.png differ diff --git a/examples/react-native-expo-demo/package-lock.json b/examples/react-native-expo-demo/package-lock.json index 31a3f5f..99f3339 100644 --- a/examples/react-native-expo-demo/package-lock.json +++ b/examples/react-native-expo-demo/package-lock.json @@ -9,11 +9,11 @@ "version": "1.0.0", "dependencies": { "@coinbase/cdp-sdk": "^1.38.3", - "@dynamic-labs/client": "^4.38.0", - "@dynamic-labs/react-hooks": "^4.38.0", - "@dynamic-labs/react-native-extension": "^4.38.0", - "@dynamic-labs/viem-extension": "^4.38.0", - "@dynamic-labs/zerodev-extension": "^4.38.0", + "@dynamic-labs/client": "^4.39.0", + "@dynamic-labs/react-hooks": "^4.39.0", + "@dynamic-labs/react-native-extension": "^4.39.0", + "@dynamic-labs/viem-extension": "^4.39.0", + "@dynamic-labs/zerodev-extension": "^4.39.0", "@expo/vector-icons": "^15.0.2", "@react-native-anywhere/polyfill-base64": "^0.0.1-alpha.0", "@react-navigation/bottom-tabs": "^7.4.0", @@ -1585,16 +1585,16 @@ } }, "node_modules/@dynamic-labs-sdk/assert-package-version": { - "version": "0.1.0-alpha.19", - "resolved": "https://registry.npmjs.org/@dynamic-labs-sdk/assert-package-version/-/assert-package-version-0.1.0-alpha.19.tgz", - "integrity": "sha512-M1+OAI02HEvEVQ6RGuqecj0WkP1/1XeobopP48dv/qA+HJMNi37xp6npr4BrS8TnzVRw4k84tpWx3gh74wIPNA==" + "version": "0.1.0-alpha.21", + "resolved": "https://registry.npmjs.org/@dynamic-labs-sdk/assert-package-version/-/assert-package-version-0.1.0-alpha.21.tgz", + "integrity": "sha512-oYEqM/Nqq5tZo1CSA8CUPMB1/dZrKherKZ4yZ30fElvRIzjmREe9XJ7CAxuKTvtMdIGBBO9eLbZhxjcvXcFBkQ==" }, "node_modules/@dynamic-labs-sdk/client": { - "version": "0.1.0-alpha.19", - "resolved": "https://registry.npmjs.org/@dynamic-labs-sdk/client/-/client-0.1.0-alpha.19.tgz", - "integrity": "sha512-bv+K9Mfr+F4kpbJmEmcBS5VpOowzB5WJ2sGd/jrWYpJG3+KW80JImVJMdpOZh13SUDSiLMmfN+MvMFscqMnczA==", + "version": "0.1.0-alpha.21", + "resolved": "https://registry.npmjs.org/@dynamic-labs-sdk/client/-/client-0.1.0-alpha.21.tgz", + "integrity": "sha512-9hO5H7Ehj48SceIR+eHvPIn/zLWTPNtH1q0Y+yAfjNQ5Ew2z1ewLMXuq3F8KzxhcKR0lt5ZlHkpOxGIJqTHp1w==", "dependencies": { - "@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.19", + "@dynamic-labs-sdk/assert-package-version": "0.1.0-alpha.21", "@dynamic-labs-wallet/browser-wallet-client": "0.0.181", "@dynamic-labs/sdk-api-core": "0.0.805", "@simplewebauthn/browser": "13.1.0", @@ -1603,6 +1603,12 @@ "zod": "4.0.5" } }, + "node_modules/@dynamic-labs-sdk/client/node_modules/@dynamic-labs/sdk-api-core": { + "version": "0.0.805", + "resolved": "https://registry.npmjs.org/@dynamic-labs/sdk-api-core/-/sdk-api-core-0.0.805.tgz", + "integrity": "sha512-Ukpx2NH6Cpc0s2Fsqe6q01xtsDwM0P+xM3dhffk7lo2QZF2BGIesR4xlwo84vXZ3QqciCRP/oWr9pZEg+Gpy1g==", + "license": "Apache-2.0" + }, "node_modules/@dynamic-labs-sdk/client/node_modules/zod": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", @@ -1798,46 +1804,46 @@ } }, "node_modules/@dynamic-labs/assert-package-version": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/assert-package-version/-/assert-package-version-4.38.0.tgz", - "integrity": "sha512-eejR+AM8XX7XWd2IFDxBTVqOIz/AFuaXOlQifvwKhN3pozkGqjAubpATX1pcBoKwJGpvD/hZnJFFuOlXea9f9A==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/assert-package-version/-/assert-package-version-4.39.0.tgz", + "integrity": "sha512-Vi4/sMqGa889c12b+zLDMMONsoICU17HVfdGI4MCI6Hbc9sL8YWkNs5WOOkrZTxC83RtgCTRV3YsDlazxzbCRg==", "license": "MIT", "dependencies": { - "@dynamic-labs/logger": "4.38.0" + "@dynamic-labs/logger": "4.39.0" } }, "node_modules/@dynamic-labs/client": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/client/-/client-4.38.0.tgz", - "integrity": "sha512-24MweFKfF+gFWxd36G1eQIC9t61htX2GQcbnsPYiGtlF73+j0121TMfVLbDB6doeJ2aLEmW/CCufoSlQXc5lTQ==", - "license": "MIT", - "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/locale": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/message-transport": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/webview-messages": "4.38.0", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/client/-/client-4.39.0.tgz", + "integrity": "sha512-nrjnTUzS2jEZUOPd9TQsr1nmNVuXEedI8MBO1n6Txzi7JlyTAxphYmnMeS7trwI0vo7eKvTUVo3/9R2PEUG5cA==", + "license": "MIT", + "dependencies": { + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/locale": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/message-transport": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/webview-messages": "4.39.0", "@vue/reactivity": "^3.4.21", "eventemitter3": "5.0.1" } }, "node_modules/@dynamic-labs/ethereum-aa": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/ethereum-aa/-/ethereum-aa-4.38.0.tgz", - "integrity": "sha512-/DVDbfZSPGUfV3pdAzbC4OvrLPELvS+1RpJarKk/rzVYNaDD2NPfDh04oo2eMB5MZnGooGz8kZVTK5VcrPYldw==", - "license": "MIT", - "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/ethereum-aa-core": "4.38.0", - "@dynamic-labs/ethereum-core": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/utils": "4.38.0", - "@dynamic-labs/wallet-book": "4.38.0", - "@dynamic-labs/wallet-connector-core": "4.38.0", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/ethereum-aa/-/ethereum-aa-4.39.0.tgz", + "integrity": "sha512-Lj87AqF1kWlgqeh/IXWUmzEEsqV5TC7EHWzjaFfH6TbD4M9QH577T3gnfotwdfykEKJeYhLLiPcJsVLVq430mw==", + "license": "MIT", + "dependencies": { + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/ethereum-aa-core": "4.39.0", + "@dynamic-labs/ethereum-core": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/utils": "4.39.0", + "@dynamic-labs/wallet-book": "4.39.0", + "@dynamic-labs/wallet-connector-core": "4.39.0", "@zerodev/ecdsa-validator": "5.4.9", "@zerodev/multi-chain-ecdsa-validator": "5.4.5", "@zerodev/sdk": "5.4.36" @@ -1847,50 +1853,50 @@ } }, "node_modules/@dynamic-labs/ethereum-aa-core": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/ethereum-aa-core/-/ethereum-aa-core-4.38.0.tgz", - "integrity": "sha512-/Jqt0JXLLrQjdRPlEU8xA4rIaO56OVRrsluNdsb5wszSwLXUVjaJuOXZ+PL1h83Nod9PeLEK4+UIn5WlFAGWBQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/ethereum-aa-core/-/ethereum-aa-core-4.39.0.tgz", + "integrity": "sha512-n3Ioh2e/zhLtGzEAhwqFNmEU2cRuBEKct3CaS8+O1iApbHTcB4+Zwpd3/UtZpwIiORL+SBYaWbpOrLVc4umDPA==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/ethereum-core": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/utils": "4.38.0", - "@dynamic-labs/wallet-book": "4.38.0", - "@dynamic-labs/wallet-connector-core": "4.38.0" + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/ethereum-core": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/utils": "4.39.0", + "@dynamic-labs/wallet-book": "4.39.0", + "@dynamic-labs/wallet-connector-core": "4.39.0" }, "peerDependencies": { "viem": "^2.28.4" } }, "node_modules/@dynamic-labs/ethereum-core": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/ethereum-core/-/ethereum-core-4.38.0.tgz", - "integrity": "sha512-d9dnR134N5OkyM+DMO6uY6DFrJf/vjZW8JS0Q5QPhNTBI0x9FigFiP9Fh3am9tk3DTXLmyg+Jv9Q96e86rGI4g==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/ethereum-core/-/ethereum-core-4.39.0.tgz", + "integrity": "sha512-J5msYOOzmnARBO2/rFfHVtnHvqU7hydEKsDBzSlqYLCaxVvCcHDA3k576BZsCLlU5+sLQ/jOtrotnjYIzL3kTA==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/rpc-providers": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/utils": "4.38.0", - "@dynamic-labs/wallet-book": "4.38.0", - "@dynamic-labs/wallet-connector-core": "4.38.0" + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/rpc-providers": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/utils": "4.39.0", + "@dynamic-labs/wallet-book": "4.39.0", + "@dynamic-labs/wallet-connector-core": "4.39.0" }, "peerDependencies": { "viem": "^2.28.4" } }, "node_modules/@dynamic-labs/iconic": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/iconic/-/iconic-4.38.0.tgz", - "integrity": "sha512-u9rzyrg/Ui8CJVJG5VPc9KQ4Lbdvhx48Lg6Zs1dLpkF4/T1jRFz/ZYC58IeMpLy4uQWq0FAnDeoerRrRZcYD3g==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/iconic/-/iconic-4.39.0.tgz", + "integrity": "sha512-B7qz6wrcYSrCNZQQqd/i2mLxGfFol8QB/P2xOLSdjqN84lDDs2MCvSspdKSiZNzUN3QhNe9RXSRjGGHEiE7dwQ==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/logger": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/logger": "4.39.0", "sharp": "0.33.5" }, "peerDependencies": { @@ -1899,44 +1905,44 @@ } }, "node_modules/@dynamic-labs/locale": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/locale/-/locale-4.38.0.tgz", - "integrity": "sha512-t5EKoFBefzEPxLzgK7EXx60ijErQyvrOi7sh0o4JRw2j5xA5CwW4j7EBeKtfMfFXAqGegcbnsAKxoLopJm2ADw==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/locale/-/locale-4.39.0.tgz", + "integrity": "sha512-FdNHyXQFSbK6q5U4iu/DHHIDIzXMSQFiMKNdPJhnt5uLQAxL3z42ZqVi9FIATzTXJSmxJOUAD5z4ZMPOAlPO3w==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", "i18next": "23.4.6", "react-i18next": "13.5.0" } }, "node_modules/@dynamic-labs/logger": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/logger/-/logger-4.38.0.tgz", - "integrity": "sha512-rqsf3TB61T1FMyizcAZv/+HagGuPJApcrJ78uXB92PyoAUY2p1/+JdcNqrTRB1mSqdh7BLw7H+YUjyXeF07jag==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/logger/-/logger-4.39.0.tgz", + "integrity": "sha512-VIbKVzK4TwGdGt8y37Dy7TvARd1MKq76tkz5oSHQg/BnAS4vme+Hlrn+0ZzPz5FI/Oks2CRCJagrZDm0sXpUOw==", "license": "MIT", "dependencies": { "eventemitter3": "5.0.1" } }, "node_modules/@dynamic-labs/message-transport": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/message-transport/-/message-transport-4.38.0.tgz", - "integrity": "sha512-7gNawWyunJbprCZbXbdFAhNXP1m/K7wHU3vuN4Y6rlrhnRT1nNRNlCFw9gAeHx4k0BKPz2yGb+0+T/3Nn2g5gw==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/message-transport/-/message-transport-4.39.0.tgz", + "integrity": "sha512-WnTPXs/c4e00uwH1ND/QNTAedIuus+cFIASLjMdlTYbgWUgD+ua8Usx+93kCe5ATtY5mgwFHoujVosfHuNFdOQ==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/utils": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/utils": "4.39.0", "@vue/reactivity": "^3.4.21", "eventemitter3": "5.0.1" } }, "node_modules/@dynamic-labs/react-hooks": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/react-hooks/-/react-hooks-4.38.0.tgz", - "integrity": "sha512-ZwGbzImfE9JWXUsX6xOyFniSAwyBDQ5fFLF128JHzCY1RYE+icGtXtiAkpIQ21Gq52XDG1gK2iep3YQcj6/6iQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/react-hooks/-/react-hooks-4.39.0.tgz", + "integrity": "sha512-b2csE2C+B3dXqSDoHO/XqveGPabncfOevN3C6I+qvUjyTmiepBYz4IRFME8k5k7iAtmjo1GVJWXZZuqSEEUASQ==", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", "@vue/reactivity": "^3.4.21" }, "peerDependencies": { @@ -1944,15 +1950,15 @@ } }, "node_modules/@dynamic-labs/react-native-extension": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/react-native-extension/-/react-native-extension-4.38.0.tgz", - "integrity": "sha512-NGFH1eubKolOguBlpFKHViKvtCersTl6+2ogWGV5xkC9XWzRT0syy8JRAN7D0+k8oUtTgJKvCqXFMyqHfikG+w==", - "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/client": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/message-transport": "4.38.0", - "@dynamic-labs/webview-messages": "4.38.0", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/react-native-extension/-/react-native-extension-4.39.0.tgz", + "integrity": "sha512-O6b4tuy9QFd1y0uI4lDB3QBcoTl+JFyjv8clAuHEMj9r6S1UcMvRpVNJC2Sv3vVEr6xs3RCi0IPv9XORewJvmw==", + "dependencies": { + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/client": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/message-transport": "4.39.0", + "@dynamic-labs/webview-messages": "4.39.0", "@turnkey/react-native-passkey-stamper": "1.1.3", "react-native-passkey": "3.1.0" }, @@ -1976,71 +1982,71 @@ } }, "node_modules/@dynamic-labs/rpc-providers": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/rpc-providers/-/rpc-providers-4.38.0.tgz", - "integrity": "sha512-2nWdBujNXI7A6Rqc8/P9C/T7KfB5JNtznytN0RgqfTfUHXAvrpAWqrfWSGFt9LRDINN9ZK5jFcBHP0hRpM7X1g==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/rpc-providers/-/rpc-providers-4.39.0.tgz", + "integrity": "sha512-i/bR2VeOV3LTb3U583MH1VfpIQC6hUng5qjdDVE+KPh0bf+iLgAX/TSVLvfvpyieLG5n8oWem7Pm+l/upirTyg==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/types": "4.38.0" + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/types": "4.39.0" } }, "node_modules/@dynamic-labs/sdk-api-core": { - "version": "0.0.805", - "resolved": "https://registry.npmjs.org/@dynamic-labs/sdk-api-core/-/sdk-api-core-0.0.805.tgz", - "integrity": "sha512-Ukpx2NH6Cpc0s2Fsqe6q01xtsDwM0P+xM3dhffk7lo2QZF2BGIesR4xlwo84vXZ3QqciCRP/oWr9pZEg+Gpy1g==", + "version": "0.0.809", + "resolved": "https://registry.npmjs.org/@dynamic-labs/sdk-api-core/-/sdk-api-core-0.0.809.tgz", + "integrity": "sha512-5ECxeStqEGxARdhY6plIJMZfAJvrQewRFZt7UPecG4WL5uU/kDrU6OXe+jJkKCGnfBN4vnJeh1nSQhXArFoRjA==", "license": "Apache-2.0" }, "node_modules/@dynamic-labs/types": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/types/-/types-4.38.0.tgz", - "integrity": "sha512-gmhESr8XclepiWMuTlswT13aNIjuH9qeVWjjB5zicA4MNPP71WNVv6boa1Ui9ZQBSW0jLRPejFhiF2MJA/vONw==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/types/-/types-4.39.0.tgz", + "integrity": "sha512-SktRPAOgbSoHWFjorUrBfr2sdsUSabiRXPfKP2R//n++aRWyWB35X4pUQFmR7flwylpMdd4s6e5x4HcKNboxoA==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805" + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809" } }, "node_modules/@dynamic-labs/utils": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/utils/-/utils-4.38.0.tgz", - "integrity": "sha512-h3xcgieQrbqvqKr4JwT4L/bjAcdZYISp3B4V0fju408mCJ2mjJlC6klHPgZ81pZS1H/zn+LDbuSPm/dlCNJKoA==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/utils/-/utils-4.39.0.tgz", + "integrity": "sha512-oB2R5Ipr4JstckrwBo7Dg+mC5cZ3+Xm2vTEGecDkFjDvajV+LHqsbiUKym7MHXB1zGEO2rnESzWA4mc1E4hEbg==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", "buffer": "6.0.3", "eventemitter3": "5.0.1", "tldts": "6.0.16" } }, "node_modules/@dynamic-labs/viem-extension": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/viem-extension/-/viem-extension-4.38.0.tgz", - "integrity": "sha512-7+2wP7HreeXq3wQv0/OEtaspkI5NPZiiP2gvhY6ZElrIxBR2NEFmug9sZ23VcMV3F43yKB8nCX2xURHAbVVG7w==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/viem-extension/-/viem-extension-4.39.0.tgz", + "integrity": "sha512-Zozqy1ePMNW0jJdUOZb/oz5XyB10irueXfZog0xpZzKQxX8CnkxKIJeYnLu7pq+zV8HzRGlDdeYrvGd4FGfkPA==", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/client": "4.38.0", - "@dynamic-labs/message-transport": "4.38.0", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/webview-messages": "4.38.0" + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/client": "4.39.0", + "@dynamic-labs/message-transport": "4.39.0", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/webview-messages": "4.39.0" }, "peerDependencies": { "viem": "^2.28.4" } }, "node_modules/@dynamic-labs/wallet-book": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/wallet-book/-/wallet-book-4.38.0.tgz", - "integrity": "sha512-hbVLc1ihL6L6GHtDq91RY8qy28Yt9974xs4sM/evvWvmcYFNhr7jfzqWMTZu3LGy7CoTTSy0ORcCoUBo8C3N1w==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/wallet-book/-/wallet-book-4.39.0.tgz", + "integrity": "sha512-srxBeFqcpLHPgb52hJRuvabBnkVMe4Tbf+mNNTWqueK5kBPZY/9RJEXYcSnP792FZ/hpHH97yPpEXRBDTh+TRg==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/iconic": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/utils": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/iconic": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/utils": "4.39.0", "eventemitter3": "5.0.1", "util": "0.12.5", "zod": "4.0.5" @@ -2060,62 +2066,62 @@ } }, "node_modules/@dynamic-labs/wallet-connector-core": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/wallet-connector-core/-/wallet-connector-core-4.38.0.tgz", - "integrity": "sha512-pkCveKNg9SqDvFQtAGQ4h77Gqp7ZOvTbHrYf5gY1zrh8nGrkyLcCEy/9qGzLcEPI2av8AVI8RM0q1vmj5/zudw==", - "license": "MIT", - "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/rpc-providers": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/utils": "4.38.0", - "@dynamic-labs/wallet-book": "4.38.0", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/wallet-connector-core/-/wallet-connector-core-4.39.0.tgz", + "integrity": "sha512-48tlE8/PHd7PZIAbTtN1hWUUDoVwmuDazeEj7AK/RHI45lQhPCVxidj8SFzlAL3yjS2+nQUaEbHQudTJqW94UQ==", + "license": "MIT", + "dependencies": { + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/rpc-providers": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/utils": "4.39.0", + "@dynamic-labs/wallet-book": "4.39.0", "eventemitter3": "5.0.1" } }, "node_modules/@dynamic-labs/webauthn": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/webauthn/-/webauthn-4.38.0.tgz", - "integrity": "sha512-jAA5BdYeXSOOi4TM5tH1sRAOx4LdGSqlDyQ+ysdQpwsBsOKBAtD9oCwM/7bSjVTi90Mb5BkH/YUDxirIs0DGSg==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/webauthn/-/webauthn-4.39.0.tgz", + "integrity": "sha512-zq9UtWiw1UFiISeX3pQMUmA0xTZFpwCRJ+n+B+4dbUNfIL4NnPJX/7nGwo3K2cgouggnvlAYgmGKtqW3E6vJ3w==", "license": "MIT", "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/logger": "4.38.0", + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/logger": "4.39.0", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/types": "12.0.0" } }, "node_modules/@dynamic-labs/webview-messages": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/webview-messages/-/webview-messages-4.38.0.tgz", - "integrity": "sha512-JQSA2NmJhvTKh4n4a3+I8EKcobKeBoUBe4rZczw6qzXGx9VTW9sB+YxJn9PsG+z1G0F1zoCYvxzrEsNe6kxc0w==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/webview-messages/-/webview-messages-4.39.0.tgz", + "integrity": "sha512-r0ltafqeXCqWKUd36Ib3nIuJOwDRwKTYUPB7WBWtzDqEtrVFiOhQzQDYS6E0WV66Cw76s1njYRavDejBc4wWAA==", "license": "MIT", "dependencies": { - "@dynamic-labs-sdk/client": "0.1.0-alpha.19", - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/locale": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/message-transport": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/types": "4.38.0", - "@dynamic-labs/webauthn": "4.38.0" + "@dynamic-labs-sdk/client": "0.1.0-alpha.21", + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/locale": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/message-transport": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/types": "4.39.0", + "@dynamic-labs/webauthn": "4.39.0" } }, "node_modules/@dynamic-labs/zerodev-extension": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@dynamic-labs/zerodev-extension/-/zerodev-extension-4.38.0.tgz", - "integrity": "sha512-k97O/04iRS+gI47W2083gk3aCmtQ9BjlnpwgQ0qmC1n6vGqust3Zh1EKFKepVEsBuVUePVGoTCkQ+pb7PdXOQQ==", - "dependencies": { - "@dynamic-labs/assert-package-version": "4.38.0", - "@dynamic-labs/client": "4.38.0", - "@dynamic-labs/ethereum-aa": "4.38.0", - "@dynamic-labs/logger": "4.38.0", - "@dynamic-labs/message-transport": "4.38.0", - "@dynamic-labs/sdk-api-core": "0.0.805", - "@dynamic-labs/viem-extension": "4.38.0", - "@dynamic-labs/webview-messages": "4.38.0", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@dynamic-labs/zerodev-extension/-/zerodev-extension-4.39.0.tgz", + "integrity": "sha512-+WQ40GxtPQa+2vifhZrUTjGx+1kvLTbiHJUfY35CRAb4yPI4dKzF2dPx6CcT2aMuWYdDRVmGHHcdBriywvhswQ==", + "dependencies": { + "@dynamic-labs/assert-package-version": "4.39.0", + "@dynamic-labs/client": "4.39.0", + "@dynamic-labs/ethereum-aa": "4.39.0", + "@dynamic-labs/logger": "4.39.0", + "@dynamic-labs/message-transport": "4.39.0", + "@dynamic-labs/sdk-api-core": "0.0.809", + "@dynamic-labs/viem-extension": "4.39.0", + "@dynamic-labs/webview-messages": "4.39.0", "@zerodev/ecdsa-validator": "5.4.9", "@zerodev/multi-chain-ecdsa-validator": "5.4.5", "@zerodev/sdk": "5.4.36" diff --git a/examples/react-native-expo-demo/package.json b/examples/react-native-expo-demo/package.json index bdc30b7..a2da0ed 100644 --- a/examples/react-native-expo-demo/package.json +++ b/examples/react-native-expo-demo/package.json @@ -11,11 +11,11 @@ }, "dependencies": { "@coinbase/cdp-sdk": "^1.38.3", - "@dynamic-labs/client": "^4.38.0", - "@dynamic-labs/react-hooks": "^4.38.0", - "@dynamic-labs/react-native-extension": "^4.38.0", - "@dynamic-labs/viem-extension": "^4.38.0", - "@dynamic-labs/zerodev-extension": "^4.38.0", + "@dynamic-labs/client": "4.39.0", + "@dynamic-labs/react-hooks": "4.39.0", + "@dynamic-labs/react-native-extension": "4.39.0", + "@dynamic-labs/viem-extension": "4.39.0", + "@dynamic-labs/zerodev-extension": "4.39.0", "@expo/vector-icons": "^15.0.2", "@react-native-anywhere/polyfill-base64": "^0.0.1-alpha.0", "@react-navigation/bottom-tabs": "^7.4.0", diff --git a/examples/react-native-expo-demo/polyfills.js b/examples/react-native-expo-demo/polyfills.js index e0da7d6..f87b126 100644 --- a/examples/react-native-expo-demo/polyfills.js +++ b/examples/react-native-expo-demo/polyfills.js @@ -1,5 +1,4 @@ // Polyfills for Dynamic SDK in React Native -import '@react-native-anywhere/polyfill-base64'; import 'react-native-get-random-values'; // Polyfill for events module used by ZeroDev SDK