From ad7fe96f72d21191e92dae6b2bd53c273f9b2833 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 12:24:50 -0500 Subject: [PATCH 01/15] changes --- typescript/packages/core/package.json | 15 +- typescript/packages/core/src/index.ts | 102 +- .../packages/core/src/plugins/send-nft.ts | 69 + .../packages/wallets/crossmint/package.json | 15 +- .../wallets/crossmint/src/custodial.ts | 9 +- typescript/pnpm-lock.yaml | 1136 ++++++++++++++++- 6 files changed, 1247 insertions(+), 99 deletions(-) create mode 100644 typescript/packages/core/src/plugins/send-nft.ts diff --git a/typescript/packages/core/package.json b/typescript/packages/core/package.json index 5239476fb..52d6a3b34 100644 --- a/typescript/packages/core/package.json +++ b/typescript/packages/core/package.json @@ -2,7 +2,11 @@ "name": "@goat-sdk/core", "version": "0.3.10", "sideEffects": false, - "files": ["dist/**/*", "README.md", "package.json"], + "files": [ + "dist/**/*", + "README.md", + "package.json" + ], "scripts": { "build": "tsup", "clean": "rm -rf dist", @@ -20,6 +24,9 @@ "vitest": "^2.1.5" }, "dependencies": { + "@metaplex-foundation/mpl-bubblegum": "^4.2.1", + "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", + "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", "@solana/web3.js": "1.95.8", "abitype": "^1.0.6", "viem": "^2.21.49", @@ -40,6 +47,10 @@ "bugs": { "url": "https://github.com/goat-sdk/goat/issues" }, - "keywords": ["ai", "agents", "web3"], + "keywords": [ + "ai", + "agents", + "web3" + ], "packageManager": "pnpm@9.14.2" } diff --git a/typescript/packages/core/src/index.ts b/typescript/packages/core/src/index.ts index 0235ec694..903aebae6 100644 --- a/typescript/packages/core/src/index.ts +++ b/typescript/packages/core/src/index.ts @@ -1,60 +1,62 @@ import type { Plugin } from "./plugins/plugins"; import { sendETH } from "./plugins/send-eth"; +import { transferNFT } from "./plugins/send-nft"; import { sendSOL } from "./plugins/send-sol"; import { - type GetToolsParams, - type Tool, - getTools, - type DeferredTool, - getDeferredTools, - type GetDeferredToolsParams, + type GetToolsParams, + type Tool, + getTools, + type DeferredTool, + getDeferredTools, + type GetDeferredToolsParams, } from "./tools"; -import { addParametersToDescription, parametersToJsonExample} from "./utils"; +import { addParametersToDescription, parametersToJsonExample } from "./utils"; import type { - Balance, - Chain, - EVMReadRequest, - EVMSmartWalletClient, - EVMTransaction, - EVMTypedData, - EVMWalletClient, - Signature, - SolanaReadRequest, - SolanaTransaction, - SolanaWalletClient, - WalletClient, - isEVMSmartWalletClient, - isEVMWalletClient, - isSolanaWalletClient, - ChainForWalletClient + Balance, + Chain, + EVMReadRequest, + EVMSmartWalletClient, + EVMTransaction, + EVMTypedData, + EVMWalletClient, + Signature, + SolanaReadRequest, + SolanaTransaction, + SolanaWalletClient, + WalletClient, + isEVMSmartWalletClient, + isEVMWalletClient, + isSolanaWalletClient, + ChainForWalletClient, } from "./wallets"; export { - getTools, - getDeferredTools, - sendETH, - sendSOL, - addParametersToDescription, - parametersToJsonExample, - type Tool, - type DeferredTool, - type GetToolsParams, - type GetDeferredToolsParams, - type Plugin, - type WalletClient, - type EVMTransaction, - type EVMReadRequest, - type EVMWalletClient, - type EVMSmartWalletClient, - type SolanaTransaction, - type SolanaReadRequest, - type SolanaWalletClient, - type Signature, - type Balance, - type EVMTypedData, - type isEVMWalletClient, - type isEVMSmartWalletClient, - type isSolanaWalletClient, - type Chain, - type ChainForWalletClient, + getTools, + getDeferredTools, + sendETH, + sendSOL, + transferNFT, + addParametersToDescription, + parametersToJsonExample, + type Tool, + type DeferredTool, + type GetToolsParams, + type GetDeferredToolsParams, + type Plugin, + type WalletClient, + type EVMTransaction, + type EVMReadRequest, + type EVMWalletClient, + type EVMSmartWalletClient, + type SolanaTransaction, + type SolanaReadRequest, + type SolanaWalletClient, + type Signature, + type Balance, + type EVMTypedData, + type isEVMWalletClient, + type isEVMSmartWalletClient, + type isSolanaWalletClient, + type Chain, + type ChainForWalletClient, }; diff --git a/typescript/packages/core/src/plugins/send-nft.ts b/typescript/packages/core/src/plugins/send-nft.ts new file mode 100644 index 000000000..a903a0f4f --- /dev/null +++ b/typescript/packages/core/src/plugins/send-nft.ts @@ -0,0 +1,69 @@ +import { Connection, PublicKey } from "@solana/web3.js"; +import { parseUnits } from "viem"; +import type { SolanaWalletClient } from "../wallets"; +import type { Plugin } from "./plugins"; +import { z } from "zod"; +import { SystemProgram } from "@solana/web3.js"; +import { + mplBubblegum, + getAssetWithProof, + transfer, +} from "@metaplex-foundation/mpl-bubblegum"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; +import { + fromWeb3JsPublicKey, + toWeb3JsInstruction, +} from "@metaplex-foundation/umi-web3js-adapters"; + +export function transferNFT(): Plugin { + return { + name: "transfer_nft", + supportsSmartWallets: () => true, + supportsChain: (chain) => chain.type === "solana", + getTools: async () => { + return [ + { + name: "transfer_nft", + description: + "This {{tool}} sends an NFT from your wallet to an address on a Solana chain.", + parameters: transferNFTParametersSchema, + method: transferNFTMethod, + }, + ]; + }, + }; +} + +const transferNFTParametersSchema = z.object({ + recipientAddress: z.string().describe("The address to send the NFT to"), + assetId: z.string().describe("The asset ID of the NFT to send"), +}); + +async function transferNFTMethod( + walletClient: SolanaWalletClient, + parameters: z.infer, +): Promise { + const { recipientAddress, assetId } = parameters; + const connection = new Connection( + "https://api.devnet.solana.com", + "confirmed", + ); + const umi = createUmi(connection); + console.log({ assetId, recipientAddress, walletClient }); + umi.use(mplBubblegum()); + const assetWithProof = await getAssetWithProof( + umi, + fromWeb3JsPublicKey(new PublicKey(assetId)), + ); + const instructions = transfer(umi, { + ...assetWithProof, + leafOwner: fromWeb3JsPublicKey(new PublicKey(walletClient.getAddress())), + newLeafOwner: fromWeb3JsPublicKey(new PublicKey(recipientAddress)), + }).getInstructions(); + + const result = await walletClient.sendTransaction({ + instructions: instructions.map(toWeb3JsInstruction), + }); + + return result.hash; +} diff --git a/typescript/packages/wallets/crossmint/package.json b/typescript/packages/wallets/crossmint/package.json index b2a48e0f6..2862cc526 100644 --- a/typescript/packages/wallets/crossmint/package.json +++ b/typescript/packages/wallets/crossmint/package.json @@ -2,7 +2,11 @@ "name": "@goat-sdk/crossmint", "version": "0.1.5", "sideEffects": false, - "files": ["dist/**/*", "README.md", "package.json"], + "files": [ + "dist/**/*", + "README.md", + "package.json" + ], "scripts": { "build": "tsup", "clean": "rm -rf dist", @@ -21,6 +25,9 @@ }, "dependencies": { "@goat-sdk/core": "workspace:*", + "@metaplex-foundation/mpl-bubblegum": "^4.2.1", + "@metaplex-foundation/umi": "^0.9.2", + "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", "@solana/web3.js": "1.95.8", "abitype": "^1.0.6", "bs58": "^6.0.0", @@ -45,6 +52,10 @@ "bugs": { "url": "https://github.com/goat-sdk/goat/issues" }, - "keywords": ["ai", "agents", "web3"], + "keywords": [ + "ai", + "agents", + "web3" + ], "packageManager": "pnpm@9.14.2" } diff --git a/typescript/packages/wallets/crossmint/src/custodial.ts b/typescript/packages/wallets/crossmint/src/custodial.ts index 9d06be604..595813591 100644 --- a/typescript/packages/wallets/crossmint/src/custodial.ts +++ b/typescript/packages/wallets/crossmint/src/custodial.ts @@ -5,9 +5,9 @@ import type { } from "@goat-sdk/core"; import { type Connection, - PublicKey, TransactionMessage, VersionedTransaction, + PublicKey, } from "@solana/web3.js"; import bs58 from "bs58"; import { createCrossmintAPI } from "./api"; @@ -53,7 +53,7 @@ export function custodialFactory(apiKey: string) { ): Promise { const { connection, env = "staging" } = params; - const locator = `${getLocator(params)}:solana-custodial-wallet`; + const locator = `${getLocator(params)}`; const client = createCrossmintAPI(apiKey, env); const { address } = await client.getWallet(locator); @@ -102,9 +102,10 @@ export function custodialFactory(apiKey: string) { async sendTransaction({ instructions }: SolanaTransaction) { const latestBlockhash = await connection.getLatestBlockhash("confirmed"); + // see https://linear.app/crossmint/issue/WAL-3436/solana-transactions-get-stuck-when-sending-the-dummy-value + const publicKey = new PublicKey("11111111111111111111111111111112"); const message = new TransactionMessage({ - // Placeholder payer key since Crossmint will override it - payerKey: new PublicKey("placeholder"), + payerKey: publicKey, recentBlockhash: latestBlockhash.blockhash, instructions, }).compileToV0Message(); diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index 7b20a8812..3217b99b2 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) examples/eleven-labs/conversational-agent: dependencies: @@ -160,16 +160,16 @@ importers: version: 1.0.4(zod@3.23.8) '@goat-sdk/adapter-vercel-ai': specifier: 0.1.4 - version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(ai@4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8)) + version: 0.1.4(@goat-sdk/core@packages+core)(ai@4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8)) '@goat-sdk/core': - specifier: 0.3.8 - version: 0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) + specifier: workspace:* + version: link:../../../packages/core '@goat-sdk/crossmint': - specifier: 0.1.4 - version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) + specifier: workspace:* + version: link:../../../packages/wallets/crossmint '@goat-sdk/plugin-erc20': - specifier: 0.1.4 - version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) + specifier: workspace:* + version: link:../../../packages/plugins/erc20 '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -309,7 +309,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/adapters/eliza: dependencies: @@ -340,7 +340,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/adapters/langchain: dependencies: @@ -371,7 +371,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/adapters/vercel-ai: dependencies: @@ -402,10 +402,19 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/core: dependencies: + '@metaplex-foundation/mpl-bubblegum': + specifier: ^4.2.1 + version: 4.2.1(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-bundle-defaults': + specifier: ^0.9.2 + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-web3js-adapters': + specifier: ^0.9.2 + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -436,7 +445,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/plugins/erc20: dependencies: @@ -467,7 +476,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/plugins/polymarket: dependencies: @@ -501,13 +510,22 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/wallets/crossmint: dependencies: '@goat-sdk/core': specifier: workspace:* version: link:../../core + '@metaplex-foundation/mpl-bubblegum': + specifier: ^4.2.1 + version: 4.2.1(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': + specifier: ^0.9.2 + version: 0.9.2 + '@metaplex-foundation/umi-bundle-defaults': + specifier: ^0.9.2 + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -541,7 +559,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/wallets/solana: dependencies: @@ -575,7 +593,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages/wallets/viem: dependencies: @@ -603,7 +621,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.5 - version: 2.1.5(@types/node@22.9.1) + version: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) packages: @@ -1482,6 +1500,9 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} @@ -1582,6 +1603,102 @@ packages: resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} + '@metaplex-foundation/digital-asset-standard-api@1.0.4': + resolution: {integrity: sha512-YSYyMnIoKNykDZTXsSCeiIOJ7NT5Ke2pzghXDsinRwHvwIZWv+zY5kJQBvTglAzYlt/GaI+noAhUZXXmSbp07A==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/mpl-bubblegum@4.2.1': + resolution: {integrity: sha512-r9kHrVmkzJApbXwd7cmJyO0mAV3qsJaTjv5ks6PUT1Bzjj9QCvlJYg2UYQJLUTcrY5TjE9wXLpwUqNgllXH/Cw==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.9 < 1' + + '@metaplex-foundation/mpl-token-metadata@3.2.1': + resolution: {integrity: sha512-26W1NhQwDWmLOg/pBRYut7x/vEs/5kFS2sWVEY5/X0f2jJOLhnd4NaZQcq+5u+XZsXvm1jq2AtrRGPNK43oqWQ==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/mpl-toolbox@0.9.4': + resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} + peerDependencies: + '@metaplex-foundation/umi': '>= 0.8.2 < 1' + + '@metaplex-foundation/umi-bundle-defaults@0.9.2': + resolution: {integrity: sha512-kV3tfvgvRjVP1p9OFOtH+ibOtN9omVJSwKr0We4/9r45e5LTj+32su0V/rixZUkG1EZzzOYBsxhtIE0kIw/Hrw==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-downloader-http@0.9.2': + resolution: {integrity: sha512-tzPT9hBwenzTzAQg07rmsrqZfgguAXELbcJrsYMoASp5VqWFXYIP00g94KET6XLjWUXH4P1J2zoa6hGennPXHA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2': + resolution: {integrity: sha512-hhPCxXbYIp4BC4z9gK78sXpWLkNSrfv4ndhF5ruAkdIp7GcRVYKj0QnOUO6lGYGiIkNlw20yoTwOe1CT//OfTQ==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-http-fetch@0.9.2': + resolution: {integrity: sha512-YCZuBu24T9ZzEDe4+w12LEZm/fO9pkyViZufGgASC5NX93814Lvf6Ssjn/hZzjfA7CvZbvLFbmujc6CV3Q/m9Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-options@0.8.9': + resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + + '@metaplex-foundation/umi-program-repository@0.9.2': + resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + resolution: {integrity: sha512-CxMzN7dgVGOq9OcNCJe2casKUpJ3RmTVoOvDFyeoTQuK+vkZ1YSSahbqC1iGuHEtKTLSjtWjKvUU6O7zWFTw3Q==} + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2': + resolution: {integrity: sha512-YRwVf6xH0jPBAUgMhEPi+UbjioAeqTXmjsN2TnmQCPAmHbrHrMRj0rlWYwFLWAgkmoxazYrXP9lqOFRrfOGAEA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2': + resolution: {integrity: sha512-MqcsBz8B4wGl6jxsf2Jo/rAEpYReU9VCSR15QSjhvADHMmdFxCIZCCAgE+gDE2Vuanfl437VhOcP3g5Uw8C16Q==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-serializer-data-view@0.9.2': + resolution: {integrity: sha512-5vGptadJxUxvUcyrwFZxXlEc6Q7AYySBesizCtrBFUY8w8PnF2vzmS45CP1MLySEATNH6T9mD4Rs0tLb87iQyA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': + resolution: {integrity: sha512-WT82tkiYJ0Qmscp7uTj1Hz6aWQPETwaKLAENAUN5DeWghkuBKtuxyBKVvEOuoXerJSdhiAk0e8DWA4cxcTTQ/w==} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + resolution: {integrity: sha512-N3VWLDTJ0bzzMKcJDL08U3FaqRmwlN79FyE4BHj6bbAaJ9LEHjDQ9RJijZyWqTm0jE7I750fU7Ow5EZL38Xi6Q==} + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + resolution: {integrity: sha512-NtBf1fnVNQJHFQjLFzRu2i9GGnigb9hOm/Gfrk628d0q0tRJB7BOM3bs5C61VAs7kJs4yd+pDNVAERJkknQ7Lg==} + + '@metaplex-foundation/umi-serializers@0.9.0': + resolution: {integrity: sha512-hAOW9Djl4w4ioKeR4erDZl5IG4iJdP0xA19ZomdaCbMhYAAmG/FEs5khh0uT2mq53/MnzWcXSUPoO8WBN4Q+Vg==} + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2': + resolution: {integrity: sha512-fR1Kf21uylMFd1Smkltmj4jTNxhqSWf416owsJ+T+cvJi2VCOcOwq/3UFzOrpz78fA0RhsajKYKj0HYsRnQI1g==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi-web3js-adapters@0.9.2': + resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} + peerDependencies: + '@metaplex-foundation/umi': ^0.9.2 + '@solana/web3.js': ^1.72.0 + + '@metaplex-foundation/umi@0.9.2': + resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} + '@motionone/animation@10.18.0': resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} @@ -2042,6 +2159,9 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -2072,6 +2192,9 @@ packages: '@types/react@18.3.12': resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -2273,6 +2396,9 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} + abs@1.3.14: + resolution: {integrity: sha512-PrS26IzwKLWwuURpiKl8wRmJ2KdR/azaVrLEBWG/TALwT20Y7qjtYp1qcMLHA4206hBHY5phv3w4pjf9NPv4Vw==} + acorn-typescript@1.4.13: resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} peerDependencies: @@ -2436,6 +2562,9 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + bn.js@4.12.1: resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} @@ -2472,6 +2601,12 @@ packages: buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -2518,6 +2653,10 @@ packages: caniuse-lite@1.0.30001686: resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} + capture-stack-trace@1.0.2: + resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} + engines: {node: '>=0.10.0'} + chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -2614,6 +2753,9 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2622,6 +2764,10 @@ packages: engines: {node: '>=0.8'} hasBin: true + create-error-class@3.0.2: + resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} + engines: {node: '>=0.10.0'} + create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -2638,6 +2784,9 @@ packages: crossws@0.3.1: resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + crypto@1.0.1: resolution: {integrity: sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==} deprecated: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in. @@ -2693,6 +2842,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + deffy@2.2.4: + resolution: {integrity: sha512-pLc9lsbsWjr6RxmJ2OLyvm+9l4j1yK69h+TML/gUit/t3vTijpkNGh8LioaJYTGO7F25m6HZndADcUOo2PsiUg==} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2743,6 +2895,9 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + duplexify@4.1.3: resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} @@ -2785,6 +2940,16 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + err@1.1.1: + resolution: {integrity: sha512-N97Ybd2jJHVQ+Ft3Q5+C2gM3kgygkdeQmEqbN2z15UTVyyEsIwLA1VK39O1DHEJhXbwIFcJLqm6iARNhFANcQA==} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -2842,9 +3007,16 @@ packages: eth-rpc-errors@4.0.3: resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + 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'} + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -2870,6 +3042,9 @@ packages: resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} engines: {node: '>=18.0.0'} + exec-limiter@3.2.13: + resolution: {integrity: sha512-86Ri699bwiHZVBzTzNj8gspqAhCPchg70zPVWIh3qzUOA1pUMcb272Em3LPk8AE0mS95B9yMJhtqF8vFJAn0dA==} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -2984,6 +3159,9 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.name@1.0.13: + resolution: {integrity: sha512-mVrqdoy5npWZyoXl4DxCeuVF6delDcQjVS9aPdvLYlBxtMTZDR2B5GVEQEoM1jJyspCqg3C0v4ABkLE7tp9xFA==} + gaxios@6.7.1: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} @@ -3011,6 +3189,18 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + git-package-json@1.4.10: + resolution: {integrity: sha512-DRAcvbzd2SxGK7w8OgYfvKqhFliT5keX0lmSmVdgScgf1kkl5tbbo7Pam6uYoCa1liOiipKxQZG8quCtGWl/fA==} + + git-source@1.1.10: + resolution: {integrity: sha512-XZZ7ZgnLL35oLgM/xjnLYgtlKlxJG0FohC1kWDvGkU7s1VKGXK0pFF/g1itQEwQ3D+uTQzBnzPi8XbqOv7Wc1Q==} + + git-up@1.2.1: + resolution: {integrity: sha512-SRVN3rOLACva8imc7BFrB6ts5iISWKH1/h/1Z+JZYoUI7UVQM7gQqk4M2yxUENbq2jUUT09NEND5xwP1i7Ktlw==} + + git-url-parse@5.0.1: + resolution: {integrity: sha512-4uSiOgrryNEMBX+gTWogenYRUh2j1D+95STTSEF2RCTgLkfJikl8c7BGr0Bn274hwuxTsbS2/FQ5pVS9FoXegQ==} + github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -3047,6 +3237,16 @@ packages: resolution: {integrity: sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==} engines: {node: '>= 0.4'} + got@5.7.1: + resolution: {integrity: sha512-1qd54GLxvVgzuidFmw9ze9umxS3rzhdBH6Wt6BTYrTQUXTN01vGGYXwzLzYLowNx8HBH3/c7kRyvx90fh13i7Q==} + engines: {node: '>=0.10.0 <7'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gry@5.0.8: + resolution: {integrity: sha512-meq9ZjYVpLzZh3ojhTg7IMad9grGsx6rUUKHLqPnhLXzJkRQvEL2U3tQpS5/WentYTtHtxkT3Ew/mb10D6F6/g==} + gtoken@7.1.0: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} @@ -3089,6 +3289,9 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + http-shutdown@1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -3104,12 +3307,21 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3123,6 +3335,9 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -3159,6 +3374,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -3168,9 +3387,24 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-redirect@1.0.0: + resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} + engines: {node: '>=0.10.0'} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + + is-ssh@1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3183,6 +3417,9 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -3207,6 +3444,9 @@ packages: peerDependencies: ws: '*' + iterate-object@1.3.4: + resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -3350,6 +3590,69 @@ packages: openai: optional: true + less@4.2.1: + resolution: {integrity: sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==} + engines: {node: '>=6'} + hasBin: true + + lightningcss-darwin-arm64@1.22.1: + resolution: {integrity: sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.22.1: + resolution: {integrity: sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.22.1: + resolution: {integrity: sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.22.1: + resolution: {integrity: sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.22.1: + resolution: {integrity: sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.22.1: + resolution: {integrity: sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.22.1: + resolution: {integrity: sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.22.1: + resolution: {integrity: sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-x64-msvc@1.22.1: + resolution: {integrity: sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.22.1: + resolution: {integrity: sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -3358,6 +3661,9 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + limit-it@3.2.10: + resolution: {integrity: sha512-T0NK99pHnkimldr1WUqvbGV1oWDku/xC9J/OqzJFsV1jeOS6Bwl8W7vkeQIBqwiON9dTALws+rX/XPMQqWerDQ==} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3397,6 +3703,10 @@ packages: loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3410,6 +3720,10 @@ packages: magic-string@0.30.13: resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -3420,6 +3734,10 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + 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==} @@ -3435,6 +3753,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -3534,6 +3857,11 @@ packages: napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + next@15.0.3: resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -3592,6 +3920,16 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-status-codes@1.0.0: + resolution: {integrity: sha512-1cBMgRxdMWE8KeWCqk2RIOrvUb0XCwYfEsY5/y2NlXyq4Y/RumnOZvTj4Nbr77+Vb2C+kyBoRTdkNOS8L3d/aQ==} + engines: {node: '>=0.10.0'} + + noop6@1.0.9: + resolution: {integrity: sha512-DB3Hwyd89dPr5HqEPg3YHjzvwh/mCqizC1zZ8vyofqc+TQRyPDnT4wgXXbLGF4z9YAzwwTLi8pNLhGqcbSjgkA==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3600,6 +3938,16 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + oargv@3.4.10: + resolution: {integrity: sha512-SXaMANv9sr7S/dP0vj0+Ybipa47UE1ntTWQ2rpPRhC6Bsvfl+Jg03Xif7jfL0sWKOYWK8oPjcZ5eJ82t8AP/8g==} + + obj-def@1.0.9: + resolution: {integrity: sha512-bQ4ya3VYD6FAA1+s6mEhaURRHSmw4+sKaXE6UyXZ1XDYc5D+c7look25dFdydmLd18epUegh398gdDkMUZI9xg==} + obj-multiplex@1.0.0: resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} @@ -3632,6 +3980,9 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + one-by-one@3.2.8: + resolution: {integrity: sha512-HR/pSzZdm46Xqj58K+Bu64kMbSTw8/u77AwWvV+rprO/OsuR++pPlkUJn+SmwqBGRgHKwSKQ974V3uls7crIeQ==} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -3664,6 +4015,10 @@ packages: openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + ox@0.1.2: resolution: {integrity: sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww==} peerDependencies: @@ -3703,6 +4058,28 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-json-path@1.0.9: + resolution: {integrity: sha512-uNu7f6Ef7tQHZRnkyVnCtzdSYVN9uBtge/sG7wzcUaawFWkPYUq67iXxRGrQSg/q0tzxIB8jSyIYUKjG2Jn//A==} + + package-json@2.4.0: + resolution: {integrity: sha512-PRg65iXMTt/uK8Rfh5zvzkUbfAPitF17YaCY+IbHsYgksiLvtzWWTUildHth3mVaZ7871OJ7gtP4LBRBlmAdXg==} + engines: {node: '>=0.10.0'} + + package.json@2.0.1: + resolution: {integrity: sha512-pSxZ6XR5yEawRN2ekxx9IKgPN5uNAYco7MCPxtBEWMKO3UKWa1X2CtQMzMgloeGj2g2o6cue3Sb5iPkByIJqlw==} + deprecated: Use pkg.json instead. + + parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-url@1.3.11: + resolution: {integrity: sha512-1wj9nkgH/5EboDxLwaTMGJh3oH3f+Gue+aGdh631oCqoSBpokzmMmOldvOeBPtB8GJBYJbaF93KPzlkU+Y1ksg==} + partial-json@0.1.7: resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} @@ -3755,10 +4132,22 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pify@5.0.0: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} engines: {node: '>=10'} + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} @@ -3862,6 +4251,10 @@ packages: engines: {node: '>=10'} hasBin: true + prepend-http@1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -3872,9 +4265,18 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + protocols@1.4.8: + resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==} + + protocols@2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -3897,9 +4299,18 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + r-json@1.3.0: + resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} + + r-package-json@1.0.9: + resolution: {integrity: sha512-G4Vpf1KImWmmPFGdtWQTU0L9zk0SjqEC4qs/jE7AQ+Ylmr5kizMzGeC4wnHp5+ijPqNN+2ZPpvyjVNdN1CDVcg==} + radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -3928,6 +4339,10 @@ packages: resolution: {integrity: sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg==} engines: {node: '>=0.10.0'} + read-all-stream@3.1.0: + resolution: {integrity: sha512-DI1drPHbmBcUDWrJ7ull/F2Qb8HkwBncVx8/RpKYFSIACYaVRQReISYPdZz/mt1y1+qMCOrfReTopERmaxtP6w==} + engines: {node: '>=0.10.0'} + read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -3953,6 +4368,13 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + registry-auth-token@3.4.0: + resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4000,12 +4422,22 @@ packages: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scheduler@0.25.0-rc-66855b96-20241106: resolution: {integrity: sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA==} secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -4057,6 +4489,9 @@ packages: simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + sliced@1.0.1: + resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} + socket.io-client@4.8.1: resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} engines: {node: '>=10.0.0'} @@ -4072,10 +4507,29 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -4158,6 +4612,10 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -4244,6 +4702,11 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + engines: {node: '>=10'} + hasBin: true + text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} @@ -4267,6 +4730,10 @@ packages: tiktoken@1.0.17: resolution: {integrity: sha512-UuFHqpy/DxOfNiC3otsqbx3oS6jr5uKdQhB/CvDEroZQbVHt+qAK+4JbIooabUWKU9g6PpsFylNu9Wcg4MxSGA==} + timed-out@3.1.3: + resolution: {integrity: sha512-3RB4qgvPkxF/FGPnrzaWLhW1rxNK2sdH0mFjbhxkfTR6QXvcM3EtYm9L44UrhODZrZ+yhDXeMncLqi8QXn2MJg==} + engines: {node: '>=0.10.0'} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -4294,6 +4761,10 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tmp@0.0.28: + resolution: {integrity: sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==} + engines: {node: '>=0.4.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4311,6 +4782,10 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -4398,12 +4873,18 @@ packages: engines: {node: '>=14.17'} hasBin: true + typpy@2.3.13: + resolution: {integrity: sha512-vOxIcQz9sxHi+rT09SJ5aDgVgrPppQjwnnayTrMye1ODaU8gIZTDM19t9TxmEElbMihx2Nq/0/b/MtyKfayRqA==} + ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + ul@5.2.15: + resolution: {integrity: sha512-svLEUy8xSCip5IWnsRa0UOg+2zP0Wsj4qlbjTmX6GJSmvKMHADBuHOm1dpNkWqWPIGuVSqzUkV3Cris5JrlTRQ==} + uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -4468,6 +4949,10 @@ packages: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true + unzip-response@1.0.2: + resolution: {integrity: sha512-pwCcjjhEcpW45JZIySExBHYv5Y9EeL2OIGEfrSKp2dMUFGFv4CpvZkwJbVge8OvGH2BNNtJBx67DuKuJhf+N5Q==} + engines: {node: '>=0.10'} + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -4477,6 +4962,10 @@ packages: uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + url-parse-lax@1.0.0: + resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} + engines: {node: '>=0.10.0'} + use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -4491,6 +4980,9 @@ packages: 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==} @@ -4516,6 +5008,9 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + valtio@1.11.2: resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} @@ -4605,6 +5100,9 @@ packages: typescript: optional: true + w-json@1.3.10: + resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} + wagmi@2.13.3: resolution: {integrity: sha512-EBtrWUtmSpr7YYkPE1aokXiMn8EF+8kaNJAXtQ0UUSKlOLEbrsDtaiO3mEOOpFQtRXd2UUI2teMnIThCOk71kQ==} peerDependencies: @@ -4620,6 +5118,10 @@ packages: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + webauthn-p256@0.0.10: resolution: {integrity: sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==} @@ -5510,6 +6012,12 @@ snapshots: ai: 4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8) zod: 3.23.8 + '@goat-sdk/adapter-vercel-ai@0.1.4(@goat-sdk/core@packages+core)(ai@4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8))': + dependencies: + '@goat-sdk/core': link:packages/core + ai: 4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8) + zod: 3.23.8 + '@goat-sdk/core@0.3.10(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -5560,20 +6068,6 @@ snapshots: - typescript - utf-8-validate - '@goat-sdk/crossmint@0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)': - dependencies: - '@goat-sdk/core': 0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) - abitype: 1.0.6(typescript@5.6.3)(zod@3.23.8) - bs58: 6.0.0 - viem: 2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) - zod: 3.23.8 - transitivePeerDependencies: - - bufferutil - - encoding - - typescript - - utf-8-validate - '@goat-sdk/plugin-erc20@0.1.4(@goat-sdk/core@0.3.5(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.3.5(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) @@ -5704,6 +6198,12 @@ snapshots: '@jridgewell/set-array@1.2.1': {} + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + optional: true + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': @@ -5940,6 +6440,122 @@ snapshots: transitivePeerDependencies: - supports-color + '@metaplex-foundation/digital-asset-standard-api@1.0.4(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + package.json: 2.0.1 + + '@metaplex-foundation/mpl-bubblegum@4.2.1(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/digital-asset-standard-api': 1.0.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-token-metadata': 3.2.1(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + '@noble/hashes': 1.5.0 + merkletreejs: 0.3.11 + + '@metaplex-foundation/mpl-token-metadata@3.2.1(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/mpl-toolbox@0.9.4(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-downloader-http': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-program-repository': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-chunk-get-accounts': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-serializer-data-view': 0.9.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-downloader-http@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@noble/curves': 1.6.0 + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + '@metaplex-foundation/umi-options@0.8.9': {} + + '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-public-keys@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + + '@metaplex-foundation/umi-rpc-chunk-get-accounts@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + + '@metaplex-foundation/umi-serializers-core@0.8.9': {} + + '@metaplex-foundation/umi-serializers-encodings@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers-numbers@0.8.9': + dependencies: + '@metaplex-foundation/umi-serializers-core': 0.8.9 + + '@metaplex-foundation/umi-serializers@0.9.0': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers-core': 0.8.9 + '@metaplex-foundation/umi-serializers-encodings': 0.8.9 + '@metaplex-foundation/umi-serializers-numbers': 0.8.9 + + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + + '@metaplex-foundation/umi@0.9.2': + dependencies: + '@metaplex-foundation/umi-options': 0.8.9 + '@metaplex-foundation/umi-public-keys': 0.8.9 + '@metaplex-foundation/umi-serializers': 0.9.0 + '@motionone/animation@10.18.0': dependencies: '@motionone/easing': 10.18.0 @@ -6433,6 +7049,10 @@ snapshots: '@types/estree@1.0.6': {} + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.9.1 + '@types/ms@0.7.34': {} '@types/node-fetch@2.6.12': @@ -6467,6 +7087,10 @@ snapshots: '@types/prop-types': 15.7.13 csstype: 3.1.3 + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.9.1 + '@types/retry@0.12.0': {} '@types/sql.js@1.4.9': @@ -6495,13 +7119,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.1))': + '@vitest/mocker@2.1.5(vite@5.4.11(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0))': dependencies: '@vitest/spy': 2.1.5 estree-walker: 3.0.3 magic-string: 0.30.13 optionalDependencies: - vite: 5.4.11(@types/node@22.9.1) + vite: 5.4.11(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) '@vitest/pretty-format@2.1.5': dependencies: @@ -6955,6 +7579,10 @@ snapshots: dependencies: event-target-shim: 5.0.1 + abs@1.3.14: + dependencies: + ul: 5.2.15 + acorn-typescript@1.4.13(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -7115,6 +7743,8 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + bn.js@4.11.6: {} + bn.js@4.12.1: {} bn.js@5.2.1: {} @@ -7154,6 +7784,11 @@ snapshots: buffer-equal-constant-time@1.0.1: {} + buffer-from@1.1.2: + optional: true + + buffer-reverse@1.0.1: {} + buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -7197,6 +7832,8 @@ snapshots: caniuse-lite@1.0.30001686: {} + capture-stack-trace@1.0.2: {} + chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -7304,10 +7941,19 @@ snapshots: cookie-es@1.2.2: {} + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + optional: true + core-util-is@1.0.3: {} crc-32@1.2.2: {} + create-error-class@3.0.2: + dependencies: + capture-stack-trace: 1.0.2 + create-require@1.1.1: {} cross-fetch@3.1.8: @@ -7332,6 +7978,8 @@ snapshots: dependencies: uncrypto: 0.1.3 + crypto-js@4.2.0: {} + crypto@1.0.1: {} css-color-keywords@1.0.0: {} @@ -7370,6 +8018,10 @@ snapshots: deep-extend@0.6.0: {} + deffy@2.2.4: + dependencies: + typpy: 2.3.13 + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 @@ -7402,6 +8054,10 @@ snapshots: dotenv@16.4.5: {} + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 @@ -7460,6 +8116,19 @@ snapshots: entities@4.5.0: {} + err@1.1.1: + dependencies: + typpy: 2.3.13 + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -7569,6 +8238,10 @@ snapshots: dependencies: fast-safe-stringify: 2.1.1 + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.5.0 + ethereum-cryptography@2.2.1: dependencies: '@noble/curves': 1.4.2 @@ -7576,6 +8249,11 @@ snapshots: '@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 + event-target-shim@5.0.1: {} eventemitter2@6.4.9: {} @@ -7590,6 +8268,11 @@ snapshots: eventsource-parser@3.0.0: {} + exec-limiter@3.2.13: + dependencies: + limit-it: 3.2.10 + typpy: 2.3.13 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -7711,6 +8394,10 @@ snapshots: function-bind@1.1.2: {} + function.name@1.0.13: + dependencies: + noop6: 1.0.9 + gaxios@6.7.1: dependencies: extend: 3.0.2 @@ -7746,6 +8433,31 @@ snapshots: get-stream@8.0.1: {} + git-package-json@1.4.10: + dependencies: + deffy: 2.2.4 + err: 1.1.1 + gry: 5.0.8 + normalize-package-data: 2.5.0 + oargv: 3.4.10 + one-by-one: 3.2.8 + r-json: 1.3.0 + r-package-json: 1.0.9 + tmp: 0.0.28 + + git-source@1.1.10: + dependencies: + git-url-parse: 5.0.1 + + git-up@1.2.1: + dependencies: + is-ssh: 1.4.0 + parse-url: 1.3.11 + + git-url-parse@5.0.1: + dependencies: + git-up: 1.2.1 + github-from-package@0.0.0: {} glob-parent@5.1.2: @@ -7794,6 +8506,36 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + got@5.7.1: + dependencies: + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + create-error-class: 3.0.2 + duplexer2: 0.1.4 + is-redirect: 1.0.0 + is-retry-allowed: 1.2.0 + is-stream: 1.1.0 + lowercase-keys: 1.0.1 + node-status-codes: 1.0.0 + object-assign: 4.1.1 + parse-json: 2.2.0 + pinkie-promise: 2.0.1 + read-all-stream: 3.1.0 + readable-stream: 2.3.8 + timed-out: 3.1.3 + unzip-response: 1.0.2 + url-parse-lax: 1.0.0 + + graceful-fs@4.2.11: + optional: true + + gry@5.0.8: + dependencies: + abs: 1.3.14 + exec-limiter: 3.2.13 + one-by-one: 3.2.8 + ul: 5.2.15 + gtoken@7.1.0: dependencies: gaxios: 6.7.1 @@ -7852,6 +8594,8 @@ snapshots: dependencies: react-is: 16.13.1 + hosted-git-info@2.8.9: {} + http-shutdown@1.2.2: {} https-proxy-agent@7.0.5: @@ -7867,10 +8611,18 @@ snapshots: dependencies: ms: 2.1.3 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + idb-keyval@6.2.1: {} ieee754@1.2.1: {} + image-size@0.5.5: + optional: true + inherits@2.0.4: {} ini@1.3.8: {} @@ -7882,6 +8634,8 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 + is-arrayish@0.2.1: {} + is-arrayish@0.3.2: optional: true @@ -7909,16 +8663,28 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hex-prefixed@1.0.0: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 is-number@7.0.0: {} + is-redirect@1.0.0: {} + is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 + is-retry-allowed@1.2.0: {} + + is-ssh@1.4.0: + dependencies: + protocols: 2.0.1 + + is-stream@1.1.0: {} + is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -7927,6 +8693,9 @@ snapshots: dependencies: which-typed-array: 1.1.16 + is-what@3.14.1: + optional: true + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -7947,6 +8716,8 @@ snapshots: dependencies: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + iterate-object@1.3.4: {} + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -8101,10 +8872,71 @@ snapshots: optionalDependencies: openai: 4.73.0(zod@3.23.8) + less@4.2.1: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + optional: true + + lightningcss-darwin-arm64@1.22.1: + optional: true + + lightningcss-darwin-x64@1.22.1: + optional: true + + lightningcss-freebsd-x64@1.22.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.22.1: + optional: true + + lightningcss-linux-arm64-gnu@1.22.1: + optional: true + + lightningcss-linux-arm64-musl@1.22.1: + optional: true + + lightningcss-linux-x64-gnu@1.22.1: + optional: true + + lightningcss-linux-x64-musl@1.22.1: + optional: true + + lightningcss-win32-x64-msvc@1.22.1: + optional: true + + lightningcss@1.22.1: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.22.1 + lightningcss-darwin-x64: 1.22.1 + lightningcss-freebsd-x64: 1.22.1 + lightningcss-linux-arm-gnueabihf: 1.22.1 + lightningcss-linux-arm64-gnu: 1.22.1 + lightningcss-linux-arm64-musl: 1.22.1 + lightningcss-linux-x64-gnu: 1.22.1 + lightningcss-linux-x64-musl: 1.22.1 + lightningcss-win32-x64-msvc: 1.22.1 + optional: true + lilconfig@3.1.2: {} lilconfig@3.1.3: {} + limit-it@3.2.10: + dependencies: + typpy: 2.3.13 + lines-and-columns@1.2.4: {} listhen@1.9.0: @@ -8160,6 +8992,8 @@ snapshots: loupe@3.1.2: {} + lowercase-keys@1.0.1: {} + lru-cache@10.4.3: {} lru-cache@11.0.2: {} @@ -8172,12 +9006,26 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + make-error@1.3.6: {} merge-stream@2.0.0: {} merge2@1.4.1: {} + merkletreejs@0.3.11: + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.4 + micro-ftch@0.3.1: {} micromatch@4.0.8: @@ -8191,6 +9039,9 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@1.6.0: + optional: true + mime@3.0.0: {} mimic-fn@4.0.0: {} @@ -8268,6 +9119,12 @@ snapshots: napi-build-utils@1.0.2: {} + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + next@15.0.3(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0-rc-66855b96-20241106(react@19.0.0-rc-66855b96-20241106))(react@19.0.0-rc-66855b96-20241106): dependencies: '@next/env': 15.0.3 @@ -8316,12 +9173,37 @@ snapshots: node-releases@2.0.18: {} + node-status-codes@1.0.0: {} + + noop6@1.0.9: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} npm-run-path@5.3.0: dependencies: path-key: 4.0.0 + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + oargv@3.4.10: + dependencies: + iterate-object: 1.3.4 + ul: 5.2.15 + + obj-def@1.0.9: + dependencies: + deffy: 2.2.4 + obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.4 @@ -8354,6 +9236,11 @@ snapshots: dependencies: wrappy: 1.0.2 + one-by-one@3.2.8: + dependencies: + obj-def: 1.0.9 + sliced: 1.0.1 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -8394,6 +9281,8 @@ snapshots: openapi-types@12.1.3: {} + os-tmpdir@1.0.2: {} + ox@0.1.2(typescript@5.6.3)(zod@3.23.8): dependencies: '@adraffy/ens-normalize': 1.11.0 @@ -8436,6 +9325,35 @@ snapshots: package-json-from-dist@1.0.1: {} + package-json-path@1.0.9: + dependencies: + abs: 1.3.14 + + package-json@2.4.0: + dependencies: + got: 5.7.1 + registry-auth-token: 3.4.0 + registry-url: 3.1.0 + semver: 5.7.2 + + package.json@2.0.1: + dependencies: + git-package-json: 1.4.10 + git-source: 1.1.10 + package-json: 2.4.0 + + parse-json@2.2.0: + dependencies: + error-ex: 1.3.2 + + parse-node-version@1.0.1: + optional: true + + parse-url@1.3.11: + dependencies: + is-ssh: 1.4.0 + protocols: 1.4.8 + partial-json@0.1.7: {} path-exists@4.0.0: {} @@ -8470,8 +9388,17 @@ snapshots: pify@3.0.0: {} + pify@4.0.1: + optional: true + pify@5.0.0: {} + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + pino-abstract-transport@0.5.0: dependencies: duplexify: 4.1.3 @@ -8583,14 +9510,23 @@ snapshots: tar-fs: 2.1.1 tunnel-agent: 0.6.0 + prepend-http@1.0.4: {} + process-nextick-args@2.0.1: {} process-warning@1.0.0: {} progress@2.0.3: {} + protocols@1.4.8: {} + + protocols@2.0.1: {} + proxy-compare@2.5.1: {} + prr@1.0.1: + optional: true + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -8616,8 +9552,21 @@ snapshots: quick-format-unescaped@4.0.4: {} + r-json@1.3.0: + dependencies: + w-json: 1.3.10 + + r-package-json@1.0.9: + dependencies: + package-json-path: 1.0.9 + r-json: 1.3.0 + radix3@1.1.2: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -8645,6 +9594,11 @@ snapshots: react@19.0.0-rc-66855b96-20241106: {} + read-all-stream@3.1.0: + dependencies: + pinkie-promise: 2.0.1 + readable-stream: 2.3.8 + read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -8675,6 +9629,15 @@ snapshots: regenerator-runtime@0.14.1: {} + registry-auth-token@3.4.0: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + require-directory@2.1.1: {} require-main-filename@2.0.0: {} @@ -8740,10 +9703,18 @@ snapshots: safe-stable-stringify@2.5.0: {} + safer-buffer@2.1.2: + optional: true + + sax@1.4.1: + optional: true + scheduler@0.25.0-rc-66855b96-20241106: {} secure-json-parse@2.7.0: {} + semver@5.7.2: {} + semver@6.3.1: {} semver@7.6.3: {} @@ -8816,6 +9787,8 @@ snapshots: is-arrayish: 0.3.2 optional: true + sliced@1.0.1: {} + socket.io-client@4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 @@ -8840,10 +9813,33 @@ snapshots: source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + optional: true + + source-map@0.6.1: + optional: true + source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + split-on-first@1.1.0: {} split2@4.2.0: {} @@ -8914,6 +9910,10 @@ snapshots: strip-final-newline@3.0.0: {} + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + strip-json-comments@2.0.1: {} style-value-types@5.0.0: @@ -9047,6 +10047,14 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + terser@5.37.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + optional: true + text-encoding-utf-8@1.0.2: {} thenify-all@1.6.0: @@ -9067,6 +10075,8 @@ snapshots: tiktoken@1.0.17: {} + timed-out@3.1.3: {} + tinybench@2.9.0: {} tinyexec@0.3.1: {} @@ -9084,6 +10094,10 @@ snapshots: tinyspy@3.0.2: {} + tmp@0.0.28: + dependencies: + os-tmpdir: 1.0.2 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -9108,6 +10122,8 @@ snapshots: tree-kill@1.2.2: {} + treeify@1.1.0: {} + ts-interface-checker@0.1.13: {} ts-node@10.9.2(@types/node@20.17.9)(typescript@5.6.3): @@ -9213,12 +10229,21 @@ snapshots: typescript@5.6.3: {} + typpy@2.3.13: + dependencies: + function.name: 1.0.13 + ufo@1.5.4: {} uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 + ul@5.2.15: + dependencies: + deffy: 2.2.4 + typpy: 2.3.13 + uncrypto@0.1.3: {} undici-types@5.26.5: {} @@ -9256,6 +10281,8 @@ snapshots: consola: 3.2.3 pathe: 1.1.2 + unzip-response@1.0.2: {} + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -9264,6 +10291,10 @@ snapshots: uqr@0.1.2: {} + url-parse-lax@1.0.0: + dependencies: + prepend-http: 1.0.4 + use-sync-external-store@1.2.0(react@19.0.0-rc-66855b96-20241106): dependencies: react: 19.0.0-rc-66855b96-20241106 @@ -9276,6 +10307,8 @@ snapshots: dependencies: node-gyp-build: 4.8.4 + utf8@3.0.0: {} + util-deprecate@1.0.2: {} util@0.12.5: @@ -9296,6 +10329,11 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + valtio@1.11.2(@types/react@18.3.12)(react@19.0.0-rc-66855b96-20241106): dependencies: proxy-compare: 2.5.1 @@ -9322,13 +10360,13 @@ snapshots: - utf-8-validate - zod - vite-node@2.1.5(@types/node@22.9.1): + vite-node@2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.3.7(supports-color@5.5.0) es-module-lexer: 1.5.4 pathe: 1.1.2 - vite: 5.4.11(@types/node@22.9.1) + vite: 5.4.11(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -9340,7 +10378,7 @@ snapshots: - supports-color - terser - vite@5.4.11(@types/node@22.9.1): + vite@5.4.11(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0): dependencies: esbuild: 0.21.5 postcss: 8.4.49 @@ -9348,11 +10386,14 @@ snapshots: optionalDependencies: '@types/node': 22.9.1 fsevents: 2.3.3 + less: 4.2.1 + lightningcss: 1.22.1 + terser: 5.37.0 - vitest@2.1.5(@types/node@22.9.1): + vitest@2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0): dependencies: '@vitest/expect': 2.1.5 - '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.1)) + '@vitest/mocker': 2.1.5(vite@5.4.11(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0)) '@vitest/pretty-format': 2.1.5 '@vitest/runner': 2.1.5 '@vitest/snapshot': 2.1.5 @@ -9368,8 +10409,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.2 tinyrainbow: 1.2.0 - vite: 5.4.11(@types/node@22.9.1) - vite-node: 2.1.5(@types/node@22.9.1) + vite: 5.4.11(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) + vite-node: 2.1.5(@types/node@22.9.1)(less@4.2.1)(lightningcss@1.22.1)(terser@5.37.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.9.1 @@ -9394,6 +10435,8 @@ snapshots: optionalDependencies: typescript: 5.6.3 + w-json@1.3.10: {} + wagmi@2.13.3(@tanstack/query-core@5.62.2)(@tanstack/react-query@5.62.2(react@19.0.0-rc-66855b96-20241106))(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0-rc-66855b96-20241106)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): dependencies: '@tanstack/react-query': 5.62.2(react@19.0.0-rc-66855b96-20241106) @@ -9429,6 +10472,17 @@ snapshots: web-streams-polyfill@4.0.0-beta.3: {} + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + 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 + webauthn-p256@0.0.10: dependencies: '@noble/curves': 1.6.0 From b13268b0fdea752fad0ffa32cf58d7a98098da91 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 13:05:40 -0500 Subject: [PATCH 02/15] changes --- typescript/packages/core/src/index.ts | 102 +++++++++--------- .../packages/core/src/plugins/send-nft.ts | 1 - .../packages/core/src/wallets/solana.ts | 3 +- .../wallets/crossmint/src/custodial.ts | 1 + .../packages/wallets/solana/src/index.ts | 1 + typescript/pnpm-lock.yaml | 34 +++--- 6 files changed, 75 insertions(+), 67 deletions(-) diff --git a/typescript/packages/core/src/index.ts b/typescript/packages/core/src/index.ts index 903aebae6..0235ec694 100644 --- a/typescript/packages/core/src/index.ts +++ b/typescript/packages/core/src/index.ts @@ -1,62 +1,60 @@ import type { Plugin } from "./plugins/plugins"; import { sendETH } from "./plugins/send-eth"; -import { transferNFT } from "./plugins/send-nft"; import { sendSOL } from "./plugins/send-sol"; import { - type GetToolsParams, - type Tool, - getTools, - type DeferredTool, - getDeferredTools, - type GetDeferredToolsParams, + type GetToolsParams, + type Tool, + getTools, + type DeferredTool, + getDeferredTools, + type GetDeferredToolsParams, } from "./tools"; -import { addParametersToDescription, parametersToJsonExample } from "./utils"; +import { addParametersToDescription, parametersToJsonExample} from "./utils"; import type { - Balance, - Chain, - EVMReadRequest, - EVMSmartWalletClient, - EVMTransaction, - EVMTypedData, - EVMWalletClient, - Signature, - SolanaReadRequest, - SolanaTransaction, - SolanaWalletClient, - WalletClient, - isEVMSmartWalletClient, - isEVMWalletClient, - isSolanaWalletClient, - ChainForWalletClient, + Balance, + Chain, + EVMReadRequest, + EVMSmartWalletClient, + EVMTransaction, + EVMTypedData, + EVMWalletClient, + Signature, + SolanaReadRequest, + SolanaTransaction, + SolanaWalletClient, + WalletClient, + isEVMSmartWalletClient, + isEVMWalletClient, + isSolanaWalletClient, + ChainForWalletClient } from "./wallets"; export { - getTools, - getDeferredTools, - sendETH, - sendSOL, - transferNFT, - addParametersToDescription, - parametersToJsonExample, - type Tool, - type DeferredTool, - type GetToolsParams, - type GetDeferredToolsParams, - type Plugin, - type WalletClient, - type EVMTransaction, - type EVMReadRequest, - type EVMWalletClient, - type EVMSmartWalletClient, - type SolanaTransaction, - type SolanaReadRequest, - type SolanaWalletClient, - type Signature, - type Balance, - type EVMTypedData, - type isEVMWalletClient, - type isEVMSmartWalletClient, - type isSolanaWalletClient, - type Chain, - type ChainForWalletClient, + getTools, + getDeferredTools, + sendETH, + sendSOL, + addParametersToDescription, + parametersToJsonExample, + type Tool, + type DeferredTool, + type GetToolsParams, + type GetDeferredToolsParams, + type Plugin, + type WalletClient, + type EVMTransaction, + type EVMReadRequest, + type EVMWalletClient, + type EVMSmartWalletClient, + type SolanaTransaction, + type SolanaReadRequest, + type SolanaWalletClient, + type Signature, + type Balance, + type EVMTypedData, + type isEVMWalletClient, + type isEVMSmartWalletClient, + type isSolanaWalletClient, + type Chain, + type ChainForWalletClient, }; diff --git a/typescript/packages/core/src/plugins/send-nft.ts b/typescript/packages/core/src/plugins/send-nft.ts index a903a0f4f..581b57091 100644 --- a/typescript/packages/core/src/plugins/send-nft.ts +++ b/typescript/packages/core/src/plugins/send-nft.ts @@ -49,7 +49,6 @@ async function transferNFTMethod( "confirmed", ); const umi = createUmi(connection); - console.log({ assetId, recipientAddress, walletClient }); umi.use(mplBubblegum()); const assetWithProof = await getAssetWithProof( umi, diff --git a/typescript/packages/core/src/wallets/solana.ts b/typescript/packages/core/src/wallets/solana.ts index 4232321e0..aed857aab 100644 --- a/typescript/packages/core/src/wallets/solana.ts +++ b/typescript/packages/core/src/wallets/solana.ts @@ -1,4 +1,4 @@ -import type { TransactionInstruction } from "@solana/web3.js"; +import type { Connection, TransactionInstruction } from "@solana/web3.js"; import type { WalletClient } from "./core"; export function isSolanaWalletClient( @@ -28,4 +28,5 @@ export interface SolanaWalletClient extends WalletClient { transaction: SolanaTransaction, ) => Promise; read: (request: SolanaReadRequest) => Promise; + connection: Connection; } diff --git a/typescript/packages/wallets/crossmint/src/custodial.ts b/typescript/packages/wallets/crossmint/src/custodial.ts index 595813591..406495907 100644 --- a/typescript/packages/wallets/crossmint/src/custodial.ts +++ b/typescript/packages/wallets/crossmint/src/custodial.ts @@ -58,6 +58,7 @@ export function custodialFactory(apiKey: string) { const { address } = await client.getWallet(locator); return { + connection, getAddress() { return address; }, diff --git a/typescript/packages/wallets/solana/src/index.ts b/typescript/packages/wallets/solana/src/index.ts index c6fa107b8..b2b6c8e96 100644 --- a/typescript/packages/wallets/solana/src/index.ts +++ b/typescript/packages/wallets/solana/src/index.ts @@ -24,6 +24,7 @@ export function solana({ keypair, }: SolanaWalletOptions): SolanaWalletClient { return { + connection, getAddress: () => keypair.publicKey.toBase58(), getChain() { return { diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index 3217b99b2..e3a2096ca 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -160,16 +160,16 @@ importers: version: 1.0.4(zod@3.23.8) '@goat-sdk/adapter-vercel-ai': specifier: 0.1.4 - version: 0.1.4(@goat-sdk/core@packages+core)(ai@4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8)) + version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(ai@4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8)) '@goat-sdk/core': - specifier: workspace:* - version: link:../../../packages/core + specifier: 0.3.8 + version: 0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) '@goat-sdk/crossmint': - specifier: workspace:* - version: link:../../../packages/wallets/crossmint + specifier: 0.1.4 + version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) '@goat-sdk/plugin-erc20': - specifier: workspace:* - version: link:../../../packages/plugins/erc20 + specifier: 0.1.4 + version: 0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8)) '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -6012,12 +6012,6 @@ snapshots: ai: 4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8) zod: 3.23.8 - '@goat-sdk/adapter-vercel-ai@0.1.4(@goat-sdk/core@packages+core)(ai@4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8))': - dependencies: - '@goat-sdk/core': link:packages/core - ai: 4.0.3(react@19.0.0-rc-66855b96-20241106)(zod@3.23.8) - zod: 3.23.8 - '@goat-sdk/core@0.3.10(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -6068,6 +6062,20 @@ snapshots: - typescript - utf-8-validate + '@goat-sdk/crossmint@0.1.4(@goat-sdk/core@0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)': + dependencies: + '@goat-sdk/core': 0.3.8(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) + abitype: 1.0.6(typescript@5.6.3)(zod@3.23.8) + bs58: 6.0.0 + viem: 2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: 3.23.8 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + '@goat-sdk/plugin-erc20@0.1.4(@goat-sdk/core@0.3.5(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10))(viem@2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))': dependencies: '@goat-sdk/core': 0.3.5(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10) From d0581133348a770f9d4a10946be032b7b57992e9 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 13:07:47 -0500 Subject: [PATCH 03/15] changes --- typescript/packages/core/src/plugins/send-nft.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/typescript/packages/core/src/plugins/send-nft.ts b/typescript/packages/core/src/plugins/send-nft.ts index 581b57091..df88a0232 100644 --- a/typescript/packages/core/src/plugins/send-nft.ts +++ b/typescript/packages/core/src/plugins/send-nft.ts @@ -44,11 +44,7 @@ async function transferNFTMethod( parameters: z.infer, ): Promise { const { recipientAddress, assetId } = parameters; - const connection = new Connection( - "https://api.devnet.solana.com", - "confirmed", - ); - const umi = createUmi(connection); + const umi = createUmi(walletClient.connection); umi.use(mplBubblegum()); const assetWithProof = await getAssetWithProof( umi, From f5ceaf9168f322bbaa65fccc647de351a8b3e9ea Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 14:55:52 -0500 Subject: [PATCH 04/15] changes --- typescript/packages/core/src/index.ts | 100 +++++++++--------- .../packages/core/src/plugins/send-sol.ts | 55 ---------- .../plugins/{send-nft.ts => solana/nfts.ts} | 12 +-- .../core/src/plugins/solana/send-sol.ts | 56 ++++++++++ 4 files changed, 111 insertions(+), 112 deletions(-) delete mode 100644 typescript/packages/core/src/plugins/send-sol.ts rename typescript/packages/core/src/plugins/{send-nft.ts => solana/nfts.ts} (83%) create mode 100644 typescript/packages/core/src/plugins/solana/send-sol.ts diff --git a/typescript/packages/core/src/index.ts b/typescript/packages/core/src/index.ts index af19de99b..6c2729bfa 100644 --- a/typescript/packages/core/src/index.ts +++ b/typescript/packages/core/src/index.ts @@ -1,60 +1,60 @@ import type { Plugin } from "./plugins/plugins"; import { sendETH } from "./plugins/send-eth"; -import { sendSOL } from "./plugins/send-sol"; +import { sendSOL } from "./plugins/solana/send-sol"; import { - type DeferredTool, - type GetDeferredToolsParams, - type GetToolsParams, - type Tool, - getDeferredTools, - getTools, + type DeferredTool, + type GetDeferredToolsParams, + type GetToolsParams, + type Tool, + getDeferredTools, + getTools, } from "./tools"; import { addParametersToDescription, parametersToJsonExample } from "./utils"; import type { - Balance, - Chain, - ChainForWalletClient, - EVMReadRequest, - EVMSmartWalletClient, - EVMTransaction, - EVMTypedData, - EVMWalletClient, - Signature, - SolanaReadRequest, - SolanaTransaction, - SolanaWalletClient, - WalletClient, - isEVMSmartWalletClient, - isEVMWalletClient, - isSolanaWalletClient, + Balance, + Chain, + ChainForWalletClient, + EVMReadRequest, + EVMSmartWalletClient, + EVMTransaction, + EVMTypedData, + EVMWalletClient, + Signature, + SolanaReadRequest, + SolanaTransaction, + SolanaWalletClient, + WalletClient, + isEVMSmartWalletClient, + isEVMWalletClient, + isSolanaWalletClient, } from "./wallets"; export { - getTools, - getDeferredTools, - sendETH, - sendSOL, - addParametersToDescription, - parametersToJsonExample, - type Tool, - type DeferredTool, - type GetToolsParams, - type GetDeferredToolsParams, - type Plugin, - type WalletClient, - type EVMTransaction, - type EVMReadRequest, - type EVMWalletClient, - type EVMSmartWalletClient, - type SolanaTransaction, - type SolanaReadRequest, - type SolanaWalletClient, - type Signature, - type Balance, - type EVMTypedData, - type isEVMWalletClient, - type isEVMSmartWalletClient, - type isSolanaWalletClient, - type Chain, - type ChainForWalletClient, + getTools, + getDeferredTools, + sendETH, + sendSOL, + addParametersToDescription, + parametersToJsonExample, + type Tool, + type DeferredTool, + type GetToolsParams, + type GetDeferredToolsParams, + type Plugin, + type WalletClient, + type EVMTransaction, + type EVMReadRequest, + type EVMWalletClient, + type EVMSmartWalletClient, + type SolanaTransaction, + type SolanaReadRequest, + type SolanaWalletClient, + type Signature, + type Balance, + type EVMTypedData, + type isEVMWalletClient, + type isEVMSmartWalletClient, + type isSolanaWalletClient, + type Chain, + type ChainForWalletClient, }; diff --git a/typescript/packages/core/src/plugins/send-sol.ts b/typescript/packages/core/src/plugins/send-sol.ts deleted file mode 100644 index 4d9de23ed..000000000 --- a/typescript/packages/core/src/plugins/send-sol.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SystemProgram } from "@solana/web3.js"; -import { parseUnits } from "viem"; -import { z } from "zod"; -import type { SolanaWalletClient } from "../wallets"; -import type { Plugin } from "./plugins"; - -export function sendSOL(): Plugin { - return { - name: "send_sol", - supportsSmartWallets: () => true, - supportsChain: (chain) => chain.type === "solana", - getTools: async () => { - return [ - { - name: "send_sol", - description: "This {{tool}} sends SOL to an address on a Solana chain.", - parameters: sendSOLParametersSchema, - method: sendSOLMethod, - }, - ]; - }, - }; -} - -const sendSOLParametersSchema = z.object({ - to: z.string().describe("The address to send SOL to"), - amount: z.string().describe("The amount of SOL to send"), -}); - -async function sendSOLMethod( - walletClient: SolanaWalletClient, - parameters: z.infer, -): Promise { - try { - const { to, amount } = parameters; - - const senderAddress = walletClient.getAddress(); - const lamports = parseUnits(amount, 9); - - const transferInstruction = SystemProgram.transfer({ - fromPubkey: new PublicKey(senderAddress), - toPubkey: new PublicKey(to), - lamports, - }); - - const txResult = await walletClient.sendTransaction({ - instructions: [transferInstruction], - }); - - return txResult.hash; - } catch (error) { - throw new Error(`Failed to send SOL: ${error}`); - } -} diff --git a/typescript/packages/core/src/plugins/send-nft.ts b/typescript/packages/core/src/plugins/solana/nfts.ts similarity index 83% rename from typescript/packages/core/src/plugins/send-nft.ts rename to typescript/packages/core/src/plugins/solana/nfts.ts index df88a0232..4eea943bb 100644 --- a/typescript/packages/core/src/plugins/send-nft.ts +++ b/typescript/packages/core/src/plugins/solana/nfts.ts @@ -1,9 +1,7 @@ -import { Connection, PublicKey } from "@solana/web3.js"; -import { parseUnits } from "viem"; -import type { SolanaWalletClient } from "../wallets"; -import type { Plugin } from "./plugins"; +import { PublicKey } from "@solana/web3.js"; +import type { SolanaWalletClient } from "../../wallets"; +import type { Plugin } from "../plugins"; import { z } from "zod"; -import { SystemProgram } from "@solana/web3.js"; import { mplBubblegum, getAssetWithProof, @@ -15,9 +13,9 @@ import { toWeb3JsInstruction, } from "@metaplex-foundation/umi-web3js-adapters"; -export function transferNFT(): Plugin { +export function nfts(): Plugin { return { - name: "transfer_nft", + name: "nft_actions", supportsSmartWallets: () => true, supportsChain: (chain) => chain.type === "solana", getTools: async () => { diff --git a/typescript/packages/core/src/plugins/solana/send-sol.ts b/typescript/packages/core/src/plugins/solana/send-sol.ts new file mode 100644 index 000000000..351a567c7 --- /dev/null +++ b/typescript/packages/core/src/plugins/solana/send-sol.ts @@ -0,0 +1,56 @@ +import { PublicKey } from "@solana/web3.js"; +import { SystemProgram } from "@solana/web3.js"; +import { parseUnits } from "viem"; +import { z } from "zod"; +import type { SolanaWalletClient } from "../../wallets"; +import type { Plugin } from "../plugins"; + +export function sendSOL(): Plugin { + return { + name: "send_sol", + supportsSmartWallets: () => true, + supportsChain: (chain) => chain.type === "solana", + getTools: async () => { + return [ + { + name: "send_sol", + description: + "This {{tool}} sends SOL to an address on a Solana chain.", + parameters: sendSOLParametersSchema, + method: sendSOLMethod, + }, + ]; + }, + }; +} + +const sendSOLParametersSchema = z.object({ + to: z.string().describe("The address to send SOL to"), + amount: z.string().describe("The amount of SOL to send"), +}); + +async function sendSOLMethod( + walletClient: SolanaWalletClient, + parameters: z.infer, +): Promise { + try { + const { to, amount } = parameters; + + const senderAddress = walletClient.getAddress(); + const lamports = parseUnits(amount, 9); + + const transferInstruction = SystemProgram.transfer({ + fromPubkey: new PublicKey(senderAddress), + toPubkey: new PublicKey(to), + lamports, + }); + + const txResult = await walletClient.sendTransaction({ + instructions: [transferInstruction], + }); + + return txResult.hash; + } catch (error) { + throw new Error(`Failed to send SOL: ${error}`); + } +} From 614b5f667ad9024711d1c3d1adc57649a7d4a8bd Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 14:59:13 -0500 Subject: [PATCH 05/15] changes --- .../wallets/crossmint/src/custodial.ts | 227 ++++++++---------- 1 file changed, 97 insertions(+), 130 deletions(-) diff --git a/typescript/packages/wallets/crossmint/src/custodial.ts b/typescript/packages/wallets/crossmint/src/custodial.ts index 7631b50b5..cbe896f8d 100644 --- a/typescript/packages/wallets/crossmint/src/custodial.ts +++ b/typescript/packages/wallets/crossmint/src/custodial.ts @@ -1,4 +1,3 @@ -<<<<<<< HEAD import type { SolanaReadRequest, SolanaTransaction, @@ -6,57 +5,54 @@ import type { } from "@goat-sdk/core"; import { type Connection, + PublicKey, TransactionMessage, VersionedTransaction, - PublicKey, } from "@solana/web3.js"; -======= -import type { SolanaReadRequest, SolanaTransaction, SolanaWalletClient } from "@goat-sdk/core"; -import { type Connection, PublicKey, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; ->>>>>>> origin/main import bs58 from "bs58"; import { createCrossmintAPI } from "./api"; type CommonParameters = { - chain: "solana"; - connection: Connection; - env?: "staging" | "production"; + chain: "solana"; + connection: Connection; + env?: "staging" | "production"; }; type EmailLocatorParameters = CommonParameters & { - email: string; + email: string; }; type PhoneLocatorParameters = CommonParameters & { - phone: string; + phone: string; }; type UserIdLocatorParameters = CommonParameters & { - userId: number; + userId: number; }; type AddressLocatorParameters = CommonParameters & { - address: string; + address: string; }; type CustodialOptions = - | EmailLocatorParameters - | PhoneLocatorParameters - | UserIdLocatorParameters - | AddressLocatorParameters; + | EmailLocatorParameters + | PhoneLocatorParameters + | UserIdLocatorParameters + | AddressLocatorParameters; function getLocator(params: CustodialOptions): string | number { - if ("address" in params) return params.address; - if ("email" in params) return `email:${params.email}`; - if ("phone" in params) return `phone:${params.phone}`; - return `userId:${params.userId}`; + if ("address" in params) return params.address; + if ("email" in params) return `email:${params.email}`; + if ("phone" in params) return `phone:${params.phone}`; + return `userId:${params.userId}`; } export function custodialFactory(apiKey: string) { - return async function custodial(params: CustodialOptions): Promise { - const { connection, env = "staging" } = params; + return async function custodial( + params: CustodialOptions, + ): Promise { + const { connection, env = "staging" } = params; -<<<<<<< HEAD const locator = `${getLocator(params)}`; const client = createCrossmintAPI(apiKey, env); const { address } = await client.getWallet(locator); @@ -77,43 +73,27 @@ export function custodialFactory(apiKey: string) { locator, message, ); -======= - const locator = `${getLocator(params)}:solana-custodial-wallet`; - const client = createCrossmintAPI(apiKey, env); - const { address } = await client.getWallet(locator); - - return { - getAddress() { - return address; - }, - getChain() { - return { - type: "solana", - }; - }, - async signMessage(message: string) { - try { - const { id } = await client.signMessageForCustodialWallet(locator, message); ->>>>>>> origin/main - - while (true) { - const latestSignature = await client.checkSignatureStatus(id, address); - - if (latestSignature.status === "success") { - if (!latestSignature.outputSignature) { - throw new Error("Signature is undefined"); - } - - return { - signature: latestSignature.outputSignature, - }; - } - - if (latestSignature.status === "failed") { - throw new Error("Signature failed"); - } - -<<<<<<< HEAD + + while (true) { + const latestSignature = await client.checkSignatureStatus( + id, + address, + ); + + if (latestSignature.status === "success") { + if (!latestSignature.outputSignature) { + throw new Error("Signature is undefined"); + } + + return { + signature: latestSignature.outputSignature, + }; + } + + if (latestSignature.status === "failed") { + throw new Error("Signature failed"); + } + await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds } } catch (error) { @@ -135,73 +115,60 @@ export function custodialFactory(apiKey: string) { const encodedVersionedTransaction = bs58.encode( serializedVersionedTransaction, ); -======= - await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds - } - } catch (error) { - throw new Error(`Failed to sign message: ${error}`); - } - }, - async sendTransaction({ instructions }: SolanaTransaction) { - const latestBlockhash = await connection.getLatestBlockhash("confirmed"); - const message = new TransactionMessage({ - // Placeholder payer key since Crossmint will override it - payerKey: new PublicKey("placeholder"), - recentBlockhash: latestBlockhash.blockhash, - instructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(message); - const serializedVersionedTransaction = transaction.serialize(); - const encodedVersionedTransaction = bs58.encode(serializedVersionedTransaction); ->>>>>>> origin/main - - const { id: transactionId } = await client.createTransactionForCustodialWallet( - locator, - encodedVersionedTransaction, - ); - - while (true) { - const latestTransaction = await client.checkTransactionStatus(locator, transactionId); - - if (latestTransaction.status === "success") { - console.log(`Transaction ${latestTransaction.status}`); - return { - hash: latestTransaction.onChain?.txId ?? "", - }; - } - - if (latestTransaction.status === "failed") { - throw new Error(`Transaction failed: ${latestTransaction.onChain?.txId}`); - } - - await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds - } - }, - async read(request: SolanaReadRequest) { - const { accountAddress } = request; - - const pubkey = new PublicKey(accountAddress); - const accountInfo = await connection.getAccountInfo(pubkey); - - if (!accountInfo) { - throw new Error(`Account ${accountAddress} not found`); - } - - return { - value: accountInfo, - }; - }, - async balanceOf(address: string) { - const pubkey = new PublicKey(address); - const balance = await connection.getBalance(pubkey); - - return { - value: BigInt(balance), - decimals: 9, - symbol: "SOL", - name: "Solana", - }; - }, - }; - }; + + const { id: transactionId } = + await client.createTransactionForCustodialWallet( + locator, + encodedVersionedTransaction, + ); + + while (true) { + const latestTransaction = await client.checkTransactionStatus( + locator, + transactionId, + ); + + if (latestTransaction.status === "success") { + console.log(`Transaction ${latestTransaction.status}`); + return { + hash: latestTransaction.onChain?.txId ?? "", + }; + } + + if (latestTransaction.status === "failed") { + throw new Error( + `Transaction failed: ${latestTransaction.onChain?.txId}`, + ); + } + + await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds + } + }, + async read(request: SolanaReadRequest) { + const { accountAddress } = request; + + const pubkey = new PublicKey(accountAddress); + const accountInfo = await connection.getAccountInfo(pubkey); + + if (!accountInfo) { + throw new Error(`Account ${accountAddress} not found`); + } + + return { + value: accountInfo, + }; + }, + async balanceOf(address: string) { + const pubkey = new PublicKey(address); + const balance = await connection.getBalance(pubkey); + + return { + value: BigInt(balance), + decimals: 9, + symbol: "SOL", + name: "Solana", + }; + }, + }; + }; } From e1b3f942de4ab6c65dd57408f1ea7a11c57ebf1a Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 15:07:05 -0500 Subject: [PATCH 06/15] fix formatter --- biome.json | 1 + typescript/biome.json | 60 ++-- typescript/packages/core/package.json | 62 ++-- typescript/packages/core/src/index.ts | 98 +++---- .../packages/core/src/plugins/solana/nfts.ts | 79 +++-- .../core/src/plugins/solana/send-sol.ts | 71 +++-- .../packages/core/src/wallets/solana.ts | 22 +- .../wallets/crossmint/src/custodial.ts | 272 ++++++++---------- .../packages/wallets/solana/src/index.ts | 129 ++++----- 9 files changed, 370 insertions(+), 424 deletions(-) create mode 120000 biome.json diff --git a/biome.json b/biome.json new file mode 120000 index 000000000..7dc38c129 --- /dev/null +++ b/biome.json @@ -0,0 +1 @@ +typescript/biome.json \ No newline at end of file diff --git a/typescript/biome.json b/typescript/biome.json index 94fe88458..a2fb4239b 100644 --- a/typescript/biome.json +++ b/typescript/biome.json @@ -1,32 +1,32 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "vcs": { - "enabled": false, - "clientKind": "git", - "useIgnoreFile": false - }, - "files": { - "ignoreUnknown": false, - "ignore": ["dist/**/*"] - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 4, - "lineWidth": 120 - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - }, - "javascript": { - "formatter": { - "quoteStyle": "double" - } - } + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "vcs": { + "enabled": false, + "clientKind": "git", + "useIgnoreFile": false + }, + "files": { + "ignoreUnknown": false, + "ignore": ["dist/**/*"] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 4, + "lineWidth": 120 + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double" + } + } } diff --git a/typescript/packages/core/package.json b/typescript/packages/core/package.json index 2b11e52f0..cad5d8e42 100644 --- a/typescript/packages/core/package.json +++ b/typescript/packages/core/package.json @@ -1,33 +1,33 @@ { - "name": "@goat-sdk/core", - "version": "0.3.10", - "sideEffects": false, - "files": ["dist/**/*", "README.md", "package.json"], - "scripts": { - "build": "tsup", - "clean": "rm -rf dist", - "test": "vitest run --passWithNoTests" - }, - "main": "./dist/index.js", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "dependencies": { - "@metaplex-foundation/mpl-bubblegum": "^4.2.1", - "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", - "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", - "@solana/web3.js": "1.95.8", - "abitype": "^1.0.6", - "viem": "^2.21.49", - "zod": "^3.23.8" - }, - "homepage": "https://ohmygoat.dev", - "repository": { - "type": "git", - "url": "git+https://github.com/goat-sdk/goat.git" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/goat-sdk/goat/issues" - }, - "keywords": ["ai", "agents", "web3"] + "name": "@goat-sdk/core", + "version": "0.3.10", + "sideEffects": false, + "files": ["dist/**/*", "README.md", "package.json"], + "scripts": { + "build": "tsup", + "clean": "rm -rf dist", + "test": "vitest run --passWithNoTests" + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "dependencies": { + "@metaplex-foundation/mpl-bubblegum": "^4.2.1", + "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", + "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", + "@solana/web3.js": "1.95.8", + "abitype": "^1.0.6", + "viem": "^2.21.49", + "zod": "^3.23.8" + }, + "homepage": "https://ohmygoat.dev", + "repository": { + "type": "git", + "url": "git+https://github.com/goat-sdk/goat.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/goat-sdk/goat/issues" + }, + "keywords": ["ai", "agents", "web3"] } diff --git a/typescript/packages/core/src/index.ts b/typescript/packages/core/src/index.ts index 6c2729bfa..3319c81d6 100644 --- a/typescript/packages/core/src/index.ts +++ b/typescript/packages/core/src/index.ts @@ -2,59 +2,59 @@ import type { Plugin } from "./plugins/plugins"; import { sendETH } from "./plugins/send-eth"; import { sendSOL } from "./plugins/solana/send-sol"; import { - type DeferredTool, - type GetDeferredToolsParams, - type GetToolsParams, - type Tool, - getDeferredTools, - getTools, + type DeferredTool, + type GetDeferredToolsParams, + type GetToolsParams, + type Tool, + getDeferredTools, + getTools, } from "./tools"; import { addParametersToDescription, parametersToJsonExample } from "./utils"; import type { - Balance, - Chain, - ChainForWalletClient, - EVMReadRequest, - EVMSmartWalletClient, - EVMTransaction, - EVMTypedData, - EVMWalletClient, - Signature, - SolanaReadRequest, - SolanaTransaction, - SolanaWalletClient, - WalletClient, - isEVMSmartWalletClient, - isEVMWalletClient, - isSolanaWalletClient, + Balance, + Chain, + ChainForWalletClient, + EVMReadRequest, + EVMSmartWalletClient, + EVMTransaction, + EVMTypedData, + EVMWalletClient, + Signature, + SolanaReadRequest, + SolanaTransaction, + SolanaWalletClient, + WalletClient, + isEVMSmartWalletClient, + isEVMWalletClient, + isSolanaWalletClient, } from "./wallets"; export { - getTools, - getDeferredTools, - sendETH, - sendSOL, - addParametersToDescription, - parametersToJsonExample, - type Tool, - type DeferredTool, - type GetToolsParams, - type GetDeferredToolsParams, - type Plugin, - type WalletClient, - type EVMTransaction, - type EVMReadRequest, - type EVMWalletClient, - type EVMSmartWalletClient, - type SolanaTransaction, - type SolanaReadRequest, - type SolanaWalletClient, - type Signature, - type Balance, - type EVMTypedData, - type isEVMWalletClient, - type isEVMSmartWalletClient, - type isSolanaWalletClient, - type Chain, - type ChainForWalletClient, + getTools, + getDeferredTools, + sendETH, + sendSOL, + addParametersToDescription, + parametersToJsonExample, + type Tool, + type DeferredTool, + type GetToolsParams, + type GetDeferredToolsParams, + type Plugin, + type WalletClient, + type EVMTransaction, + type EVMReadRequest, + type EVMWalletClient, + type EVMSmartWalletClient, + type SolanaTransaction, + type SolanaReadRequest, + type SolanaWalletClient, + type Signature, + type Balance, + type EVMTypedData, + type isEVMWalletClient, + type isEVMSmartWalletClient, + type isSolanaWalletClient, + type Chain, + type ChainForWalletClient, }; diff --git a/typescript/packages/core/src/plugins/solana/nfts.ts b/typescript/packages/core/src/plugins/solana/nfts.ts index 4eea943bb..dfdb4cb75 100644 --- a/typescript/packages/core/src/plugins/solana/nfts.ts +++ b/typescript/packages/core/src/plugins/solana/nfts.ts @@ -2,61 +2,50 @@ import { PublicKey } from "@solana/web3.js"; import type { SolanaWalletClient } from "../../wallets"; import type { Plugin } from "../plugins"; import { z } from "zod"; -import { - mplBubblegum, - getAssetWithProof, - transfer, -} from "@metaplex-foundation/mpl-bubblegum"; +import { mplBubblegum, getAssetWithProof, transfer } from "@metaplex-foundation/mpl-bubblegum"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; -import { - fromWeb3JsPublicKey, - toWeb3JsInstruction, -} from "@metaplex-foundation/umi-web3js-adapters"; +import { fromWeb3JsPublicKey, toWeb3JsInstruction } from "@metaplex-foundation/umi-web3js-adapters"; export function nfts(): Plugin { - return { - name: "nft_actions", - supportsSmartWallets: () => true, - supportsChain: (chain) => chain.type === "solana", - getTools: async () => { - return [ - { - name: "transfer_nft", - description: - "This {{tool}} sends an NFT from your wallet to an address on a Solana chain.", - parameters: transferNFTParametersSchema, - method: transferNFTMethod, - }, - ]; - }, - }; + return { + name: "nft_actions", + supportsSmartWallets: () => true, + supportsChain: (chain) => chain.type === "solana", + getTools: async () => { + return [ + { + name: "transfer_nft", + description: "This {{tool}} sends an NFT from your wallet to an address on a Solana chain.", + parameters: transferNFTParametersSchema, + method: transferNFTMethod, + }, + ]; + }, + }; } const transferNFTParametersSchema = z.object({ - recipientAddress: z.string().describe("The address to send the NFT to"), - assetId: z.string().describe("The asset ID of the NFT to send"), + recipientAddress: z.string().describe("The address to send the NFT to"), + assetId: z.string().describe("The asset ID of the NFT to send"), }); async function transferNFTMethod( - walletClient: SolanaWalletClient, - parameters: z.infer, + walletClient: SolanaWalletClient, + parameters: z.infer, ): Promise { - const { recipientAddress, assetId } = parameters; - const umi = createUmi(walletClient.connection); - umi.use(mplBubblegum()); - const assetWithProof = await getAssetWithProof( - umi, - fromWeb3JsPublicKey(new PublicKey(assetId)), - ); - const instructions = transfer(umi, { - ...assetWithProof, - leafOwner: fromWeb3JsPublicKey(new PublicKey(walletClient.getAddress())), - newLeafOwner: fromWeb3JsPublicKey(new PublicKey(recipientAddress)), - }).getInstructions(); + const { recipientAddress, assetId } = parameters; + const umi = createUmi(walletClient.connection); + umi.use(mplBubblegum()); + const assetWithProof = await getAssetWithProof(umi, fromWeb3JsPublicKey(new PublicKey(assetId))); + const instructions = transfer(umi, { + ...assetWithProof, + leafOwner: fromWeb3JsPublicKey(new PublicKey(walletClient.getAddress())), + newLeafOwner: fromWeb3JsPublicKey(new PublicKey(recipientAddress)), + }).getInstructions(); - const result = await walletClient.sendTransaction({ - instructions: instructions.map(toWeb3JsInstruction), - }); + const result = await walletClient.sendTransaction({ + instructions: instructions.map(toWeb3JsInstruction), + }); - return result.hash; + return result.hash; } diff --git a/typescript/packages/core/src/plugins/solana/send-sol.ts b/typescript/packages/core/src/plugins/solana/send-sol.ts index 351a567c7..1e3e0ebf0 100644 --- a/typescript/packages/core/src/plugins/solana/send-sol.ts +++ b/typescript/packages/core/src/plugins/solana/send-sol.ts @@ -6,51 +6,50 @@ import type { SolanaWalletClient } from "../../wallets"; import type { Plugin } from "../plugins"; export function sendSOL(): Plugin { - return { - name: "send_sol", - supportsSmartWallets: () => true, - supportsChain: (chain) => chain.type === "solana", - getTools: async () => { - return [ - { - name: "send_sol", - description: - "This {{tool}} sends SOL to an address on a Solana chain.", - parameters: sendSOLParametersSchema, - method: sendSOLMethod, - }, - ]; - }, - }; + return { + name: "send_sol", + supportsSmartWallets: () => true, + supportsChain: (chain) => chain.type === "solana", + getTools: async () => { + return [ + { + name: "send_sol", + description: "This {{tool}} sends SOL to an address on a Solana chain.", + parameters: sendSOLParametersSchema, + method: sendSOLMethod, + }, + ]; + }, + }; } const sendSOLParametersSchema = z.object({ - to: z.string().describe("The address to send SOL to"), - amount: z.string().describe("The amount of SOL to send"), + to: z.string().describe("The address to send SOL to"), + amount: z.string().describe("The amount of SOL to send"), }); async function sendSOLMethod( - walletClient: SolanaWalletClient, - parameters: z.infer, + walletClient: SolanaWalletClient, + parameters: z.infer, ): Promise { - try { - const { to, amount } = parameters; + try { + const { to, amount } = parameters; - const senderAddress = walletClient.getAddress(); - const lamports = parseUnits(amount, 9); + const senderAddress = walletClient.getAddress(); + const lamports = parseUnits(amount, 9); - const transferInstruction = SystemProgram.transfer({ - fromPubkey: new PublicKey(senderAddress), - toPubkey: new PublicKey(to), - lamports, - }); + const transferInstruction = SystemProgram.transfer({ + fromPubkey: new PublicKey(senderAddress), + toPubkey: new PublicKey(to), + lamports, + }); - const txResult = await walletClient.sendTransaction({ - instructions: [transferInstruction], - }); + const txResult = await walletClient.sendTransaction({ + instructions: [transferInstruction], + }); - return txResult.hash; - } catch (error) { - throw new Error(`Failed to send SOL: ${error}`); - } + return txResult.hash; + } catch (error) { + throw new Error(`Failed to send SOL: ${error}`); + } } diff --git a/typescript/packages/core/src/wallets/solana.ts b/typescript/packages/core/src/wallets/solana.ts index aed857aab..13443ec31 100644 --- a/typescript/packages/core/src/wallets/solana.ts +++ b/typescript/packages/core/src/wallets/solana.ts @@ -1,32 +1,28 @@ import type { Connection, TransactionInstruction } from "@solana/web3.js"; import type { WalletClient } from "./core"; -export function isSolanaWalletClient( - wallet: WalletClient, -): wallet is SolanaWalletClient { - return wallet.getChain().type === "solana"; +export function isSolanaWalletClient(wallet: WalletClient): wallet is SolanaWalletClient { + return wallet.getChain().type === "solana"; } export type SolanaTransaction = { - instructions: TransactionInstruction[]; + instructions: TransactionInstruction[]; }; export type SolanaReadRequest = { - accountAddress: string; + accountAddress: string; }; export type SolanaReadResult = { - value: unknown; + value: unknown; }; export type SolanaTransactionResult = { - hash: string; + hash: string; }; export interface SolanaWalletClient extends WalletClient { - sendTransaction: ( - transaction: SolanaTransaction, - ) => Promise; - read: (request: SolanaReadRequest) => Promise; - connection: Connection; + sendTransaction: (transaction: SolanaTransaction) => Promise; + read: (request: SolanaReadRequest) => Promise; + connection: Connection; } diff --git a/typescript/packages/wallets/crossmint/src/custodial.ts b/typescript/packages/wallets/crossmint/src/custodial.ts index cbe896f8d..84b489da0 100644 --- a/typescript/packages/wallets/crossmint/src/custodial.ts +++ b/typescript/packages/wallets/crossmint/src/custodial.ts @@ -1,174 +1,148 @@ -import type { - SolanaReadRequest, - SolanaTransaction, - SolanaWalletClient, -} from "@goat-sdk/core"; -import { - type Connection, - PublicKey, - TransactionMessage, - VersionedTransaction, -} from "@solana/web3.js"; +import type { SolanaReadRequest, SolanaTransaction, SolanaWalletClient } from "@goat-sdk/core"; +import { type Connection, PublicKey, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; import bs58 from "bs58"; import { createCrossmintAPI } from "./api"; type CommonParameters = { - chain: "solana"; - connection: Connection; - env?: "staging" | "production"; + chain: "solana"; + connection: Connection; + env?: "staging" | "production"; }; type EmailLocatorParameters = CommonParameters & { - email: string; + email: string; }; type PhoneLocatorParameters = CommonParameters & { - phone: string; + phone: string; }; type UserIdLocatorParameters = CommonParameters & { - userId: number; + userId: number; }; type AddressLocatorParameters = CommonParameters & { - address: string; + address: string; }; type CustodialOptions = - | EmailLocatorParameters - | PhoneLocatorParameters - | UserIdLocatorParameters - | AddressLocatorParameters; + | EmailLocatorParameters + | PhoneLocatorParameters + | UserIdLocatorParameters + | AddressLocatorParameters; function getLocator(params: CustodialOptions): string | number { - if ("address" in params) return params.address; - if ("email" in params) return `email:${params.email}`; - if ("phone" in params) return `phone:${params.phone}`; - return `userId:${params.userId}`; + if ("address" in params) return params.address; + if ("email" in params) return `email:${params.email}`; + if ("phone" in params) return `phone:${params.phone}`; + return `userId:${params.userId}`; } export function custodialFactory(apiKey: string) { - return async function custodial( - params: CustodialOptions, - ): Promise { - const { connection, env = "staging" } = params; - - const locator = `${getLocator(params)}`; - const client = createCrossmintAPI(apiKey, env); - const { address } = await client.getWallet(locator); - - return { - connection, - getAddress() { - return address; - }, - getChain() { - return { - type: "solana", - }; - }, - async signMessage(message: string) { - try { - const { id } = await client.signMessageForCustodialWallet( - locator, - message, - ); - - while (true) { - const latestSignature = await client.checkSignatureStatus( - id, - address, - ); - - if (latestSignature.status === "success") { - if (!latestSignature.outputSignature) { - throw new Error("Signature is undefined"); - } - - return { - signature: latestSignature.outputSignature, - }; - } - - if (latestSignature.status === "failed") { - throw new Error("Signature failed"); - } - - await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds - } - } catch (error) { - throw new Error(`Failed to sign message: ${error}`); - } - }, - async sendTransaction({ instructions }: SolanaTransaction) { - const latestBlockhash = - await connection.getLatestBlockhash("confirmed"); - // see https://linear.app/crossmint/issue/WAL-3436/solana-transactions-get-stuck-when-sending-the-dummy-value - const publicKey = new PublicKey("11111111111111111111111111111112"); - const message = new TransactionMessage({ - payerKey: publicKey, - recentBlockhash: latestBlockhash.blockhash, - instructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(message); - const serializedVersionedTransaction = transaction.serialize(); - const encodedVersionedTransaction = bs58.encode( - serializedVersionedTransaction, - ); - - const { id: transactionId } = - await client.createTransactionForCustodialWallet( - locator, - encodedVersionedTransaction, - ); - - while (true) { - const latestTransaction = await client.checkTransactionStatus( - locator, - transactionId, - ); - - if (latestTransaction.status === "success") { - console.log(`Transaction ${latestTransaction.status}`); - return { - hash: latestTransaction.onChain?.txId ?? "", - }; - } - - if (latestTransaction.status === "failed") { - throw new Error( - `Transaction failed: ${latestTransaction.onChain?.txId}`, - ); - } - - await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds - } - }, - async read(request: SolanaReadRequest) { - const { accountAddress } = request; - - const pubkey = new PublicKey(accountAddress); - const accountInfo = await connection.getAccountInfo(pubkey); - - if (!accountInfo) { - throw new Error(`Account ${accountAddress} not found`); - } - - return { - value: accountInfo, - }; - }, - async balanceOf(address: string) { - const pubkey = new PublicKey(address); - const balance = await connection.getBalance(pubkey); - - return { - value: BigInt(balance), - decimals: 9, - symbol: "SOL", - name: "Solana", - }; - }, - }; - }; + return async function custodial(params: CustodialOptions): Promise { + const { connection, env = "staging" } = params; + + const locator = `${getLocator(params)}`; + const client = createCrossmintAPI(apiKey, env); + const { address } = await client.getWallet(locator); + + return { + connection, + getAddress() { + return address; + }, + getChain() { + return { + type: "solana", + }; + }, + async signMessage(message: string) { + try { + const { id } = await client.signMessageForCustodialWallet(locator, message); + + while (true) { + const latestSignature = await client.checkSignatureStatus(id, address); + + if (latestSignature.status === "success") { + if (!latestSignature.outputSignature) { + throw new Error("Signature is undefined"); + } + + return { + signature: latestSignature.outputSignature, + }; + } + + if (latestSignature.status === "failed") { + throw new Error("Signature failed"); + } + + await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds + } + } catch (error) { + throw new Error(`Failed to sign message: ${error}`); + } + }, + async sendTransaction({ instructions }: SolanaTransaction) { + const latestBlockhash = await connection.getLatestBlockhash("confirmed"); + // see https://linear.app/crossmint/issue/WAL-3436/solana-transactions-get-stuck-when-sending-the-dummy-value + const publicKey = new PublicKey("11111111111111111111111111111112"); + const message = new TransactionMessage({ + payerKey: publicKey, + recentBlockhash: latestBlockhash.blockhash, + instructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(message); + const serializedVersionedTransaction = transaction.serialize(); + const encodedVersionedTransaction = bs58.encode(serializedVersionedTransaction); + + const { id: transactionId } = await client.createTransactionForCustodialWallet( + locator, + encodedVersionedTransaction, + ); + + while (true) { + const latestTransaction = await client.checkTransactionStatus(locator, transactionId); + + if (latestTransaction.status === "success") { + console.log(`Transaction ${latestTransaction.status}`); + return { + hash: latestTransaction.onChain?.txId ?? "", + }; + } + + if (latestTransaction.status === "failed") { + throw new Error(`Transaction failed: ${latestTransaction.onChain?.txId}`); + } + + await new Promise((resolve) => setTimeout(resolve, 3000)); // Wait 3 seconds + } + }, + async read(request: SolanaReadRequest) { + const { accountAddress } = request; + + const pubkey = new PublicKey(accountAddress); + const accountInfo = await connection.getAccountInfo(pubkey); + + if (!accountInfo) { + throw new Error(`Account ${accountAddress} not found`); + } + + return { + value: accountInfo, + }; + }, + async balanceOf(address: string) { + const pubkey = new PublicKey(address); + const balance = await connection.getBalance(pubkey); + + return { + value: BigInt(balance), + decimals: 9, + symbol: "SOL", + name: "Solana", + }; + }, + }; + }; } diff --git a/typescript/packages/wallets/solana/src/index.ts b/typescript/packages/wallets/solana/src/index.ts index b2b6c8e96..f20372165 100644 --- a/typescript/packages/wallets/solana/src/index.ts +++ b/typescript/packages/wallets/solana/src/index.ts @@ -1,86 +1,73 @@ -import type { - SolanaReadRequest, - SolanaTransaction, - SolanaWalletClient, -} from "@goat-sdk/core"; +import type { SolanaReadRequest, SolanaTransaction, SolanaWalletClient } from "@goat-sdk/core"; -import { - type Connection, - type Keypair, - PublicKey, - TransactionMessage, - VersionedTransaction, -} from "@solana/web3.js"; +import { type Connection, type Keypair, PublicKey, TransactionMessage, VersionedTransaction } from "@solana/web3.js"; import nacl from "tweetnacl"; export type SolanaWalletOptions = { - keypair: Keypair; - connection: Connection; + keypair: Keypair; + connection: Connection; }; -export function solana({ - connection, - keypair, -}: SolanaWalletOptions): SolanaWalletClient { - return { - connection, - getAddress: () => keypair.publicKey.toBase58(), - getChain() { - return { - type: "solana", - }; - }, - async signMessage(message: string) { - const messageBytes = Buffer.from(message); - const signature = nacl.sign.detached(messageBytes, keypair.secretKey); - return { - signature: Buffer.from(signature).toString("hex"), - }; - }, - async sendTransaction({ instructions }: SolanaTransaction) { - const latestBlockhash = await connection.getLatestBlockhash("confirmed"); - const message = new TransactionMessage({ - payerKey: keypair.publicKey, - recentBlockhash: latestBlockhash.blockhash, - instructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(message); +export function solana({ connection, keypair }: SolanaWalletOptions): SolanaWalletClient { + return { + connection, + getAddress: () => keypair.publicKey.toBase58(), + getChain() { + return { + type: "solana", + }; + }, + async signMessage(message: string) { + const messageBytes = Buffer.from(message); + const signature = nacl.sign.detached(messageBytes, keypair.secretKey); + return { + signature: Buffer.from(signature).toString("hex"), + }; + }, + async sendTransaction({ instructions }: SolanaTransaction) { + const latestBlockhash = await connection.getLatestBlockhash("confirmed"); + const message = new TransactionMessage({ + payerKey: keypair.publicKey, + recentBlockhash: latestBlockhash.blockhash, + instructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(message); - transaction.sign([keypair]); + transaction.sign([keypair]); - const txid = await connection.sendTransaction(transaction, { - maxRetries: 5, - }); + const txid = await connection.sendTransaction(transaction, { + maxRetries: 5, + }); - return { - hash: txid, - }; - }, - async read(request: SolanaReadRequest) { - const { accountAddress } = request; + return { + hash: txid, + }; + }, + async read(request: SolanaReadRequest) { + const { accountAddress } = request; - const pubkey = new PublicKey(accountAddress); - const accountInfo = await connection.getAccountInfo(pubkey); + const pubkey = new PublicKey(accountAddress); + const accountInfo = await connection.getAccountInfo(pubkey); - if (!accountInfo) { - throw new Error(`Account ${accountAddress} not found`); - } + if (!accountInfo) { + throw new Error(`Account ${accountAddress} not found`); + } - return { - value: accountInfo, - }; - }, - async balanceOf(address: string) { - const pubkey = new PublicKey(address); - const balance = await connection.getBalance(pubkey); + return { + value: accountInfo, + }; + }, + async balanceOf(address: string) { + const pubkey = new PublicKey(address); + const balance = await connection.getBalance(pubkey); - return { - decimals: 9, - symbol: "SOL", - name: "Solana", - value: BigInt(balance), - }; - }, - }; + return { + decimals: 9, + symbol: "SOL", + name: "Solana", + value: BigInt(balance), + }; + }, + }; } From 10f27dbf3975b2f90d70cb7731437dbab0bdba12 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 15:08:00 -0500 Subject: [PATCH 07/15] more diff fixing --- typescript/biome.json | 60 ++++++++--------- .../packages/wallets/crossmint/package.json | 66 +++++++++---------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/typescript/biome.json b/typescript/biome.json index a2fb4239b..94fe88458 100644 --- a/typescript/biome.json +++ b/typescript/biome.json @@ -1,32 +1,32 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "vcs": { - "enabled": false, - "clientKind": "git", - "useIgnoreFile": false - }, - "files": { - "ignoreUnknown": false, - "ignore": ["dist/**/*"] - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 4, - "lineWidth": 120 - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - }, - "javascript": { - "formatter": { - "quoteStyle": "double" - } - } + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "vcs": { + "enabled": false, + "clientKind": "git", + "useIgnoreFile": false + }, + "files": { + "ignoreUnknown": false, + "ignore": ["dist/**/*"] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 4, + "lineWidth": 120 + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double" + } + } } diff --git a/typescript/packages/wallets/crossmint/package.json b/typescript/packages/wallets/crossmint/package.json index d4ebbd7fd..0c35e7619 100644 --- a/typescript/packages/wallets/crossmint/package.json +++ b/typescript/packages/wallets/crossmint/package.json @@ -1,35 +1,35 @@ { - "name": "@goat-sdk/crossmint", - "version": "0.1.5", - "sideEffects": false, - "files": ["dist/**/*", "README.md", "package.json"], - "scripts": { - "build": "tsup", - "clean": "rm -rf dist", - "test": "vitest run --passWithNoTests" - }, - "main": "./dist/index.js", - "module": "./dist/index.mjs", - "types": "./dist/index.d.ts", - "dependencies": { - "@goat-sdk/core": "workspace:*", - "@solana/web3.js": "1.95.8", - "abitype": "^1.0.6", - "bs58": "^6.0.0", - "viem": "^2.21.49", - "zod": "^3.23.8" - }, - "peerDependencies": { - "@goat-sdk/core": "workspace:*" - }, - "homepage": "https://ohmygoat.dev", - "repository": { - "type": "git", - "url": "git+https://github.com/goat-sdk/goat.git" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/goat-sdk/goat/issues" - }, - "keywords": ["ai", "agents", "web3"] + "name": "@goat-sdk/crossmint", + "version": "0.1.5", + "sideEffects": false, + "files": ["dist/**/*", "README.md", "package.json"], + "scripts": { + "build": "tsup", + "clean": "rm -rf dist", + "test": "vitest run --passWithNoTests" + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "dependencies": { + "@goat-sdk/core": "workspace:*", + "@solana/web3.js": "1.95.8", + "abitype": "^1.0.6", + "bs58": "^6.0.0", + "viem": "^2.21.49", + "zod": "^3.23.8" + }, + "peerDependencies": { + "@goat-sdk/core": "workspace:*" + }, + "homepage": "https://ohmygoat.dev", + "repository": { + "type": "git", + "url": "git+https://github.com/goat-sdk/goat.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/goat-sdk/goat/issues" + }, + "keywords": ["ai", "agents", "web3"] } From 6424cf7df0d5d7bc3103c986ecef70c0fb6ee4d3 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 15:31:37 -0500 Subject: [PATCH 08/15] changes --- typescript/packages/wallets/crossmint/src/custodial.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/typescript/packages/wallets/crossmint/src/custodial.ts b/typescript/packages/wallets/crossmint/src/custodial.ts index 84b489da0..15367da3c 100644 --- a/typescript/packages/wallets/crossmint/src/custodial.ts +++ b/typescript/packages/wallets/crossmint/src/custodial.ts @@ -84,12 +84,10 @@ export function custodialFactory(apiKey: string) { } }, async sendTransaction({ instructions }: SolanaTransaction) { - const latestBlockhash = await connection.getLatestBlockhash("confirmed"); - // see https://linear.app/crossmint/issue/WAL-3436/solana-transactions-get-stuck-when-sending-the-dummy-value const publicKey = new PublicKey("11111111111111111111111111111112"); const message = new TransactionMessage({ payerKey: publicKey, - recentBlockhash: latestBlockhash.blockhash, + recentBlockhash: "11111111111111111111111111111111", instructions, }).compileToV0Message(); const transaction = new VersionedTransaction(message); From d5095363fce4dce4eba52bb61aac07d3d9087d3c Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Fri, 6 Dec 2024 16:03:59 -0500 Subject: [PATCH 09/15] changes --- typescript/packages/core/src/plugins/solana/nfts.ts | 2 +- typescript/pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/packages/core/src/plugins/solana/nfts.ts b/typescript/packages/core/src/plugins/solana/nfts.ts index dfdb4cb75..e5a577224 100644 --- a/typescript/packages/core/src/plugins/solana/nfts.ts +++ b/typescript/packages/core/src/plugins/solana/nfts.ts @@ -9,7 +9,7 @@ import { fromWeb3JsPublicKey, toWeb3JsInstruction } from "@metaplex-foundation/u export function nfts(): Plugin { return { name: "nft_actions", - supportsSmartWallets: () => true, + supportsSmartWallets: () => false, supportsChain: (chain) => chain.type === "solana", getTools: async () => { return [ diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index 7f6d23c54..3644a3161 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -3123,7 +3123,7 @@ packages: got@5.7.1: resolution: {integrity: sha512-1qd54GLxvVgzuidFmw9ze9umxS3rzhdBH6Wt6BTYrTQUXTN01vGGYXwzLzYLowNx8HBH3/c7kRyvx90fh13i7Q==} - engines: {node: '>=0.10.0 <7'} + engines: {node: '>=0.10.0'} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} From 2f98acbac4822eca12dfc9a3adb06bb463423051 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Sat, 7 Dec 2024 01:43:41 -0500 Subject: [PATCH 10/15] temp example --- .../crossmint-solana-custodial-wallets/index.ts | 9 ++++++--- .../crossmint-solana-custodial-wallets/package.json | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts index 7bbc35b4b..4855eb267 100644 --- a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts +++ b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts @@ -4,6 +4,7 @@ import { generateText } from "ai"; import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; import { crossmint } from "@goat-sdk/crossmint"; import { Connection } from "@solana/web3.js"; +import { nfts } from "@goat-sdk/plugin-solana-actions"; require("dotenv").config(); @@ -15,22 +16,24 @@ if (!apiKey || !email) { } const { custodial } = crossmint(apiKey); +const connection = new Connection("https://api.devnet.solana.com", "confirmed"); (async () => { const tools = await getOnChainTools({ wallet: await custodial({ chain: "solana", - email: email, + address: "3q1PB3Yde3wUnJ45RLrAhCg3W1n9HEC8Jd9NkfuhRGS1", env: "staging", - connection: new Connection("https://api.devnet.solana.com", "confirmed"), + connection, }), + plugins: [nfts(connection)], }); const result = await generateText({ model: openai("gpt-4o-mini"), tools: tools, maxSteps: 5, - prompt: "Get my balance in SOL", + prompt: "Transfer NFT with assetId 57hD2akP2FsEwnDMJn8CNS565p2dNUz8UKuQ5tUGEsh7 to the wallet CKkeuMRjRsM9zBNnFVRRYhQ3rg4uL4tPkaADNLgk2omb", }); console.log(result.text); diff --git a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json index 3d4efb4b3..fe03066c7 100644 --- a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json +++ b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json @@ -7,6 +7,7 @@ "create-wallet": "ts-node create-custodial-wallet.ts", "test": "vitest run --passWithNoTests" }, + "main": "index.ts", "author": "", "license": "MIT", "dependencies": { @@ -15,6 +16,7 @@ "@goat-sdk/core": "workspace:*", "@goat-sdk/plugin-erc20": "workspace:*", "@goat-sdk/crossmint": "workspace:*", + "@goat-sdk/plugin-solana-actions": "workspace:*", "@solana/web3.js": "1.95.8", "ai": "^4.0.3", "dotenv": "^16.4.5", From 328bcd6910ee0da4b897b1be6024664a8e200196 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Sat, 7 Dec 2024 01:43:58 -0500 Subject: [PATCH 11/15] changes --- typescript/packages/core/package.json | 15 +- typescript/packages/core/src/index.ts | 2 +- .../core/src/plugins/{solana => }/send-sol.ts | 4 +- .../packages/core/src/plugins/solana/nfts.ts | 51 -- .../packages/core/src/wallets/solana.ts | 1 - .../packages/plugins/solana/package.json | 46 ++ .../packages/plugins/solana/src/index.ts | 1 + .../packages/plugins/solana/src/nfts.ts | 52 ++ .../packages/plugins/solana/tsconfig.json | 6 + .../packages/plugins/solana/tsup.config.ts | 6 + .../wallets/crossmint/src/custodial.ts | 1 - .../packages/wallets/solana/src/index.ts | 1 - typescript/pnpm-lock.yaml | 535 ++---------------- 13 files changed, 185 insertions(+), 536 deletions(-) rename typescript/packages/core/src/plugins/{solana => }/send-sol.ts (94%) delete mode 100644 typescript/packages/core/src/plugins/solana/nfts.ts create mode 100644 typescript/packages/plugins/solana/package.json create mode 100644 typescript/packages/plugins/solana/src/index.ts create mode 100644 typescript/packages/plugins/solana/src/nfts.ts create mode 100644 typescript/packages/plugins/solana/tsconfig.json create mode 100644 typescript/packages/plugins/solana/tsup.config.ts diff --git a/typescript/packages/core/package.json b/typescript/packages/core/package.json index cad5d8e42..6dd31cbec 100644 --- a/typescript/packages/core/package.json +++ b/typescript/packages/core/package.json @@ -2,7 +2,11 @@ "name": "@goat-sdk/core", "version": "0.3.10", "sideEffects": false, - "files": ["dist/**/*", "README.md", "package.json"], + "files": [ + "dist/**/*", + "README.md", + "package.json" + ], "scripts": { "build": "tsup", "clean": "rm -rf dist", @@ -12,9 +16,6 @@ "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "dependencies": { - "@metaplex-foundation/mpl-bubblegum": "^4.2.1", - "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", - "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", "@solana/web3.js": "1.95.8", "abitype": "^1.0.6", "viem": "^2.21.49", @@ -29,5 +30,9 @@ "bugs": { "url": "https://github.com/goat-sdk/goat/issues" }, - "keywords": ["ai", "agents", "web3"] + "keywords": [ + "ai", + "agents", + "web3" + ] } diff --git a/typescript/packages/core/src/index.ts b/typescript/packages/core/src/index.ts index 3319c81d6..af19de99b 100644 --- a/typescript/packages/core/src/index.ts +++ b/typescript/packages/core/src/index.ts @@ -1,6 +1,6 @@ import type { Plugin } from "./plugins/plugins"; import { sendETH } from "./plugins/send-eth"; -import { sendSOL } from "./plugins/solana/send-sol"; +import { sendSOL } from "./plugins/send-sol"; import { type DeferredTool, type GetDeferredToolsParams, diff --git a/typescript/packages/core/src/plugins/solana/send-sol.ts b/typescript/packages/core/src/plugins/send-sol.ts similarity index 94% rename from typescript/packages/core/src/plugins/solana/send-sol.ts rename to typescript/packages/core/src/plugins/send-sol.ts index 1e3e0ebf0..4d9de23ed 100644 --- a/typescript/packages/core/src/plugins/solana/send-sol.ts +++ b/typescript/packages/core/src/plugins/send-sol.ts @@ -2,8 +2,8 @@ import { PublicKey } from "@solana/web3.js"; import { SystemProgram } from "@solana/web3.js"; import { parseUnits } from "viem"; import { z } from "zod"; -import type { SolanaWalletClient } from "../../wallets"; -import type { Plugin } from "../plugins"; +import type { SolanaWalletClient } from "../wallets"; +import type { Plugin } from "./plugins"; export function sendSOL(): Plugin { return { diff --git a/typescript/packages/core/src/plugins/solana/nfts.ts b/typescript/packages/core/src/plugins/solana/nfts.ts deleted file mode 100644 index e5a577224..000000000 --- a/typescript/packages/core/src/plugins/solana/nfts.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import type { SolanaWalletClient } from "../../wallets"; -import type { Plugin } from "../plugins"; -import { z } from "zod"; -import { mplBubblegum, getAssetWithProof, transfer } from "@metaplex-foundation/mpl-bubblegum"; -import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; -import { fromWeb3JsPublicKey, toWeb3JsInstruction } from "@metaplex-foundation/umi-web3js-adapters"; - -export function nfts(): Plugin { - return { - name: "nft_actions", - supportsSmartWallets: () => false, - supportsChain: (chain) => chain.type === "solana", - getTools: async () => { - return [ - { - name: "transfer_nft", - description: "This {{tool}} sends an NFT from your wallet to an address on a Solana chain.", - parameters: transferNFTParametersSchema, - method: transferNFTMethod, - }, - ]; - }, - }; -} - -const transferNFTParametersSchema = z.object({ - recipientAddress: z.string().describe("The address to send the NFT to"), - assetId: z.string().describe("The asset ID of the NFT to send"), -}); - -async function transferNFTMethod( - walletClient: SolanaWalletClient, - parameters: z.infer, -): Promise { - const { recipientAddress, assetId } = parameters; - const umi = createUmi(walletClient.connection); - umi.use(mplBubblegum()); - const assetWithProof = await getAssetWithProof(umi, fromWeb3JsPublicKey(new PublicKey(assetId))); - const instructions = transfer(umi, { - ...assetWithProof, - leafOwner: fromWeb3JsPublicKey(new PublicKey(walletClient.getAddress())), - newLeafOwner: fromWeb3JsPublicKey(new PublicKey(recipientAddress)), - }).getInstructions(); - - const result = await walletClient.sendTransaction({ - instructions: instructions.map(toWeb3JsInstruction), - }); - - return result.hash; -} diff --git a/typescript/packages/core/src/wallets/solana.ts b/typescript/packages/core/src/wallets/solana.ts index 13443ec31..2b62eb957 100644 --- a/typescript/packages/core/src/wallets/solana.ts +++ b/typescript/packages/core/src/wallets/solana.ts @@ -24,5 +24,4 @@ export type SolanaTransactionResult = { export interface SolanaWalletClient extends WalletClient { sendTransaction: (transaction: SolanaTransaction) => Promise; read: (request: SolanaReadRequest) => Promise; - connection: Connection; } diff --git a/typescript/packages/plugins/solana/package.json b/typescript/packages/plugins/solana/package.json new file mode 100644 index 000000000..b71882f27 --- /dev/null +++ b/typescript/packages/plugins/solana/package.json @@ -0,0 +1,46 @@ +{ + "name": "@goat-sdk/plugin-solana-actions", + "version": "0.1.0", + "files": [ + "dist/**/*", + "README.md", + "package.json" + ], + "scripts": { + "build": "tsup", + "clean": "rm -rf dist", + "test": "vitest run --passWithNoTests" + }, + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "dependencies": { + "@goat-sdk/core": "workspace:*", + "@metaplex-foundation/digital-asset-standard-api": "1.0.2", + "@metaplex-foundation/mpl-bubblegum": "3.1.0", + "@metaplex-foundation/umi": "^0.9.2", + "@metaplex-foundation/umi-bundle-defaults": "0.9.2", + "@metaplex-foundation/umi-web3js-adapters": "0.8.10", + "viem": "^2.21.49", + "zod": "^3.23.8" + }, + "peerDependencies": { + "@goat-sdk/core": "workspace:*", + "viem": "^2.21.49" + }, + "homepage": "https://ohmygoat.dev", + "repository": { + "type": "git", + "url": "git+https://github.com/goat-sdk/goat.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/goat-sdk/goat/issues" + }, + "keywords": [ + "ai", + "agents", + "web3" + ] +} diff --git a/typescript/packages/plugins/solana/src/index.ts b/typescript/packages/plugins/solana/src/index.ts new file mode 100644 index 000000000..8e313598d --- /dev/null +++ b/typescript/packages/plugins/solana/src/index.ts @@ -0,0 +1 @@ +export * from "./nfts"; diff --git a/typescript/packages/plugins/solana/src/nfts.ts b/typescript/packages/plugins/solana/src/nfts.ts new file mode 100644 index 000000000..bd6a4c179 --- /dev/null +++ b/typescript/packages/plugins/solana/src/nfts.ts @@ -0,0 +1,52 @@ +import { type Connection, PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import type { Plugin, SolanaWalletClient } from "@goat-sdk/core"; +import { getAssetWithProof, mplBubblegum, transfer } from "@metaplex-foundation/mpl-bubblegum"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; +import { fromWeb3JsPublicKey, toWeb3JsInstruction } from "@metaplex-foundation/umi-web3js-adapters"; + +export function nfts(connection: Connection): Plugin { + return { + name: "nft_actions", + supportsSmartWallets: () => false, + supportsChain: (chain) => chain.type === "solana", + getTools: async () => { + return [ + { + name: "transfer_nft", + description: "This {{tool}} sends an NFT from your wallet to an address on a Solana chain.", + parameters: transferNFTParametersSchema, + method: transferNFTMethod(connection), + }, + ]; + }, + }; +} + +const transferNFTParametersSchema = z.object({ + recipientAddress: z.string().describe("The address to send the NFT to"), + assetId: z.string().describe("The asset ID of the NFT to send"), +}); + +const transferNFTMethod = + (connection: Connection) => + async ( + walletClient: SolanaWalletClient, + parameters: z.infer, + ): Promise => { + const { recipientAddress, assetId } = parameters; + const umi = createUmi(connection); + umi.use(mplBubblegum()); + const assetWithProof = await getAssetWithProof(umi, fromWeb3JsPublicKey(new PublicKey(assetId))); + const instructions = transfer(umi, { + ...assetWithProof, + leafOwner: fromWeb3JsPublicKey(new PublicKey(walletClient.getAddress())), + newLeafOwner: fromWeb3JsPublicKey(new PublicKey(recipientAddress)), + }).getInstructions(); + + const result = await walletClient.sendTransaction({ + instructions: instructions.map(toWeb3JsInstruction), + }); + + return result.hash; + }; diff --git a/typescript/packages/plugins/solana/tsconfig.json b/typescript/packages/plugins/solana/tsconfig.json new file mode 100644 index 000000000..b4ae67c1f --- /dev/null +++ b/typescript/packages/plugins/solana/tsconfig.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../../tsconfig.base.json", + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/typescript/packages/plugins/solana/tsup.config.ts b/typescript/packages/plugins/solana/tsup.config.ts new file mode 100644 index 000000000..2d38789ad --- /dev/null +++ b/typescript/packages/plugins/solana/tsup.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "tsup"; +import { treeShakableConfig } from "../../../tsup.config.base"; + +export default defineConfig({ + ...treeShakableConfig, +}); diff --git a/typescript/packages/wallets/crossmint/src/custodial.ts b/typescript/packages/wallets/crossmint/src/custodial.ts index 15367da3c..ab8cb4914 100644 --- a/typescript/packages/wallets/crossmint/src/custodial.ts +++ b/typescript/packages/wallets/crossmint/src/custodial.ts @@ -47,7 +47,6 @@ export function custodialFactory(apiKey: string) { const { address } = await client.getWallet(locator); return { - connection, getAddress() { return address; }, diff --git a/typescript/packages/wallets/solana/src/index.ts b/typescript/packages/wallets/solana/src/index.ts index f20372165..70d935287 100644 --- a/typescript/packages/wallets/solana/src/index.ts +++ b/typescript/packages/wallets/solana/src/index.ts @@ -11,7 +11,6 @@ export type SolanaWalletOptions = { export function solana({ connection, keypair }: SolanaWalletOptions): SolanaWalletClient { return { - connection, getAddress: () => keypair.publicKey.toBase58(), getChain() { return { diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index 3644a3161..f785c0815 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -195,6 +195,9 @@ importers: '@goat-sdk/plugin-erc20': specifier: workspace:* version: link:../../../packages/plugins/erc20 + '@goat-sdk/plugin-solana-actions': + specifier: workspace:* + version: link:../../../packages/plugins/solana '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -339,15 +342,6 @@ importers: packages/core: dependencies: - '@metaplex-foundation/mpl-bubblegum': - specifier: ^4.2.1 - version: 4.2.1(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/umi-bundle-defaults': - specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-web3js-adapters': - specifier: ^0.9.2 - version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -400,6 +394,33 @@ importers: specifier: ^3.23.8 version: 3.23.8 + packages/plugins/solana: + dependencies: + '@goat-sdk/core': + specifier: workspace:* + version: link:../../core + '@metaplex-foundation/digital-asset-standard-api': + specifier: 1.0.2 + version: 1.0.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-bubblegum': + specifier: 3.1.0 + version: 3.1.0(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/umi': + specifier: ^0.9.2 + version: 0.9.2 + '@metaplex-foundation/umi-bundle-defaults': + specifier: 0.9.2 + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-web3js-adapters': + specifier: 0.8.10 + version: 0.8.10(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + viem: + specifier: ^2.21.49 + version: 2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) + zod: + specifier: ^3.23.8 + version: 3.23.8 + packages/wallets/crossmint: dependencies: '@goat-sdk/core': @@ -1427,20 +1448,21 @@ packages: resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} - '@metaplex-foundation/digital-asset-standard-api@1.0.4': - resolution: {integrity: sha512-YSYyMnIoKNykDZTXsSCeiIOJ7NT5Ke2pzghXDsinRwHvwIZWv+zY5kJQBvTglAzYlt/GaI+noAhUZXXmSbp07A==} + '@metaplex-foundation/digital-asset-standard-api@1.0.2': + resolution: {integrity: sha512-aJ4PM3Xmvh6MlPYe9dymgdIgXC5c4MZD9wNnIJrG0bjknmJ2ajU3sYV9pi6QD8cNXlcoyb+hsg4lpSt4abA/Sg==} + deprecated: this package is broken peerDependencies: '@metaplex-foundation/umi': '>= 0.8.2 < 1' - '@metaplex-foundation/mpl-bubblegum@4.2.1': - resolution: {integrity: sha512-r9kHrVmkzJApbXwd7cmJyO0mAV3qsJaTjv5ks6PUT1Bzjj9QCvlJYg2UYQJLUTcrY5TjE9wXLpwUqNgllXH/Cw==} + '@metaplex-foundation/mpl-bubblegum@3.1.0': + resolution: {integrity: sha512-iwwOD723ISHjc5V8+aEWy8qujO11giwzqr0CCGai5efxowZKAkmlqZEWaq7o5F8DBVJZwwT33LYiO4RVBiHaxg==} peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.9 < 1' + '@metaplex-foundation/umi': ^0.8.9 - '@metaplex-foundation/mpl-token-metadata@3.2.1': - resolution: {integrity: sha512-26W1NhQwDWmLOg/pBRYut7x/vEs/5kFS2sWVEY5/X0f2jJOLhnd4NaZQcq+5u+XZsXvm1jq2AtrRGPNK43oqWQ==} + '@metaplex-foundation/mpl-token-metadata@3.0.0-alpha.27': + resolution: {integrity: sha512-MSERz5HB2XZ/K+FOMh0tPeqcZZEpGVzdy7e+Cy3MHg7x52JtbGBDtWIoxBJn1OBZayCBfX9gytEoqrXe2YRGqQ==} peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.2 < 1' + '@metaplex-foundation/umi': ^0.8.2 '@metaplex-foundation/mpl-toolbox@0.9.4': resolution: {integrity: sha512-fd6JxfoLbj/MM8FG2x91KYVy1U6AjBQw4qjt7+Da3trzQaWnSaYHDcYRG/53xqfvZ9qofY1T2t53GXPlD87lnQ==} @@ -1514,6 +1536,12 @@ packages: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + '@metaplex-foundation/umi-web3js-adapters@0.8.10': + resolution: {integrity: sha512-TGF+vzO/v0HMRM8sz1M1yh+wfZ5l4RCFm1Kkcy5MC9FrNDookPP6y9aYZ3R0QkEVVV3u+8QLptrTUrxr3EGmyQ==} + peerDependencies: + '@metaplex-foundation/umi': ^0.8.10 + '@solana/web3.js': ^1.72.0 + '@metaplex-foundation/umi-web3js-adapters@0.9.2': resolution: {integrity: sha512-RQqUTtHYY9fmEMnq7s3Hiv/81flGaoI0ZVVoafnFVaQLnxU6QBKxtboRZHk43XtD9CiFh5f9izrMJX7iK7KlOA==} peerDependencies: @@ -1980,9 +2008,6 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/keyv@3.1.4': - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -2013,9 +2038,6 @@ packages: '@types/react@18.3.12': resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} - '@types/responselike@1.0.3': - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} @@ -2217,9 +2239,6 @@ packages: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} - abs@1.3.14: - resolution: {integrity: sha512-PrS26IzwKLWwuURpiKl8wRmJ2KdR/azaVrLEBWG/TALwT20Y7qjtYp1qcMLHA4206hBHY5phv3w4pjf9NPv4Vw==} - acorn-typescript@1.4.13: resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} peerDependencies: @@ -2489,10 +2508,6 @@ packages: caniuse-lite@1.0.30001686: resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} - capture-stack-trace@1.0.2: - resolution: {integrity: sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==} - engines: {node: '>=0.10.0'} - chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -2607,10 +2622,6 @@ packages: engines: {node: '>=0.8'} hasBin: true - create-error-class@3.0.2: - resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} - engines: {node: '>=0.10.0'} - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -2690,9 +2701,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deffy@2.2.4: - resolution: {integrity: sha512-pLc9lsbsWjr6RxmJ2OLyvm+9l4j1yK69h+TML/gUit/t3vTijpkNGh8LioaJYTGO7F25m6HZndADcUOo2PsiUg==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2751,9 +2759,6 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - duplexify@4.1.3: resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} @@ -2800,16 +2805,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - err@1.1.1: - resolution: {integrity: sha512-N97Ybd2jJHVQ+Ft3Q5+C2gM3kgygkdeQmEqbN2z15UTVyyEsIwLA1VK39O1DHEJhXbwIFcJLqm6iARNhFANcQA==} - errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -2907,9 +2906,6 @@ packages: resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} engines: {node: '>=18.0.0'} - exec-limiter@3.2.13: - resolution: {integrity: sha512-86Ri699bwiHZVBzTzNj8gspqAhCPchg70zPVWIh3qzUOA1pUMcb272Em3LPk8AE0mS95B9yMJhtqF8vFJAn0dA==} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -3039,9 +3035,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.name@1.0.13: - resolution: {integrity: sha512-mVrqdoy5npWZyoXl4DxCeuVF6delDcQjVS9aPdvLYlBxtMTZDR2B5GVEQEoM1jJyspCqg3C0v4ABkLE7tp9xFA==} - gaxios@6.7.1: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} @@ -3069,18 +3062,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - git-package-json@1.4.10: - resolution: {integrity: sha512-DRAcvbzd2SxGK7w8OgYfvKqhFliT5keX0lmSmVdgScgf1kkl5tbbo7Pam6uYoCa1liOiipKxQZG8quCtGWl/fA==} - - git-source@1.1.10: - resolution: {integrity: sha512-XZZ7ZgnLL35oLgM/xjnLYgtlKlxJG0FohC1kWDvGkU7s1VKGXK0pFF/g1itQEwQ3D+uTQzBnzPi8XbqOv7Wc1Q==} - - git-up@1.2.1: - resolution: {integrity: sha512-SRVN3rOLACva8imc7BFrB6ts5iISWKH1/h/1Z+JZYoUI7UVQM7gQqk4M2yxUENbq2jUUT09NEND5xwP1i7Ktlw==} - - git-url-parse@5.0.1: - resolution: {integrity: sha512-4uSiOgrryNEMBX+gTWogenYRUh2j1D+95STTSEF2RCTgLkfJikl8c7BGr0Bn274hwuxTsbS2/FQ5pVS9FoXegQ==} - github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -3121,16 +3102,9 @@ packages: resolution: {integrity: sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==} engines: {node: '>= 0.4'} - got@5.7.1: - resolution: {integrity: sha512-1qd54GLxvVgzuidFmw9ze9umxS3rzhdBH6Wt6BTYrTQUXTN01vGGYXwzLzYLowNx8HBH3/c7kRyvx90fh13i7Q==} - engines: {node: '>=0.10.0'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gry@5.0.8: - resolution: {integrity: sha512-meq9ZjYVpLzZh3ojhTg7IMad9grGsx6rUUKHLqPnhLXzJkRQvEL2U3tQpS5/WentYTtHtxkT3Ew/mb10D6F6/g==} - gtoken@7.1.0: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} @@ -3173,9 +3147,6 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - http-shutdown@1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -3230,9 +3201,6 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -3282,24 +3250,9 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-redirect@1.0.0: - resolution: {integrity: sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==} - engines: {node: '>=0.10.0'} - is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} - is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} - engines: {node: '>=0.10.0'} - - is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3347,9 +3300,6 @@ packages: peerDependencies: ws: '*' - iterate-object@1.3.4: - resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -3567,9 +3517,6 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} - limit-it@3.2.10: - resolution: {integrity: sha512-T0NK99pHnkimldr1WUqvbGV1oWDku/xC9J/OqzJFsV1jeOS6Bwl8W7vkeQIBqwiON9dTALws+rX/XPMQqWerDQ==} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3612,10 +3559,6 @@ packages: loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} - lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3833,16 +3776,6 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-status-codes@1.0.0: - resolution: {integrity: sha512-1cBMgRxdMWE8KeWCqk2RIOrvUb0XCwYfEsY5/y2NlXyq4Y/RumnOZvTj4Nbr77+Vb2C+kyBoRTdkNOS8L3d/aQ==} - engines: {node: '>=0.10.0'} - - noop6@1.0.9: - resolution: {integrity: sha512-DB3Hwyd89dPr5HqEPg3YHjzvwh/mCqizC1zZ8vyofqc+TQRyPDnT4wgXXbLGF4z9YAzwwTLi8pNLhGqcbSjgkA==} - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3855,12 +3788,6 @@ packages: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} - oargv@3.4.10: - resolution: {integrity: sha512-SXaMANv9sr7S/dP0vj0+Ybipa47UE1ntTWQ2rpPRhC6Bsvfl+Jg03Xif7jfL0sWKOYWK8oPjcZ5eJ82t8AP/8g==} - - obj-def@1.0.9: - resolution: {integrity: sha512-bQ4ya3VYD6FAA1+s6mEhaURRHSmw4+sKaXE6UyXZ1XDYc5D+c7look25dFdydmLd18epUegh398gdDkMUZI9xg==} - obj-multiplex@1.0.0: resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} @@ -3893,9 +3820,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - one-by-one@3.2.8: - resolution: {integrity: sha512-HR/pSzZdm46Xqj58K+Bu64kMbSTw8/u77AwWvV+rprO/OsuR++pPlkUJn+SmwqBGRgHKwSKQ974V3uls7crIeQ==} - onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -3982,31 +3906,13 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-json-path@1.0.9: - resolution: {integrity: sha512-uNu7f6Ef7tQHZRnkyVnCtzdSYVN9uBtge/sG7wzcUaawFWkPYUq67iXxRGrQSg/q0tzxIB8jSyIYUKjG2Jn//A==} - - package-json@2.4.0: - resolution: {integrity: sha512-PRg65iXMTt/uK8Rfh5zvzkUbfAPitF17YaCY+IbHsYgksiLvtzWWTUildHth3mVaZ7871OJ7gtP4LBRBlmAdXg==} - engines: {node: '>=0.10.0'} - package-manager-detector@0.2.7: resolution: {integrity: sha512-g4+387DXDKlZzHkP+9FLt8yKj8+/3tOkPv7DVTJGGRm00RkEWgqbFstX1mXJ4M0VDYhUqsTOiISqNOJnhAu3PQ==} - package.json@2.0.1: - resolution: {integrity: sha512-pSxZ6XR5yEawRN2ekxx9IKgPN5uNAYco7MCPxtBEWMKO3UKWa1X2CtQMzMgloeGj2g2o6cue3Sb5iPkByIJqlw==} - deprecated: Use pkg.json instead. - - parse-json@2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse-url@1.3.11: - resolution: {integrity: sha512-1wj9nkgH/5EboDxLwaTMGJh3oH3f+Gue+aGdh631oCqoSBpokzmMmOldvOeBPtB8GJBYJbaF93KPzlkU+Y1ksg==} - partial-json@0.1.7: resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} @@ -4071,14 +3977,6 @@ packages: resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} engines: {node: '>=10'} - pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - - pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - pino-abstract-transport@0.5.0: resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} @@ -4182,10 +4080,6 @@ packages: engines: {node: '>=10'} hasBin: true - prepend-http@1.0.4: - resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} - engines: {node: '>=0.10.0'} - prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -4201,12 +4095,6 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - protocols@1.4.8: - resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==} - - protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} @@ -4235,12 +4123,6 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - r-json@1.3.0: - resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} - - r-package-json@1.0.9: - resolution: {integrity: sha512-G4Vpf1KImWmmPFGdtWQTU0L9zk0SjqEC4qs/jE7AQ+Ylmr5kizMzGeC4wnHp5+ijPqNN+2ZPpvyjVNdN1CDVcg==} - radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -4275,10 +4157,6 @@ packages: resolution: {integrity: sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg==} engines: {node: '>=0.10.0'} - read-all-stream@3.1.0: - resolution: {integrity: sha512-DI1drPHbmBcUDWrJ7ull/F2Qb8HkwBncVx8/RpKYFSIACYaVRQReISYPdZz/mt1y1+qMCOrfReTopERmaxtP6w==} - engines: {node: '>=0.10.0'} - read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -4308,13 +4186,6 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - registry-auth-token@3.4.0: - resolution: {integrity: sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==} - - registry-url@3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4433,9 +4304,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - sliced@1.0.1: - resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} - socket.io-client@4.8.1: resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} engines: {node: '>=10.0.0'} @@ -4465,18 +4333,6 @@ packages: spawndamnit@3.0.1: resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -4688,10 +4544,6 @@ packages: tiktoken@1.0.17: resolution: {integrity: sha512-UuFHqpy/DxOfNiC3otsqbx3oS6jr5uKdQhB/CvDEroZQbVHt+qAK+4JbIooabUWKU9g6PpsFylNu9Wcg4MxSGA==} - timed-out@3.1.3: - resolution: {integrity: sha512-3RB4qgvPkxF/FGPnrzaWLhW1rxNK2sdH0mFjbhxkfTR6QXvcM3EtYm9L44UrhODZrZ+yhDXeMncLqi8QXn2MJg==} - engines: {node: '>=0.10.0'} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -4719,10 +4571,6 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tmp@0.0.28: - resolution: {integrity: sha512-c2mmfiBmND6SOVxzogm1oda0OJ1HZVIk/5n26N59dDTh80MUeavpiCls4PGAdkX1PFkKokLpcf7prSjCeXLsJg==} - engines: {node: '>=0.4.0'} - tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -4835,18 +4683,12 @@ packages: engines: {node: '>=14.17'} hasBin: true - typpy@2.3.13: - resolution: {integrity: sha512-vOxIcQz9sxHi+rT09SJ5aDgVgrPppQjwnnayTrMye1ODaU8gIZTDM19t9TxmEElbMihx2Nq/0/b/MtyKfayRqA==} - ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} - ul@5.2.15: - resolution: {integrity: sha512-svLEUy8xSCip5IWnsRa0UOg+2zP0Wsj4qlbjTmX6GJSmvKMHADBuHOm1dpNkWqWPIGuVSqzUkV3Cris5JrlTRQ==} - uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -4915,10 +4757,6 @@ packages: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true - unzip-response@1.0.2: - resolution: {integrity: sha512-pwCcjjhEcpW45JZIySExBHYv5Y9EeL2OIGEfrSKp2dMUFGFv4CpvZkwJbVge8OvGH2BNNtJBx67DuKuJhf+N5Q==} - engines: {node: '>=0.10'} - update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -4928,10 +4766,6 @@ packages: uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - url-parse-lax@1.0.0: - resolution: {integrity: sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==} - engines: {node: '>=0.10.0'} - use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -4974,9 +4808,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - valtio@1.11.2: resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} @@ -5066,9 +4897,6 @@ packages: typescript: optional: true - w-json@1.3.10: - resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} - wagmi@2.13.3: resolution: {integrity: sha512-EBtrWUtmSpr7YYkPE1aokXiMn8EF+8kaNJAXtQ0UUSKlOLEbrsDtaiO3mEOOpFQtRXd2UUI2teMnIThCOk71kQ==} peerDependencies: @@ -6456,21 +6284,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@metaplex-foundation/digital-asset-standard-api@1.0.4(@metaplex-foundation/umi@0.9.2)': + '@metaplex-foundation/digital-asset-standard-api@1.0.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 - package.json: 2.0.1 - '@metaplex-foundation/mpl-bubblegum@4.2.1(@metaplex-foundation/umi@0.9.2)': + '@metaplex-foundation/mpl-bubblegum@3.1.0(@metaplex-foundation/umi@0.9.2)': dependencies: - '@metaplex-foundation/digital-asset-standard-api': 1.0.4(@metaplex-foundation/umi@0.9.2) - '@metaplex-foundation/mpl-token-metadata': 3.2.1(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/digital-asset-standard-api': 1.0.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/mpl-token-metadata': 3.0.0-alpha.27(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/umi': 0.9.2 '@noble/hashes': 1.5.0 merkletreejs: 0.3.11 - '@metaplex-foundation/mpl-token-metadata@3.2.1(@metaplex-foundation/umi@0.9.2)': + '@metaplex-foundation/mpl-token-metadata@3.0.0-alpha.27(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/umi': 0.9.2 @@ -6560,6 +6387,12 @@ snapshots: '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters@0.8.10(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) + buffer: 6.0.3 + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@metaplex-foundation/umi': 0.9.2 @@ -7031,7 +6864,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.7.4 + '@types/node': 22.9.1 '@types/debug@4.1.12': dependencies: @@ -7043,10 +6876,6 @@ snapshots: '@types/estree@1.0.6': {} - '@types/keyv@3.1.4': - dependencies: - '@types/node': 22.9.1 - '@types/ms@0.7.34': {} '@types/node-fetch@2.6.12': @@ -7081,10 +6910,6 @@ snapshots: '@types/prop-types': 15.7.13 csstype: 3.1.3 - '@types/responselike@1.0.3': - dependencies: - '@types/node': 22.9.1 - '@types/retry@0.12.0': {} '@types/sql.js@1.4.9': @@ -7100,11 +6925,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 22.7.4 + '@types/node': 22.9.1 '@types/ws@8.5.13': dependencies: - '@types/node': 22.7.4 + '@types/node': 22.9.1 '@vitest/expect@2.1.5': dependencies: @@ -7573,10 +7398,6 @@ snapshots: dependencies: event-target-shim: 5.0.1 - abs@1.3.14: - dependencies: - ul: 5.2.15 - acorn-typescript@1.4.13(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -7838,8 +7659,6 @@ snapshots: caniuse-lite@1.0.30001686: {} - capture-stack-trace@1.0.2: {} - chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -7960,10 +7779,6 @@ snapshots: crc-32@1.2.2: {} - create-error-class@3.0.2: - dependencies: - capture-stack-trace: 1.0.2 - create-require@1.1.1: {} cross-env@7.0.3: @@ -8032,10 +7847,6 @@ snapshots: deep-extend@0.6.0: {} - deffy@2.2.4: - dependencies: - typpy: 2.3.13 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 @@ -8074,10 +7885,6 @@ snapshots: dotenv@16.4.5: {} - duplexer2@0.1.4: - dependencies: - readable-stream: 2.3.8 - duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 @@ -8141,19 +7948,11 @@ snapshots: entities@4.5.0: {} - err@1.1.1: - dependencies: - typpy: 2.3.13 - errno@0.1.8: dependencies: prr: 1.0.1 optional: true - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -8295,11 +8094,6 @@ snapshots: eventsource-parser@3.0.0: {} - exec-limiter@3.2.13: - dependencies: - limit-it: 3.2.10 - typpy: 2.3.13 - execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -8441,10 +8235,6 @@ snapshots: function-bind@1.1.2: {} - function.name@1.0.13: - dependencies: - noop6: 1.0.9 - gaxios@6.7.1: dependencies: extend: 3.0.2 @@ -8480,31 +8270,6 @@ snapshots: get-stream@8.0.1: {} - git-package-json@1.4.10: - dependencies: - deffy: 2.2.4 - err: 1.1.1 - gry: 5.0.8 - normalize-package-data: 2.5.0 - oargv: 3.4.10 - one-by-one: 3.2.8 - r-json: 1.3.0 - r-package-json: 1.0.9 - tmp: 0.0.28 - - git-source@1.1.10: - dependencies: - git-url-parse: 5.0.1 - - git-up@1.2.1: - dependencies: - is-ssh: 1.4.0 - parse-url: 1.3.11 - - git-url-parse@5.0.1: - dependencies: - git-up: 1.2.1 - github-from-package@0.0.0: {} glob-parent@5.1.2: @@ -8562,35 +8327,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 - got@5.7.1: - dependencies: - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - create-error-class: 3.0.2 - duplexer2: 0.1.4 - is-redirect: 1.0.0 - is-retry-allowed: 1.2.0 - is-stream: 1.1.0 - lowercase-keys: 1.0.1 - node-status-codes: 1.0.0 - object-assign: 4.1.1 - parse-json: 2.2.0 - pinkie-promise: 2.0.1 - read-all-stream: 3.1.0 - readable-stream: 2.3.8 - timed-out: 3.1.3 - unzip-response: 1.0.2 - url-parse-lax: 1.0.0 - graceful-fs@4.2.11: {} - gry@5.0.8: - dependencies: - abs: 1.3.14 - exec-limiter: 3.2.13 - one-by-one: 3.2.8 - ul: 5.2.15 - gtoken@7.1.0: dependencies: gaxios: 6.7.1 @@ -8649,8 +8387,6 @@ snapshots: dependencies: react-is: 16.13.1 - hosted-git-info@2.8.9: {} - http-shutdown@1.2.2: {} https-proxy-agent@7.0.5: @@ -8697,8 +8433,6 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-arrayish@0.2.1: {} - is-arrayish@0.3.2: optional: true @@ -8734,20 +8468,10 @@ snapshots: is-number@7.0.0: {} - is-redirect@1.0.0: {} - is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 - is-retry-allowed@1.2.0: {} - - is-ssh@1.4.0: - dependencies: - protocols: 2.0.1 - - is-stream@1.1.0: {} - is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -8785,8 +8509,6 @@ snapshots: dependencies: ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - iterate-object@1.3.4: {} - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -9009,10 +8731,6 @@ snapshots: lilconfig@3.1.3: {} - limit-it@3.2.10: - dependencies: - typpy: 2.3.13 - lines-and-columns@1.2.4: {} listhen@1.9.0: @@ -9070,8 +8788,6 @@ snapshots: loupe@3.1.2: {} - lowercase-keys@1.0.1: {} - lru-cache@10.4.3: {} lru-cache@11.0.2: {} @@ -9253,17 +8969,6 @@ snapshots: node-releases@2.0.18: {} - node-status-codes@1.0.0: {} - - noop6@1.0.9: {} - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - normalize-path@3.0.0: {} npm-run-path@5.3.0: @@ -9275,15 +8980,6 @@ snapshots: bn.js: 4.11.6 strip-hex-prefix: 1.0.0 - oargv@3.4.10: - dependencies: - iterate-object: 1.3.4 - ul: 5.2.15 - - obj-def@1.0.9: - dependencies: - deffy: 2.2.4 - obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.4 @@ -9316,11 +9012,6 @@ snapshots: dependencies: wrappy: 1.0.2 - one-by-one@3.2.8: - dependencies: - obj-def: 1.0.9 - sliced: 1.0.1 - onetime@6.0.0: dependencies: mimic-fn: 4.0.0 @@ -9413,37 +9104,11 @@ snapshots: package-json-from-dist@1.0.1: {} - package-json-path@1.0.9: - dependencies: - abs: 1.3.14 - - package-json@2.4.0: - dependencies: - got: 5.7.1 - registry-auth-token: 3.4.0 - registry-url: 3.1.0 - semver: 5.7.2 - package-manager-detector@0.2.7: {} - package.json@2.0.1: - dependencies: - git-package-json: 1.4.10 - git-source: 1.1.10 - package-json: 2.4.0 - - parse-json@2.2.0: - dependencies: - error-ex: 1.3.2 - parse-node-version@1.0.1: optional: true - parse-url@1.3.11: - dependencies: - is-ssh: 1.4.0 - protocols: 1.4.8 - partial-json@0.1.7: {} path-exists@4.0.0: {} @@ -9484,12 +9149,6 @@ snapshots: pify@5.0.0: {} - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - pino-abstract-transport@0.5.0: dependencies: duplexify: 4.1.3 @@ -9601,8 +9260,6 @@ snapshots: tar-fs: 2.1.1 tunnel-agent: 0.6.0 - prepend-http@1.0.4: {} - prettier@2.8.8: {} process-nextick-args@2.0.1: {} @@ -9611,10 +9268,6 @@ snapshots: progress@2.0.3: {} - protocols@1.4.8: {} - - protocols@2.0.1: {} - proxy-compare@2.5.1: {} prr@1.0.1: @@ -9645,15 +9298,6 @@ snapshots: quick-format-unescaped@4.0.4: {} - r-json@1.3.0: - dependencies: - w-json: 1.3.10 - - r-package-json@1.0.9: - dependencies: - package-json-path: 1.0.9 - r-json: 1.3.0 - radix3@1.1.2: {} randombytes@2.1.0: @@ -9687,11 +9331,6 @@ snapshots: react@19.0.0-rc-66855b96-20241106: {} - read-all-stream@3.1.0: - dependencies: - pinkie-promise: 2.0.1 - readable-stream: 2.3.8 - read-cache@1.0.0: dependencies: pify: 2.3.0 @@ -9729,15 +9368,6 @@ snapshots: regenerator-runtime@0.14.1: {} - registry-auth-token@3.4.0: - dependencies: - rc: 1.2.8 - safe-buffer: 5.2.1 - - registry-url@3.1.0: - dependencies: - rc: 1.2.8 - require-directory@2.1.1: {} require-main-filename@2.0.0: {} @@ -9812,7 +9442,8 @@ snapshots: secure-json-parse@2.7.0: {} - semver@5.7.2: {} + semver@5.7.2: + optional: true semver@6.3.1: {} @@ -9888,8 +9519,6 @@ snapshots: slash@3.0.0: {} - sliced@1.0.1: {} - socket.io-client@4.8.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 @@ -9932,20 +9561,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 - - spdx-license-ids@3.0.20: {} - split-on-first@1.1.0: {} split2@4.2.0: {} @@ -10187,8 +9802,6 @@ snapshots: tiktoken@1.0.17: {} - timed-out@3.1.3: {} - tinybench@2.9.0: {} tinyexec@0.3.1: {} @@ -10206,10 +9819,6 @@ snapshots: tinyspy@3.0.2: {} - tmp@0.0.28: - dependencies: - os-tmpdir: 1.0.2 - tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -10326,21 +9935,12 @@ snapshots: typescript@5.6.3: {} - typpy@2.3.13: - dependencies: - function.name: 1.0.13 - ufo@1.5.4: {} uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 - ul@5.2.15: - dependencies: - deffy: 2.2.4 - typpy: 2.3.13 - uncrypto@0.1.3: {} undici-types@5.26.5: {} @@ -10380,8 +9980,6 @@ snapshots: consola: 3.2.3 pathe: 1.1.2 - unzip-response@1.0.2: {} - update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -10390,10 +9988,6 @@ snapshots: uqr@0.1.2: {} - url-parse-lax@1.0.0: - dependencies: - prepend-http: 1.0.4 - use-sync-external-store@1.2.0(react@19.0.0-rc-66855b96-20241106): dependencies: react: 19.0.0-rc-66855b96-20241106 @@ -10428,11 +10022,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - valtio@1.11.2(@types/react@18.3.12)(react@19.0.0-rc-66855b96-20241106): dependencies: proxy-compare: 2.5.1 @@ -10534,8 +10123,6 @@ snapshots: optionalDependencies: typescript: 5.6.3 - w-json@1.3.10: {} - wagmi@2.13.3(@tanstack/query-core@5.62.2)(@tanstack/react-query@5.62.2(react@19.0.0-rc-66855b96-20241106))(@types/react@18.3.12)(bufferutil@4.0.8)(react@19.0.0-rc-66855b96-20241106)(typescript@5.6.3)(utf-8-validate@5.0.10)(viem@2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8))(zod@3.23.8): dependencies: '@tanstack/react-query': 5.62.2(react@19.0.0-rc-66855b96-20241106) From 7d0914a07fca7a02dac3b12447f627ca1eda0997 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Sat, 7 Dec 2024 17:30:13 -0500 Subject: [PATCH 12/15] fix build --- typescript/packages/plugins/solana/package.json | 2 +- typescript/pnpm-lock.yaml | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/typescript/packages/plugins/solana/package.json b/typescript/packages/plugins/solana/package.json index b71882f27..110f7d371 100644 --- a/typescript/packages/plugins/solana/package.json +++ b/typescript/packages/plugins/solana/package.json @@ -17,7 +17,7 @@ "types": "./dist/index.d.ts", "dependencies": { "@goat-sdk/core": "workspace:*", - "@metaplex-foundation/digital-asset-standard-api": "1.0.2", + "@metaplex-foundation/digital-asset-standard-api": "1.0.0", "@metaplex-foundation/mpl-bubblegum": "3.1.0", "@metaplex-foundation/umi": "^0.9.2", "@metaplex-foundation/umi-bundle-defaults": "0.9.2", diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index f785c0815..e36eea843 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -400,8 +400,8 @@ importers: specifier: workspace:* version: link:../../core '@metaplex-foundation/digital-asset-standard-api': - specifier: 1.0.2 - version: 1.0.2(@metaplex-foundation/umi@0.9.2) + specifier: 1.0.0 + version: 1.0.0(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/mpl-bubblegum': specifier: 3.1.0 version: 3.1.0(@metaplex-foundation/umi@0.9.2) @@ -1448,11 +1448,10 @@ packages: resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} - '@metaplex-foundation/digital-asset-standard-api@1.0.2': - resolution: {integrity: sha512-aJ4PM3Xmvh6MlPYe9dymgdIgXC5c4MZD9wNnIJrG0bjknmJ2ajU3sYV9pi6QD8cNXlcoyb+hsg4lpSt4abA/Sg==} - deprecated: this package is broken + '@metaplex-foundation/digital-asset-standard-api@1.0.0': + resolution: {integrity: sha512-RShZFkLa3SKl8Rs13okG9vG3N3ZfRrcHBImEEds3Rb8mghHWGU3IL2+X9FdIRMnE44jNJ3vZlVeEBU3kIZPBvw==} peerDependencies: - '@metaplex-foundation/umi': '>= 0.8.2 < 1' + '@metaplex-foundation/umi': ^0.8.2 '@metaplex-foundation/mpl-bubblegum@3.1.0': resolution: {integrity: sha512-iwwOD723ISHjc5V8+aEWy8qujO11giwzqr0CCGai5efxowZKAkmlqZEWaq7o5F8DBVJZwwT33LYiO4RVBiHaxg==} @@ -6284,13 +6283,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@metaplex-foundation/digital-asset-standard-api@1.0.2(@metaplex-foundation/umi@0.9.2)': + '@metaplex-foundation/digital-asset-standard-api@1.0.0(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 '@metaplex-foundation/mpl-bubblegum@3.1.0(@metaplex-foundation/umi@0.9.2)': dependencies: - '@metaplex-foundation/digital-asset-standard-api': 1.0.2(@metaplex-foundation/umi@0.9.2) + '@metaplex-foundation/digital-asset-standard-api': 1.0.0(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/mpl-token-metadata': 3.0.0-alpha.27(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/mpl-toolbox': 0.9.4(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/umi': 0.9.2 From 7a7e88f962954894f406521a39def702447835d4 Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Sat, 7 Dec 2024 17:31:56 -0500 Subject: [PATCH 13/15] changes --- typescript/packages/plugins/solana/src/nfts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typescript/packages/plugins/solana/src/nfts.ts b/typescript/packages/plugins/solana/src/nfts.ts index bd6a4c179..62eb12f76 100644 --- a/typescript/packages/plugins/solana/src/nfts.ts +++ b/typescript/packages/plugins/solana/src/nfts.ts @@ -7,7 +7,7 @@ import { fromWeb3JsPublicKey, toWeb3JsInstruction } from "@metaplex-foundation/u export function nfts(connection: Connection): Plugin { return { - name: "nft_actions", + name: "nfts", supportsSmartWallets: () => false, supportsChain: (chain) => chain.type === "solana", getTools: async () => { From f11af6f1f0440fab503ae531709299a1d3045cec Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Sat, 7 Dec 2024 17:32:53 -0500 Subject: [PATCH 14/15] fix --- typescript/packages/plugins/solana/package.json | 1 + typescript/pnpm-lock.yaml | 16 ++++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/typescript/packages/plugins/solana/package.json b/typescript/packages/plugins/solana/package.json index 110f7d371..55ca4b2b8 100644 --- a/typescript/packages/plugins/solana/package.json +++ b/typescript/packages/plugins/solana/package.json @@ -22,6 +22,7 @@ "@metaplex-foundation/umi": "^0.9.2", "@metaplex-foundation/umi-bundle-defaults": "0.9.2", "@metaplex-foundation/umi-web3js-adapters": "0.8.10", + "@solana/web3.js": "1.95.8", "viem": "^2.21.49", "zod": "^3.23.8" }, diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index e36eea843..ab9e991a4 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -414,6 +414,9 @@ importers: '@metaplex-foundation/umi-web3js-adapters': specifier: 0.8.10 version: 0.8.10(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@solana/web3.js': + specifier: 1.95.8 + version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) viem: specifier: ^2.21.49 version: 2.21.49(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)(zod@3.23.8) @@ -2022,9 +2025,6 @@ packages: '@types/node@22.7.4': resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} - '@types/node@22.9.1': - resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==} - '@types/phoenix@1.6.6': resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} @@ -6863,7 +6863,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.7.4 '@types/debug@4.1.12': dependencies: @@ -6892,10 +6892,6 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/node@22.9.1': - dependencies: - undici-types: 6.19.8 - '@types/phoenix@1.6.6': {} '@types/prop-types@15.7.13': {} @@ -6924,11 +6920,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.7.4 '@types/ws@8.5.13': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.7.4 '@vitest/expect@2.1.5': dependencies: From ff8b9eaebba6b2f131561b45866d1c9b6426955f Mon Sep 17 00:00:00 2001 From: Bryan Eastwood Date: Sun, 8 Dec 2024 14:57:41 -0500 Subject: [PATCH 15/15] changes --- .../crossmint-solana-custodial-wallets/index.ts | 9 +++------ .../package.json | 2 +- .../plugins/{solana => solana-nfts}/package.json | 14 +++----------- .../plugins/{solana => solana-nfts}/src/index.ts | 0 .../plugins/{solana => solana-nfts}/src/nfts.ts | 0 .../plugins/{solana => solana-nfts}/tsconfig.json | 0 .../plugins/{solana => solana-nfts}/tsup.config.ts | 0 typescript/pnpm-lock.yaml | 6 +++--- 8 files changed, 10 insertions(+), 21 deletions(-) rename typescript/packages/plugins/{solana => solana-nfts}/package.json (84%) rename typescript/packages/plugins/{solana => solana-nfts}/src/index.ts (100%) rename typescript/packages/plugins/{solana => solana-nfts}/src/nfts.ts (100%) rename typescript/packages/plugins/{solana => solana-nfts}/tsconfig.json (100%) rename typescript/packages/plugins/{solana => solana-nfts}/tsup.config.ts (100%) diff --git a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts index 4855eb267..7bbc35b4b 100644 --- a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts +++ b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/index.ts @@ -4,7 +4,6 @@ import { generateText } from "ai"; import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; import { crossmint } from "@goat-sdk/crossmint"; import { Connection } from "@solana/web3.js"; -import { nfts } from "@goat-sdk/plugin-solana-actions"; require("dotenv").config(); @@ -16,24 +15,22 @@ if (!apiKey || !email) { } const { custodial } = crossmint(apiKey); -const connection = new Connection("https://api.devnet.solana.com", "confirmed"); (async () => { const tools = await getOnChainTools({ wallet: await custodial({ chain: "solana", - address: "3q1PB3Yde3wUnJ45RLrAhCg3W1n9HEC8Jd9NkfuhRGS1", + email: email, env: "staging", - connection, + connection: new Connection("https://api.devnet.solana.com", "confirmed"), }), - plugins: [nfts(connection)], }); const result = await generateText({ model: openai("gpt-4o-mini"), tools: tools, maxSteps: 5, - prompt: "Transfer NFT with assetId 57hD2akP2FsEwnDMJn8CNS565p2dNUz8UKuQ5tUGEsh7 to the wallet CKkeuMRjRsM9zBNnFVRRYhQ3rg4uL4tPkaADNLgk2omb", + prompt: "Get my balance in SOL", }); console.log(result.text); diff --git a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json index fe03066c7..03c6879ad 100644 --- a/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json +++ b/typescript/examples/vercel-ai/crossmint-solana-custodial-wallets/package.json @@ -16,7 +16,7 @@ "@goat-sdk/core": "workspace:*", "@goat-sdk/plugin-erc20": "workspace:*", "@goat-sdk/crossmint": "workspace:*", - "@goat-sdk/plugin-solana-actions": "workspace:*", + "@goat-sdk/plugin-solana-nfts": "workspace:*", "@solana/web3.js": "1.95.8", "ai": "^4.0.3", "dotenv": "^16.4.5", diff --git a/typescript/packages/plugins/solana/package.json b/typescript/packages/plugins/solana-nfts/package.json similarity index 84% rename from typescript/packages/plugins/solana/package.json rename to typescript/packages/plugins/solana-nfts/package.json index 55ca4b2b8..ac9376ead 100644 --- a/typescript/packages/plugins/solana/package.json +++ b/typescript/packages/plugins/solana-nfts/package.json @@ -1,11 +1,7 @@ { - "name": "@goat-sdk/plugin-solana-actions", + "name": "@goat-sdk/plugin-solana-nfts", "version": "0.1.0", - "files": [ - "dist/**/*", - "README.md", - "package.json" - ], + "files": ["dist/**/*", "README.md", "package.json"], "scripts": { "build": "tsup", "clean": "rm -rf dist", @@ -39,9 +35,5 @@ "bugs": { "url": "https://github.com/goat-sdk/goat/issues" }, - "keywords": [ - "ai", - "agents", - "web3" - ] + "keywords": ["ai", "agents", "web3"] } diff --git a/typescript/packages/plugins/solana/src/index.ts b/typescript/packages/plugins/solana-nfts/src/index.ts similarity index 100% rename from typescript/packages/plugins/solana/src/index.ts rename to typescript/packages/plugins/solana-nfts/src/index.ts diff --git a/typescript/packages/plugins/solana/src/nfts.ts b/typescript/packages/plugins/solana-nfts/src/nfts.ts similarity index 100% rename from typescript/packages/plugins/solana/src/nfts.ts rename to typescript/packages/plugins/solana-nfts/src/nfts.ts diff --git a/typescript/packages/plugins/solana/tsconfig.json b/typescript/packages/plugins/solana-nfts/tsconfig.json similarity index 100% rename from typescript/packages/plugins/solana/tsconfig.json rename to typescript/packages/plugins/solana-nfts/tsconfig.json diff --git a/typescript/packages/plugins/solana/tsup.config.ts b/typescript/packages/plugins/solana-nfts/tsup.config.ts similarity index 100% rename from typescript/packages/plugins/solana/tsup.config.ts rename to typescript/packages/plugins/solana-nfts/tsup.config.ts diff --git a/typescript/pnpm-lock.yaml b/typescript/pnpm-lock.yaml index ab9e991a4..2903c2028 100644 --- a/typescript/pnpm-lock.yaml +++ b/typescript/pnpm-lock.yaml @@ -195,9 +195,9 @@ importers: '@goat-sdk/plugin-erc20': specifier: workspace:* version: link:../../../packages/plugins/erc20 - '@goat-sdk/plugin-solana-actions': + '@goat-sdk/plugin-solana-nfts': specifier: workspace:* - version: link:../../../packages/plugins/solana + version: link:../../../packages/plugins/solana-nfts '@solana/web3.js': specifier: 1.95.8 version: 1.95.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -394,7 +394,7 @@ importers: specifier: ^3.23.8 version: 3.23.8 - packages/plugins/solana: + packages/plugins/solana-nfts: dependencies: '@goat-sdk/core': specifier: workspace:*