diff --git a/typescript/agentkit/CHANGELOG.md b/typescript/agentkit/CHANGELOG.md index fa4b2af96..f3f49ade0 100644 --- a/typescript/agentkit/CHANGELOG.md +++ b/typescript/agentkit/CHANGELOG.md @@ -10,6 +10,8 @@ ### Patch Changes +- Added `offrampActionProvider` wrapping Galleon / USDCtoFiat `@usdctofiat/offramp` cashout fast|best for Base mainnet. Fast stays Fast (0% TOFIAT). Best is delegated 10 bps. + - [#966](https://github.com/coinbase/agentkit/pull/966) [`b211701`](https://github.com/coinbase/agentkit/commit/b21170143825cb1892daaa8e52c68e9c8c446ae1) Thanks [@phdargen](https://github.com/phdargen)! - Bumped x402 packages and fix missing readContract interface - [#982](https://github.com/coinbase/agentkit/pull/982) [`c3dbef6`](https://github.com/coinbase/agentkit/commit/c3dbef60d1613effc9d9805816bec15f5510fdca) Thanks [@fffilimonov](https://github.com/fffilimonov)! - Added dTelecom action provider for decentralized voice services (WebRTC, STT, TTS) with x402 micropayments, and a voice agent example. diff --git a/typescript/agentkit/package.json b/typescript/agentkit/package.json index 3bd3fba8b..d5002c8e5 100644 --- a/typescript/agentkit/package.json +++ b/typescript/agentkit/package.json @@ -73,7 +73,8 @@ "sushi": "6.2.1", "twitter-api-v2": "^1.18.2", "viem": "2.47.4", - "zod": "^4.3.6" + "zod": "^4.3.6", + "@usdctofiat/offramp": "7.0.1" }, "devDependencies": { "@types/jest": "^29.5.14", diff --git a/typescript/agentkit/src/action-providers/index.ts b/typescript/agentkit/src/action-providers/index.ts index 9f7164086..1377a88b4 100644 --- a/typescript/agentkit/src/action-providers/index.ts +++ b/typescript/agentkit/src/action-providers/index.ts @@ -34,6 +34,7 @@ export * from "./wow"; export * from "./allora"; export * from "./flaunch"; export * from "./onramp"; +export * from "./offramp"; export * from "./vaultsfyi"; export * from "./x402"; export * from "./yelay"; diff --git a/typescript/agentkit/src/action-providers/offramp/README.md b/typescript/agentkit/src/action-providers/offramp/README.md new file mode 100644 index 000000000..29db6f2db --- /dev/null +++ b/typescript/agentkit/src/action-providers/offramp/README.md @@ -0,0 +1,28 @@ +# Offramp Action Provider + +Native AgentKit wrapper around [`@usdctofiat/offramp`](https://www.npmjs.com/package/@usdctofiat/offramp) from [Galleon / USDCtoFiat](https://usdctofiat.xyz). + +This provider does not republish the SDK. It calls `cashout({ mode, signer, amount, currency, platform, payee })`. + +## Modes + +- **fast** — Peer Cash at the live market rate, 0% spread. Galleon earns the locked `TOFIAT` Curator referral. Do not force Fast onto Delegate. +- **best** — deposit is delegated to the Delegate strategy. Galleon earns 10 bps on fill. + +Attribution (`peer-ref-TOFIAT` and `galleonlabs`) is locked by the SDK and cannot be replaced. + +## Network + +Base mainnet only. + +## Usage + +```typescript +import { offrampActionProvider } from "@coinbase/agentkit"; + +const agentkit = await Agentkit.from({ + actionProviders: [offrampActionProvider()], +}); +``` + +Product docs: https://usdctofiat.xyz/developers diff --git a/typescript/agentkit/src/action-providers/offramp/index.ts b/typescript/agentkit/src/action-providers/offramp/index.ts new file mode 100644 index 000000000..ca2b57484 --- /dev/null +++ b/typescript/agentkit/src/action-providers/offramp/index.ts @@ -0,0 +1,8 @@ +/** + * Exports for offramp action provider (Galleon / USDCtoFiat). + * + * @module offramp + */ + +export * from "./offrampActionProvider"; +export * from "./schemas"; diff --git a/typescript/agentkit/src/action-providers/offramp/offrampActionProvider.test.ts b/typescript/agentkit/src/action-providers/offramp/offrampActionProvider.test.ts new file mode 100644 index 000000000..58dc2c638 --- /dev/null +++ b/typescript/agentkit/src/action-providers/offramp/offrampActionProvider.test.ts @@ -0,0 +1,166 @@ +import { OfframpActionProvider } from "./offrampActionProvider"; +import { Network } from "../../network"; +import { CashoutActionSchema } from "./schemas"; +import { EvmWalletProvider } from "../../wallet-providers"; + +const mockCashout = jest.fn(); + +jest.mock("@usdctofiat/offramp", () => ({ + cashout: (...args: unknown[]) => mockCashout(...args), +})); + +jest.mock("viem", () => { + const actual = jest.requireActual("viem"); + return { + ...actual, + createWalletClient: jest.fn(() => ({ mocked: true })), + }; +}); + +describe("OfframpActionProvider", () => { + const provider = new OfframpActionProvider(); + let mockWalletProvider: jest.Mocked; + + beforeEach(() => { + mockCashout.mockReset(); + mockCashout.mockResolvedValue({ + mode: "fast", + depositId: "1", + }); + mockWalletProvider = { + getAddress: jest.fn().mockReturnValue("0x123"), + getNetwork: jest.fn().mockReturnValue({ + protocolFamily: "evm", + networkId: "base-mainnet", + chainId: "8453", + }), + toSigner: jest.fn().mockReturnValue({ address: "0x123" }), + toEip1193Provider: jest.fn().mockReturnValue({ request: jest.fn() }), + } as unknown as jest.Mocked; + }); + + describe("network support", () => { + it("should support Base mainnet", () => { + expect( + provider.supportsNetwork({ + networkId: "base-mainnet", + protocolFamily: "evm", + }), + ).toBe(true); + }); + + it("should not support Base testnet", () => { + expect( + provider.supportsNetwork({ + networkId: "base-sepolia", + protocolFamily: "evm", + }), + ).toBe(false); + }); + + it("should not support other protocol families", () => { + expect( + provider.supportsNetwork({ + protocolFamily: "other-protocol-family", + }), + ).toBe(false); + }); + + it("should handle invalid network objects", () => { + expect(provider.supportsNetwork({} as Network)).toBe(false); + }); + }); + + describe("action validation", () => { + it("should accept fast and best cashout input", () => { + const base = { + amount: "100", + currency: "EUR", + platform: "revolut", + payee: "alice", + }; + expect(CashoutActionSchema.safeParse({ ...base, mode: "fast" }).success).toBe(true); + expect(CashoutActionSchema.safeParse({ ...base, mode: "best" }).success).toBe(true); + }); + + it("should reject a missing mode", () => { + const parseResult = CashoutActionSchema.safeParse({ + amount: "100", + currency: "EUR", + platform: "revolut", + payee: "alice", + }); + expect(parseResult.success).toBe(false); + }); + }); + + describe("cashout", () => { + it("should wrap cashout in fast mode", async () => { + const result = await provider.cashout(mockWalletProvider, { + mode: "fast", + amount: "100", + currency: "EUR", + platform: "revolut", + payee: "alice", + }); + + expect(mockCashout).toHaveBeenCalledWith( + expect.objectContaining({ + mode: "fast", + amount: "100", + currency: "EUR", + platform: "revolut", + payee: "alice", + }), + ); + expect(JSON.parse(result)).toEqual({ mode: "fast", depositId: "1" }); + }); + + it("should wrap cashout in best mode without forcing Delegate on fast", async () => { + mockCashout.mockResolvedValue({ mode: "best", depositId: "2" }); + const result = await provider.cashout(mockWalletProvider, { + mode: "best", + amount: "50", + currency: "USD", + platform: "venmo", + payee: "bob", + }); + expect(mockCashout).toHaveBeenCalledWith(expect.objectContaining({ mode: "best" })); + expect(JSON.parse(result).mode).toBe("best"); + }); + + it("should throw when network ID is not set", async () => { + mockWalletProvider.getNetwork.mockReturnValue({ + protocolFamily: "evm", + networkId: undefined, + }); + await expect( + provider.cashout(mockWalletProvider, { + mode: "fast", + amount: "100", + currency: "EUR", + platform: "revolut", + payee: "alice", + }), + ).rejects.toThrow("Network ID is not set"); + expect(mockCashout).not.toHaveBeenCalled(); + }); + + it("should throw for unsupported networks", async () => { + mockWalletProvider.getNetwork.mockReturnValue({ + protocolFamily: "evm", + networkId: "ethereum-mainnet", + }); + await expect( + provider.cashout(mockWalletProvider, { + mode: "fast", + amount: "100", + currency: "EUR", + platform: "revolut", + payee: "alice", + }), + ).rejects.toThrow("Base mainnet only"); + expect(mockCashout).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/typescript/agentkit/src/action-providers/offramp/offrampActionProvider.ts b/typescript/agentkit/src/action-providers/offramp/offrampActionProvider.ts new file mode 100644 index 000000000..ad306e897 --- /dev/null +++ b/typescript/agentkit/src/action-providers/offramp/offrampActionProvider.ts @@ -0,0 +1,92 @@ +/** + * Offramp Action Provider + * + * Native AgentKit wrapper around @usdctofiat/offramp (Galleon / USDCtoFiat). + * + * @module offramp + */ + +import { createWalletClient, custom } from "viem"; +import { base } from "viem/chains"; +import { z } from "zod"; +import { cashout } from "@usdctofiat/offramp"; +import { ActionProvider } from "../actionProvider"; +import { Network } from "../../network"; +import { CreateAction } from "../actionDecorator"; +import { EvmWalletProvider } from "../../wallet-providers"; +import { CashoutActionSchema } from "./schemas"; + +const BASE_MAINNET = "base-mainnet"; + +function toViemWalletClient(walletProvider: EvmWalletProvider) { + return createWalletClient({ + account: walletProvider.toSigner(), + chain: base, + transport: custom(walletProvider.toEip1193Provider()), + }); +} + +/** + * OfframpActionProvider exposes USDCtoFiat cash-out (Fast and Best) via @usdctofiat/offramp. + */ +export class OfframpActionProvider extends ActionProvider { + constructor() { + super("offramp", []); + } + + /** + * Sell Base USDC for fiat through Galleon / USDCtoFiat (@usdctofiat/offramp). + */ + @CreateAction({ + name: "cashout", + description: ` + Sell Base USDC for fiat using Galleon USDCtoFiat (@usdctofiat/offramp on https://usdctofiat.xyz). + This is a native wrapper around cashout({ mode, signer, amount, currency, platform, payee }). + Attribution (peer-ref-TOFIAT and galleonlabs) is locked by the SDK and cannot be replaced. + + mode "fast": Peer Cash at the live market rate, 0% spread. Galleon earns the TOFIAT referral. Do not force this onto Delegate. + mode "best": deposit is delegated to the Delegate strategy; Galleon earns 10 bps on fill. + + Use this when the user wants to cash out USDC to an eligible payment rail (for example Revolut or Venmo). + Do not use this to buy crypto (use get_onramp_buy_url). Do not invent a sandbox. + `, + schema: CashoutActionSchema, + }) + async cashout( + walletProvider: EvmWalletProvider, + args: z.infer, + ): Promise { + const networkId = walletProvider.getNetwork().networkId; + if (!networkId) { + throw new Error("Network ID is not set"); + } + if (networkId !== BASE_MAINNET) { + throw new Error( + "USDCtoFiat cashout is Base mainnet only. Switch the wallet to base-mainnet.", + ); + } + + const result = await cashout({ + mode: args.mode, + signer: toViemWalletClient(walletProvider), + amount: args.amount, + currency: args.currency, + platform: args.platform, + payee: args.payee, + } as Parameters[0]); + + return JSON.stringify(result); + } + + /** + * Base mainnet only. USDCtoFiat cash-out is Base USDC. + */ + supportsNetwork(network: Network): boolean { + return network.protocolFamily === "evm" && network.networkId === BASE_MAINNET; + } +} + +/** + * Factory for OfframpActionProvider. + */ +export const offrampActionProvider = () => new OfframpActionProvider(); diff --git a/typescript/agentkit/src/action-providers/offramp/schemas.ts b/typescript/agentkit/src/action-providers/offramp/schemas.ts new file mode 100644 index 000000000..3669f740b --- /dev/null +++ b/typescript/agentkit/src/action-providers/offramp/schemas.ts @@ -0,0 +1,29 @@ +import { z } from "zod"; + +/** + * Action schemas for the USDCtoFiat / Galleon offramp action provider. + */ + +export const CashoutActionSchema = z.object({ + mode: z + .enum(["fast", "best"]) + .describe( + "fast: live market pricing with 0% spread. best: Delegate-managed pricing with a 10 bps fee.", + ), + amount: z + .string() + .min(1) + .describe("Human USDC amount to sell, for example \"100\"."), + currency: z + .string() + .min(1) + .describe("Fiat currency code, for example USD, EUR, or GBP."), + platform: z + .string() + .min(1) + .describe("Payment platform id from the SDK, for example revolut or venmo."), + payee: z + .string() + .min(1) + .describe("Payout identifier on that platform, for example a Revolut username."), +}); diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index dc1ba0ed4..0ec73134a 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -98,6 +98,9 @@ importers: '@solana/web3.js': specifier: ^1.98.1 version: 1.98.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@usdctofiat/offramp': + specifier: 7.0.1 + version: 7.0.1(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)) '@vaultsfyi/sdk': specifier: ^2.1.9 version: 2.1.9(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -109,7 +112,7 @@ importers: version: 2.7.0(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10) '@x402/svm': specifier: ^2.7.0 - version: 2.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)) + version: 2.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) '@zerodev/ecdsa-validator': specifier: ^5.4.5 version: 5.4.5(@zerodev/sdk@5.4.28(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)) @@ -136,7 +139,7 @@ importers: version: 2.1.0 clanker-sdk: specifier: ^4.1.18 - version: 4.1.19(@types/node@22.13.14)(typescript@5.8.2)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)) + version: 4.1.19(@types/node@20.17.27)(typescript@5.8.2)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)) decimal.js: specifier: ^10.5.0 version: 10.5.0 @@ -191,7 +194,7 @@ importers: version: 14.1.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) + version: 29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2)) mock-fs: specifier: ^5.2.0 version: 5.5.0 @@ -209,7 +212,7 @@ importers: version: 2.4.2 ts-jest: specifier: ^29.2.5 - version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(typescript@5.8.2) + version: 29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2)))(typescript@5.8.2) tsd: specifier: ^0.31.2 version: 0.31.2 @@ -1911,6 +1914,7 @@ packages: '@metamask/sdk-communication-layer@0.32.0': resolution: {integrity: sha512-dmj/KFjMi1fsdZGIOtbhxdg3amxhKL/A5BqSU4uh/SyDKPub/OT+x5pX8bGjpTL1WPWY/Q0OIlvFyX3VWnT06Q==} + deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect peerDependencies: cross-fetch: ^4.0.0 eciesjs: '*' @@ -1920,9 +1924,11 @@ packages: '@metamask/sdk-install-modal-web@0.32.0': resolution: {integrity: sha512-TFoktj0JgfWnQaL3yFkApqNwcaqJ+dw4xcnrJueMP3aXkSNev2Ido+WVNOg4IIMxnmOrfAC9t0UJ0u/dC9MjOQ==} + deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect '@metamask/sdk@0.32.0': resolution: {integrity: sha512-WmGAlP1oBuD9hk4CsdlG1WJFuPtYJY+dnTHJMeCyohTWD2GgkcLMUUuvu9lO1/NVzuOoSi1OrnjbuY1O/1NZ1g==} + deprecated: No longer maintained, superseded by https://docs.metamask.io/metamask-connect '@metamask/superstruct@3.2.1': resolution: {integrity: sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==} @@ -2086,7 +2092,7 @@ packages: '@paulmillr/qr@0.2.1': resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==} - deprecated: 'The package is now available as "qr": npm install qr' + deprecated: 'Switch to "qr" (new package name) for security updates: npm install qr' '@peculiar/asn1-cms@2.6.1': resolution: {integrity: sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==} @@ -2241,6 +2247,11 @@ packages: '@types/react': optional: true + '@relayprotocol/relay-sdk@6.1.3': + resolution: {integrity: sha512-JD6Cn6ejynKCiZo0NrMDC0bU7IJfJNWqCLr9NHCpV2s48T01zy+8uN+joBFVawsiRxakApgPkdE8FlQAeQxduA==} + peerDependencies: + viem: '>=2.26.0' + '@reown/appkit-common@1.7.8': resolution: {integrity: sha512-ridIhc/x6JOp7KbDdwGKY4zwf8/iK8EYBl+HtWrruutSLwZyVi5P8WaZa+8iajL6LcDcDF7LoyLwMTym7SRuwQ==} @@ -2282,6 +2293,7 @@ packages: '@safe-global/safe-gateway-typescript-sdk@3.23.1': resolution: {integrity: sha512-6ORQfwtEJYpalCeVO21L4XXGSdbEMfyp2hEv6cP82afKXSwvse6d3sdelgaPWUxHIsFRkWvHDdzh8IyyKHZKxw==} engines: {node: '>=16'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} @@ -3287,11 +3299,25 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@uniswap/token-lists@1.0.0-beta.33': resolution: {integrity: sha512-JQkXcpRI3jFG8y3/CGC4TS8NkDgcxXaOQuYW8Qdvd6DcDiIyg2vVYCG9igFEzF0G6UvxgHkBKC7cWCgzZNYvQg==} engines: {node: '>=10'} + '@usdctofiat/offramp@7.0.1': + resolution: {integrity: sha512-HeyoeARVU4Zr/3KG/MLGhj0XI/ZCSW1DodiMRYzndVl5AlimnHk1KVoFAWuWbCy2oimGje3lIUX01PnDf5E6TQ==} + engines: {node: '>=22'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + viem: ^2 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + '@vaultsfyi/sdk@2.1.9': resolution: {integrity: sha512-pXxEGh24/dnRQjF2uIUHaLtu0WC9+V2wpWCvyEBfS/zfFdKt35AY8Jgr6rOe3T3ehBQMq8BKCJZq+WPJFGj+ig==} @@ -3507,6 +3533,40 @@ packages: peerDependencies: viem: ^2.23.15 + '@zkp2p/cash@0.4.8': + resolution: {integrity: sha512-+JwFs2RFjzw9L0szLXuILJukE8acQXXE1WZlRJXxEQx9aFauJ/Rq8dqdx1AIs3xTZ8tG9eHRXkM1Dvx6daDaEg==} + engines: {node: '>=22'} + peerDependencies: + react: '>=18' + viem: '>=2.37.3 <3' + peerDependenciesMeta: + react: + optional: true + + '@zkp2p/contracts-v2@0.4.0': + resolution: {integrity: sha512-wE4IfjRSUVfOiAULoh6eVUj5vExSlcMY6+VsRLOhGq+1q06uy/aS2lMYjzqoDAXibMpYPTVhsuy1MEB2jKGKqw==} + peerDependencies: + ethers: ^5.0.0 || ^6.0.0 + + '@zkp2p/indexer-schema@0.20.0': + resolution: {integrity: sha512-EQsmFfp61hI0zzILYoh8aPzf+CGeduoiAQQ+FD27oIQBj5piKFqNQCfzhI14A7lBWtS69gXqjPuJJTo/BOaO3w==} + engines: {node: '>=16'} + + '@zkp2p/sdk@0.12.0': + resolution: {integrity: sha512-7boAYdUV+R3G+1hFOp7lQLxX9NUDVXtfW3RsgBt4ijhg3BqO9RBgpMfeWfqoE7kRUVDo/xNZL39bhBbXK6NmIA==} + engines: {node: '>=22'} + peerDependencies: + react: '>=16.8.0' + viem: ^2.37.3 + peerDependenciesMeta: + react: + optional: true + + '@zkp2p/zkp2p-attestation@2.0.0': + resolution: {integrity: sha512-m+HWDYTEW109xSqh0NWJFoWR0ZIoxJqQRguQltfr6RSkALBJFWv5WWDQrcPN0TiqTN2KdLI7BYQTDluZfjq2MA==} + engines: {node: '>=20'} + hasBin: true + '@zoralabs/coins-sdk@0.2.8': resolution: {integrity: sha512-vni9qcdS6/9HUOue7SDir2wHn+SSSDmxfZhBcCzQWdK9NaW/+E5jCWXuQGFgBzKpLc4FN5ktJz36v92BADQE3g==} engines: {node: '>=22'} @@ -4250,6 +4310,7 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + deprecated: Active development of CryptoJS has been discontinued. This library is no longer maintained. dag-jose@5.1.1: resolution: {integrity: sha512-9alfZ8Wh1XOOMel8bMpDqWsDT72ojFQCJPtwZSev9qh4f8GoCV9qrJW8jcOUhcstO8Kfm09FHGo//jqiZq3z9w==} @@ -6665,6 +6726,7 @@ packages: opensea-js@7.1.18: resolution: {integrity: sha512-cFSwroGwRkb8/FHsNjIwL2qvdve39CKMU6IUKmx+zDfsgVwKQ+7SHEj5YfKEspji5kUPpnfBlNLCAIbRS+pssA==} engines: {node: '>=20.0.0'} + deprecated: This package has been renamed to @opensea/sdk. Install @opensea/sdk instead. optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -6696,6 +6758,14 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + ox@0.11.3: + resolution: {integrity: sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + ox@0.14.5: resolution: {integrity: sha512-HgmHmBveYO40H/R3K6TMrwYtHsx/u6TAB+GpZlgJCoW0Sq5Ttpjih0IZZiwGQw7T6vdW4IAyobYrE2mdAvyF8Q==} peerDependencies: @@ -8159,6 +8229,7 @@ packages: uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@11.1.0: @@ -8171,10 +8242,12 @@ packages: uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: @@ -8536,6 +8609,9 @@ packages: zod@3.25.56: resolution: {integrity: sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} @@ -10015,13 +10091,6 @@ snapshots: optionalDependencies: '@types/node': 20.17.27 - '@inquirer/external-editor@1.0.1(@types/node@22.13.14)': - dependencies: - chardet: 2.1.0 - iconv-lite: 0.6.3 - optionalDependencies: - '@types/node': 22.13.14 - '@ipld/dag-cbor@9.2.5': dependencies: cborg: 4.5.8 @@ -10117,41 +10186,6 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.17.27 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - '@jest/create-cache-key-function@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -11638,6 +11672,13 @@ snapshots: react: 18.3.1 react-native: 0.84.1(@babel/core@7.26.10)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@5.0.10) + '@relayprotocol/relay-sdk@6.1.3(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))': + dependencies: + axios: 1.13.6(debug@4.4.3) + viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) + transitivePeerDependencies: + - debug + '@reown/appkit-common@1.7.8(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 @@ -12021,11 +12062,19 @@ snapshots: dependencies: '@solana/kit': 5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(utf-8-validate@5.0.10) + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana-program/token-2022@0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))': dependencies: '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2) + '@solana-program/token-2022@0.6.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + dependencies: + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana-program/token-2022@0.6.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))': dependencies: '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -13278,6 +13327,22 @@ snapshots: '@uniswap/token-lists@1.0.0-beta.33': {} + '@usdctofiat/offramp@7.0.1(bufferutil@4.0.9)(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))': + dependencies: + '@zkp2p/cash': 0.4.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@zkp2p/contracts-v2': 0.4.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.2)(zod@4.3.6) + '@zkp2p/sdk': 0.12.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) + viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) + zod: 4.3.6 + optionalDependencies: + react: 18.3.1 + transitivePeerDependencies: + - bufferutil + - debug + - ethers + - typescript + - utf-8-validate + '@vaultsfyi/sdk@2.1.9(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: x402-fetch: 0.7.0(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))(@tanstack/query-core@5.89.0)(@tanstack/react-query@5.89.0(react@18.3.1))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -14043,6 +14108,16 @@ snapshots: - typescript - utf-8-validate + '@x402/svm@2.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))': + dependencies: + '@solana-program/compute-budget': 0.11.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token': 0.9.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana-program/token-2022': 0.6.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) + '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@x402/core': 2.7.0 + transitivePeerDependencies: + - '@solana/sysvars' + '@x402/svm@2.7.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2))': dependencies: '@solana-program/compute-budget': 0.11.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) @@ -14182,6 +14257,78 @@ snapshots: '@simplewebauthn/types': 12.0.0 viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@zkp2p/cash@0.4.8(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))': + dependencies: + '@relayprotocol/relay-sdk': 6.1.3(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@zkp2p/sdk': 0.12.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@3.25.76) + viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) + zod: 3.25.76 + optionalDependencies: + react: 18.3.1 + transitivePeerDependencies: + - bufferutil + - debug + - typescript + - utf-8-validate + + '@zkp2p/contracts-v2@0.4.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.2)(zod@3.25.76)': + dependencies: + abitype: 1.2.3(typescript@5.8.2)(zod@3.25.76) + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - typescript + - zod + + '@zkp2p/contracts-v2@0.4.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.2)(zod@4.3.6)': + dependencies: + abitype: 1.2.3(typescript@5.8.2)(zod@4.3.6) + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - typescript + - zod + + '@zkp2p/indexer-schema@0.20.0': {} + + '@zkp2p/sdk@0.12.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@3.25.76)': + dependencies: + '@zkp2p/contracts-v2': 0.4.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.2)(zod@3.25.76) + '@zkp2p/indexer-schema': 0.20.0 + '@zkp2p/zkp2p-attestation': 2.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ox: 0.11.3(typescript@5.8.2)(zod@3.25.76) + viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + react: 18.3.1 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@zkp2p/sdk@0.12.0(bufferutil@4.0.9)(react@18.3.1)(typescript@5.8.2)(utf-8-validate@5.0.10)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)': + dependencies: + '@zkp2p/contracts-v2': 0.4.0(ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10))(typescript@5.8.2)(zod@4.3.6) + '@zkp2p/indexer-schema': 0.20.0 + '@zkp2p/zkp2p-attestation': 2.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + ox: 0.11.3(typescript@5.8.2)(zod@4.3.6) + viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) + optionalDependencies: + react: 18.3.1 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + + '@zkp2p/zkp2p-attestation@2.0.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@peculiar/x509': 1.14.3 + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@zoralabs/coins-sdk@0.2.8(abitype@1.0.8(typescript@5.8.2)(zod@4.3.6))(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6))': dependencies: '@hey-api/client-fetch': 0.8.4 @@ -14242,6 +14389,11 @@ snapshots: typescript: 5.8.2 zod: 3.25.56 + abitype@1.2.3(typescript@5.8.2)(zod@3.25.76): + optionalDependencies: + typescript: 5.8.2 + zod: 3.25.76 + abitype@1.2.3(typescript@5.8.2)(zod@4.3.6): optionalDependencies: typescript: 5.8.2 @@ -14859,12 +15011,12 @@ snapshots: - supports-color - typescript - clanker-sdk@4.1.19(@types/node@22.13.14)(typescript@5.8.2)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)): + clanker-sdk@4.1.19(@types/node@20.17.27)(typescript@5.8.2)(viem@2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6)): dependencies: '@openzeppelin/merkle-tree': 1.0.8 abitype: 1.0.8(typescript@5.8.2)(zod@3.25.56) dotenv: 16.4.7 - inquirer: 8.2.7(@types/node@22.13.14) + inquirer: 8.2.7(@types/node@20.17.27) viem: 2.47.4(bufferutil@4.0.9)(typescript@5.8.2)(utf-8-validate@5.0.10)(zod@4.3.6) zod: 3.25.56 transitivePeerDependencies: @@ -15003,21 +15155,6 @@ snapshots: - supports-color - ts-node - create-jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - create-require@1.1.1: optional: true @@ -16393,26 +16530,6 @@ snapshots: transitivePeerDependencies: - '@types/node' - inquirer@8.2.7(@types/node@22.13.14): - dependencies: - '@inquirer/external-editor': 1.0.1(@types/node@22.13.14) - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - transitivePeerDependencies: - - '@types/node' - int64-buffer@1.1.0: {} interface-blockstore@5.3.2: @@ -16984,25 +17101,6 @@ snapshots: - supports-color - ts-node - jest-cli@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jest-config@29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2)): dependencies: '@babel/core': 7.26.10 @@ -17034,68 +17132,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@20.17.27)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): - dependencies: - '@babel/core': 7.26.10 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 20.17.27 - ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.8.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): - dependencies: - '@babel/core': 7.26.10 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.13.14 - ts-node: 10.9.2(@types/node@22.13.14)(typescript@5.8.2) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -17323,18 +17359,6 @@ snapshots: - supports-color - ts-node - jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jose@4.15.9: {} jose@5.10.0: {} @@ -18390,6 +18414,36 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + ox@0.11.3(typescript@5.8.2)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.8.2)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - zod + + ox@0.11.3(typescript@5.8.2)(zod@4.3.6): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.2.3(typescript@5.8.2)(zod@4.3.6) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.8.2 + transitivePeerDependencies: + - zod + ox@0.14.5(typescript@5.8.2)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.1 @@ -19762,26 +19816,6 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.10) - ts-jest@29.3.0(@babel/core@7.26.10)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.10))(jest@29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)))(typescript@5.8.2): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.13.14)(ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.1 - type-fest: 4.38.0 - typescript: 5.8.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.10 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.10) - ts-node@10.9.2(@types/node@20.17.27)(typescript@5.8.2): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -19801,25 +19835,6 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@22.13.14)(typescript@5.8.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.14 - acorn: 8.15.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.8.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true - tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 @@ -20753,7 +20768,7 @@ snapshots: '@scure/base': 1.2.6 '@solana-program/compute-budget': 0.8.0(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) '@solana-program/token': 0.5.1(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) - '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)) + '@solana-program/token-2022': 0.4.2(@solana/kit@2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))) '@solana/kit': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/transaction-confirmation': 2.3.0(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.2)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/wallet-standard-features': 1.3.0 @@ -20864,6 +20879,8 @@ snapshots: zod@3.25.56: {} + zod@3.25.76: {} + zod@4.3.6: {} zustand@5.0.0(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)):