From cae2e6ffea74d40d60cd93d9f8170466e5eb71d1 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Mon, 6 Jan 2025 23:25:52 +0100 Subject: [PATCH 01/11] added fluxbeam methods --- src/constants/index.ts | 7 + src/tools/fluxbeam_burn_token.ts | 59 ++ src/tools/fluxbeam_create_pool.ts | 73 +++ src/tools/fluxbeam_fee_management.ts | 237 ++++++++ src/tools/fluxbeam_fetch_pools.ts | 31 + src/tools/fluxbeam_liquidity_management.ts | 558 ++++++++++++++++++ src/tools/fluxbeam_lock_token.ts | 422 +++++++++++++ src/tools/fluxbeam_metadata_management.ts | 287 +++++++++ src/tools/fluxbeam_token_minting_controls.ts | 443 ++++++++++++++ src/tools/fluxbeam_token_swap.ts | 78 +++ src/tools/fluxbeam_transfer.ts | 97 +++ src/tools/fluxbeam_v1_token_creation.ts | 164 +++++ src/tools/fluxbeam_v2_token_creation.ts | 0 .../fluxbeam_withheld_amounts_tracking.ts | 223 +++++++ src/tools/fluxbeam_wrap_and_unwrap_sol.ts | 109 ++++ src/utils/fluxbeam_utils.ts | 70 +++ 16 files changed, 2858 insertions(+) create mode 100644 src/tools/fluxbeam_burn_token.ts create mode 100644 src/tools/fluxbeam_create_pool.ts create mode 100644 src/tools/fluxbeam_fee_management.ts create mode 100644 src/tools/fluxbeam_fetch_pools.ts create mode 100644 src/tools/fluxbeam_liquidity_management.ts create mode 100644 src/tools/fluxbeam_lock_token.ts create mode 100644 src/tools/fluxbeam_metadata_management.ts create mode 100644 src/tools/fluxbeam_token_minting_controls.ts create mode 100644 src/tools/fluxbeam_token_swap.ts create mode 100644 src/tools/fluxbeam_transfer.ts create mode 100644 src/tools/fluxbeam_v1_token_creation.ts create mode 100644 src/tools/fluxbeam_v2_token_creation.ts create mode 100644 src/tools/fluxbeam_withheld_amounts_tracking.ts create mode 100644 src/tools/fluxbeam_wrap_and_unwrap_sol.ts create mode 100644 src/utils/fluxbeam_utils.ts diff --git a/src/constants/index.ts b/src/constants/index.ts index a961e611..b62b3c6b 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -11,6 +11,7 @@ export const TOKENS = { jitoSOL: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), bSOL: new PublicKey("bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1"), mSOL: new PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"), + wSOL: new PublicKey("So11111111111111111111111111111111111111112"), BONK: new PublicKey("DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"), } as const; @@ -53,3 +54,9 @@ export const MINIMUM_COMPUTE_PRICE_FOR_COMPLEX_ACTIONS = * https://docs.switchboard.xyz/docs/switchboard/crossbar-and-task-runner */ export const SWITCHBOARD_DEFAULT_CROSSBAR = "https://crossbar.switchboard.xyz"; +/** + * Fluxbeam constants + */ +export const FEE_ACCOUNT = new PublicKey( + "FLUXR4McuD2iXyP3wpP4XTjSWmB86ppMiyoA52UA9bKb", +); diff --git a/src/tools/fluxbeam_burn_token.ts b/src/tools/fluxbeam_burn_token.ts new file mode 100644 index 00000000..2a6e3f97 --- /dev/null +++ b/src/tools/fluxbeam_burn_token.ts @@ -0,0 +1,59 @@ +import { PublicKey, Transaction } from "@solana/web3.js"; +import { getAssociatedTokenPDA } from "../utils/fluxbeam_utils"; +import { + createBurnCheckedInstruction, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { SolanaAgentKit } from "../agent"; + +/** + * Burns a specified amount of tokens + * @param agent SolanaAgentKit instance + * @param mint Token mint address + * @param amount Amount of tokens to burn + * @param decimals Token decimals + * @param program Optional token program ID (defaults to TOKEN_2022_PROGRAM_ID) + * @returns Transaction signature + */ +export async function fluxbeamBurnTokens( + agent: SolanaAgentKit, + mint: PublicKey, + amount: number, + decimals: number, + program = TOKEN_2022_PROGRAM_ID, +): Promise { + try { + const srcAta = await getAssociatedTokenPDA( + mint, + agent.wallet_address, + program, + ); + const transaction = new Transaction(); + transaction.add( + createBurnCheckedInstruction( + srcAta, + mint, + agent.wallet_address, + amount, + decimals, + [], + program, + ), + ); + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = agent.wallet_address; + transaction.recentBlockhash = bhash.blockhash; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction( + transaction, + [agent.wallet], + { skipPreflight: false, preflightCommitment: "confirmed", maxRetries: 5 }, + ); + + return signature; + } catch (error: any) { + throw new Error(`Burn token failed: ${error.message}`); + } +} diff --git a/src/tools/fluxbeam_create_pool.ts b/src/tools/fluxbeam_create_pool.ts new file mode 100644 index 00000000..3ff4d23d --- /dev/null +++ b/src/tools/fluxbeam_create_pool.ts @@ -0,0 +1,73 @@ +import { VersionedTransaction, PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { TOKENS } from "../constants"; +import { getMint } from "@solana/spl-token"; + +/** + * Create a new pool using FluxBeam + * @param agent SolanaAgentKit instance + * @param outputMint Target token mint address + * @param inputAmount Amount to swap (in token decimals) + * @param inputMint Source token mint address (defaults to USDC) + * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) + * @returns Transaction signature + */ + +export async function fluxBeamCreatePool( + agent: SolanaAgentKit, + token_a: PublicKey, + token_a_amount: number, + token_b: PublicKey, + token_b_amount: number, +): Promise { + try { + const FLUXBEAM_API = `https://api.fluxbeam.xyz/v1`; + + const isTokenA_NativeSol = token_a.equals(TOKENS.SOL); + const tokenA_Decimals = isTokenA_NativeSol + ? 9 + : (await getMint(agent.connection, token_a)).decimals; + + const scaledAmountTokenA = token_a_amount * Math.pow(10, tokenA_Decimals); + + const isTokenB_NativeSol = token_b.equals(TOKENS.SOL); + const tokenB_Decimals = isTokenB_NativeSol + ? 9 + : (await getMint(agent.connection, token_b)).decimals; + + const scaledAmountTokenB = token_b_amount * Math.pow(10, tokenB_Decimals); + + const { poolTransaction } = await ( + await fetch(`${FLUXBEAM_API}/token_pools`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + payer: agent.wallet_address, + token_a: token_a, + token_b: token_b, + token_a_amount: scaledAmountTokenA, + token_b_amount: scaledAmountTokenB, + }), + }) + ).json(); + // Deserialize transaction + const TransactionBuf = Buffer.from(poolTransaction, "base64"); + + const transaction = VersionedTransaction.deserialize(TransactionBuf); + // Sign and send transaction + transaction.sign([agent.wallet]); + + const signature = agent.connection.sendRawTransaction( + transaction.serialize(), + { + maxRetries: 3, + skipPreflight: true, + }, + ); + return signature; + } catch (error: any) { + throw new Error(`Swap failed: ${error.message}`); + } +} diff --git a/src/tools/fluxbeam_fee_management.ts b/src/tools/fluxbeam_fee_management.ts new file mode 100644 index 00000000..cdd2506f --- /dev/null +++ b/src/tools/fluxbeam_fee_management.ts @@ -0,0 +1,237 @@ +import { + ComputeBudgetProgram, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { + createWithdrawWithheldTokensFromMintInstruction, + getAssociatedTokenAddressSync, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { SolanaAgentKit } from "../agent"; + +const baseURI = "https://api.fluxbeam.xyz/v1"; +const MEMO_PROGRAM_ID = new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", +); +const FEE_ACCOUNTS = [ + new PublicKey("FEE1M4bRtos7Yi8cni9s6zpxDfZTSsARwrhqMJMLLKhv"), + // new PublicKey("FEE2qEfVjE64bdT9SXRa4ALvm4tFcwg7WE8ArQDuTjuD"), + // new PublicKey("FEE3veNwA943NP38BB968i3Zo1Mjxtn9bkHN8eK8UKHS"), + // new PublicKey("FEE4hmPcfXNTgscRrqpjnQQiNjdQN4XGVVZQqHgFYcNT"), + // new PublicKey("FEE5sDtT4N7AsGnsBNxB9EUEMTnRoJqZ56FZubsDKTxm"), + // new PublicKey("FEE6Ytka6NhFKNN9mJrGGGomSMs1Dk7GDXEwdjoiwt6t"), + // new PublicKey("FEE7HqiD7CCv9bYrWhfFou8naYdhZU78C6KdWV8kLouY"), + // new PublicKey("FEE8ZTYvsC3CLe8YnkN4vXikxnUcecmDB5D8ShXAAqPW"), + // new PublicKey("FEE9Z48Pdm7Dt1pr5kCZ1gwt6hWX5Kmohk45SBJHXmZX"), +]; + +/** + * Get cluster status + */ +export async function clusterStatus() { + const resp = await fetch(uri(`status`)); + if (resp.status !== 200) { + throw new Error(resp.statusText); + } + + return await resp.json(); +} + +/** + * Get job details + */ +export async function getJob(pk: string) { + const response = await fetch(uri(`jobs/${pk}`)); + if (!response.ok) { + throw new Error(`Failed to fetch job: ${response.statusText}`); + } + return response.json(); +} + +/** + * Get history for a mint + */ +export async function getHistory(mint: PublicKey): Promise { + const response = await fetch(uri(`history/${mint}`)); + if (!response.ok) { + throw new Error(`Failed to fetch history: ${response.statusText}`); + } + return response.json(); +} + +/** + * Restart a job + */ +export async function restartJob(pk: string) { + const response = await fetch(uri(`jobs/${pk}/restart`), { + method: "PUT", + }); + if (!response.ok) { + throw new Error(`Failed to restart job: ${response.statusText}`); + } + return response.json(); +} + +/** + * Get quote for fee payment + */ +export async function quote( + agent: SolanaAgentKit, + pk: PublicKey, + mint: PublicKey, +) { + const response = await fetch(uri(`jobs/quote`), { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + payer: agent.wallet_address.toBase58(), + mint: mint.toBase58(), + pipeline: "Fee Manager", + }), + }); + if (!response.ok) { + throw new Error(`Failed to get quote: ${response.statusText}`); + } + return response.json(); +} + +/** + * Submit a job + */ +export async function submitJob( + quote: string | Record, + hash: string, + signature: string, +) { + const response = await fetch(uri(`jobs`), { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + quote, + hash, + signature, + }), + }); + if (!response.ok) { + throw new Error(`Failed to submit job: ${response.statusText}`); + } + return response.json(); +} + +export function uri(endpoint: string) { + return `${baseURI}/workflow/${endpoint}`; +} + +export function feeAccount(): PublicKey { + return FEE_ACCOUNTS[Math.floor(Math.random() * FEE_ACCOUNTS.length)]; +} + +/** + * Submit fee payment transaction + */ +export async function submitFeePayment( + agent: SolanaAgentKit, + quoteReq: { quote: any }, + priorityFee: number, +): Promise { + try { + const quote = quoteReq.quote; + // eslint-disable-next-line no-console + console.log("buildFeeTransaction", { quoteReq, quote, priorityFee }); + const transaction = new Transaction(); + const unit_limit = 160_000; + + // Add compute budget instructions + const unitPrice = Math.floor(priorityFee / unit_limit); + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unit_limit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.transfer({ + fromPubkey: new PublicKey(quote.payer), //agent.wallet_address, + toPubkey: feeAccount(), + lamports: quote.fee, + }), + new TransactionInstruction({ + keys: [], + programId: MEMO_PROGRAM_ID, + data: Buffer.from(btoa(JSON.stringify(quoteReq))), + }), + ); + + // Set transaction parameters + const { blockhash } = await agent.connection.getLatestBlockhash(); + transaction.recentBlockhash = blockhash; + transaction.feePayer = agent.wallet_address; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + + return signature; + } catch (error: any) { + throw new Error(`Fee payment failed: ${error.message}`); + } +} + +/** + * Submit claim transaction + */ +export async function submitClaim( + agent: SolanaAgentKit, + quoteReq: { quote: any }, + payer: PublicKey, + mint: PublicKey, + priorityFee: number, +): Promise { + try { + const { quote } = quoteReq; + + const transaction = new Transaction(); + const unitLimit = 160_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + const dstAcc = getAssociatedTokenAddressSync( + mint, + payer, + true, + TOKEN_2022_PROGRAM_ID, + ); + + //build claim transaction + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: unitPrice, + }), + createWithdrawWithheldTokensFromMintInstruction( + mint, + dstAcc, + payer, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + + // Set transaction parameters + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + transaction.recentBlockhash = bhash.blockhash; + transaction.feePayer = agent.wallet_address; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + + return signature; + } catch (error: any) { + throw new Error(`Fee payment failed: ${error.message}`); + } +} diff --git a/src/tools/fluxbeam_fetch_pools.ts b/src/tools/fluxbeam_fetch_pools.ts new file mode 100644 index 00000000..20a46a68 --- /dev/null +++ b/src/tools/fluxbeam_fetch_pools.ts @@ -0,0 +1,31 @@ +import { PublicKey } from "@solana/web3.js"; + +const baseURI = "https://api.fluxbeam.xyz/v1"; + +export async function search(query: string, page: number = 0) { + return await (await fetch(uri(`search?q=${query}&page=${page}`))).json(); +} + +export async function pools(page: number, limit = 100) { + return await (await fetch(uri(`pools?limit=${limit}&page=${page}`))).json(); +} + +export async function pool(pk: PublicKey) { + return (await fetch(uri(`pools/${pk}`))).json(); +} + +export async function poolByTicker(ticker: string) { + return (await fetch(uri(`pool-tickers/${ticker}`))).json(); +} + +export async function poolByMint(ticker: string) { + return (await fetch(uri(`pool-mints/${ticker}`))).json(); +} + +export async function listings(ticker: string) { + return (await fetch(uri(`pool-listings/${ticker.toLowerCase()}`))).json(); +} + +export function uri(endpoint: string) { + return `${baseURI}/spl22/${endpoint}`; +} diff --git a/src/tools/fluxbeam_liquidity_management.ts b/src/tools/fluxbeam_liquidity_management.ts new file mode 100644 index 00000000..3be2c569 --- /dev/null +++ b/src/tools/fluxbeam_liquidity_management.ts @@ -0,0 +1,558 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import { BN, web3 } from "@project-serum/anchor"; +import { + createAssociatedTokenAccountInstruction, + createCloseAccountInstruction, + createHarvestWithheldTokensToMintInstruction, + createSyncNativeInstruction, + createTransferCheckedInstruction, + getAssociatedTokenAddressSync, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { + PoolConfig, + TokenInput, + TokenSwapLayout, + TokenSwapPool, +} from "./layouts"; +import { SWAP_PROGRAM_ID, WSOL } from "./constants"; +import Instructions from "./instructions"; +import { SolanaAgentKit } from "../agent"; +import { ComputeBudgetProgram, PublicKey, Transaction } from "@solana/web3.js"; +import { + getUnwrapSOLInstruction, + getWrapSOLInstructions, +} from "./fluxbeam_wrap_and_unwrap_sol"; + +export default class Client { + connection; + + poolTokenProgramId = TOKEN_2022_PROGRAM_ID; //The program ID of the token program for the pool tokens + + constructor(connection: Connection) { + this.connection = connection; + } + + async createAddLiquidityTransaction( + agent: SolanaAgentKit, + payer: PublicKey, + pool: PublicKey, + route: TokenSwapPool, + srcMint: TokenInput, + dstMint: TokenInput, + poolTokenAmount: any, + initTokenPrice = false, + priorityFee, + ) { + const mintAInfo = await this.connection.getParsedAccountInfo(route.mintA); + const mintBInfo = await this.connection.getParsedAccountInfo(route.mintB); + const [authority] = PublicKey.findProgramAddressSync( + [pool.toBuffer()], + SWAP_PROGRAM_ID, + ); + + const userAccountA = getAssociatedTokenAddressSync( + route.mintA, + payer, + true, + mintAInfo.value?.owner, + ); + const userAccountB = getAssociatedTokenAddressSync( + route.mintB, + payer, + true, + mintBInfo.value?.owner, + ); + const userPoolTokenAccount = getAssociatedTokenAddressSync( + route.tokenPool, + payer, + true, + TOKEN_2022_PROGRAM_ID, + ); + + const balanceInfo = await this.connection.getMultipleParsedAccounts( + [userPoolTokenAccount], + { + commitment: "confirmed", + }, + ); + const [userPoolTokenAccountInfo] = balanceInfo.value; + + const unitLimit = 100_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + const transaction = new Transaction().add( + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: unitPrice, + }), + ); + + if (route.mintA.equals(WSOL)) { + //Do sync native checks + const ixs = await getWrapSOLInstructions(agent, payer, srcMint.amount); + if (ixs.length > 0) { + transaction.add(...ixs); + } + } + + if (route.mintB.equals(WSOL)) { + //Do sync native checks + const ixs = await getWrapSOLInstructions(agent, payer, dstMint.amount); + if (ixs.length > 0) { + transaction.add(...ixs); + } + } + + if (!userPoolTokenAccountInfo) { + transaction.add( + createAssociatedTokenAccountInstruction( + payer, + userPoolTokenAccount, + payer, + route.tokenPool, + TOKEN_2022_PROGRAM_ID, + ), + ); + } + + console.debug("depositAllTokenTypesInstruction", { + pool, + mintA: route.mintA, + mintB: route.mintB, + poolTokenAmount: poolTokenAmount, + tokenAAmount: srcMint.amount, + tokenBAmount: dstMint.amount, + srcMint, + dstMint, + }); + + if (initTokenPrice) { + const ratio = dstMint.amount / srcMint.amount; + + //ts-ignore + poolTokenAmount = 1_000_000_000; + + console.log("initTokenPrice", { + poolTokenAmount: poolTokenAmount, + tokenA: route.mintA.toString(), + tokenB: route.mintB.toString(), + ratio, //b to a + amountA: srcMint.amount, + amountB: dstMint.amount, + eAmountA: srcMint.amount / 2, + eAmountB: dstMint.amount / 2, + exactAmountInA: srcMint.amountInExact(srcMint.amount / 2), + exactAmountInB: dstMint.amountInExact(dstMint.amount / 2), + }); + + //@ts-ignore + transaction.add( + createTransferCheckedInstruction( + userAccountA, + route.mintA, + route.tokenAccountA, + payer, + srcMint.amountInExact(srcMint.amount / 2), + mintAInfo.value?.data?.parsed?.info.decimals, + [], + mintAInfo.value?.owner, + ), + ); + + //@ts-ignore + transaction.add( + createTransferCheckedInstruction( + userAccountB, + route.mintB, + route.tokenAccountB, + payer, + dstMint.amountInExact(dstMint.amount / 2), + mintBInfo.value?.data?.parsed?.info.decimals, + [], + mintBInfo.value?.owner, + ), + ); + + // srcMint.amount -= srcMint.exactAmountIn(srcMint.amount/2) + // dstMint.amount -= dstMint.exactAmountIn(dstMint.amount/2) + srcMint.amount = srcMint.amount / 2; + dstMint.amount = dstMint.amount / 2; + } + + transaction.add( + Instructions.depositAllTokenTypesInstruction( + pool, + authority, + payer, + userAccountA, + userAccountB, + route.tokenAccountA, + route.tokenAccountB, + route.tokenPool, + userPoolTokenAccount, + route.mintA, + route.mintB, + SWAP_PROGRAM_ID, + mintAInfo.value?.owner, + mintBInfo.value?.owner, + TOKEN_2022_PROGRAM_ID, + new BN(poolTokenAmount, 10), + new BN(srcMint.amount, 10), + new BN(dstMint.amount, 10), + ), + ); + + if (route.mintB.equals(WSOL)) { + //Do sync native checks + transaction.add(await getUnwrapSOLInstruction(payer)); + } + + return transaction; + } + + async createAddSingleSideLiquidityTransaction( + agent: SolanaAgentKit, + payer: PublicKey, + pool: PublicKey, + route: TokenSwapPool, + srcMint: TokenInput, + minPoolTokenAmount: BN, + priorityFee, + ) { + const [authority] = PublicKey.findProgramAddressSync( + [pool.toBuffer()], + SWAP_PROGRAM_ID, + ); + + const userAccount = getAssociatedTokenAddressSync( + srcMint.mint, + payer, + true, + srcMint.programID, + ); + const userPoolTokenAccount = getAssociatedTokenAddressSync( + route.tokenPool, + payer, + true, + TOKEN_2022_PROGRAM_ID, + ); + + const balanceInfo = await this.connection.getMultipleParsedAccounts( + [userPoolTokenAccount], + { + commitment: "confirmed", + }, + ); + const [userPoolTokenAccountInfo] = balanceInfo.value; + + const unitLimit = 200_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + const transaction = new Transaction().add( + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: unitPrice, + }), + ); + + if (srcMint.mint.equals(WSOL)) { + //Do sync native checks + const ixs = await getWrapSOLInstructions(agent, payer, srcMint.amount); + if (ixs.length > 0) { + transaction.add(...ixs); + } + } + + if (!userPoolTokenAccountInfo) { + transaction.add( + createAssociatedTokenAccountInstruction( + payer, + userPoolTokenAccount, + payer, + route.tokenPool, + TOKEN_2022_PROGRAM_ID, + ), + ); + } + + console.log("amountIn", srcMint.amount); + console.log("amountOut", minPoolTokenAmount); + + transaction.add( + Instructions.depositSingleTokenTypeExactAmountInInstruction( + pool, + authority, + payer, + userAccount, + route.tokenAccountA, + route.tokenAccountB, + route.tokenPool, + userPoolTokenAccount, + srcMint.mint, + SWAP_PROGRAM_ID, + srcMint.programID, + TOKEN_2022_PROGRAM_ID, + new BN(srcMint.amount), + new BN(minPoolTokenAmount), + ), + ); + + if (srcMint.mint.equals(WSOL)) { + //Do sync native checks + transaction.add(getUnwrapSOLInstruction(payer)); + } + + return transaction; + } + + async createRemoveLiquidityTransaction( + agent: SolanaAgentKit, + payer: PublicKey, + pool: PublicKey, + route: TokenSwapPool, + poolTokenAmount: number, + minimumTokenA: number, + minimumTokenB: number, + priorityFee: number, + ) { + const mintAInfo = await this.connection.getParsedAccountInfo(route.mintA); + const mintBInfo = await this.connection.getParsedAccountInfo(route.mintB); + const [authority] = PublicKey.findProgramAddressSync( + [pool.toBuffer()], + SWAP_PROGRAM_ID, + ); + + const userAccountA = getAssociatedTokenAddressSync( + route.mintA, + payer, + true, + mintAInfo.value?.owner, + ); + const userAccountB = getAssociatedTokenAddressSync( + route.mintB, + payer, + true, + mintBInfo.value?.owner, + ); + const userPoolTokenAccount = getAssociatedTokenAddressSync( + route.tokenPool, + payer, + true, + TOKEN_2022_PROGRAM_ID, + ); + + const balanceInfo = await this.connection.getMultipleParsedAccounts([ + userAccountA, + userAccountB, + route.tokenAccountA, + route.tokenAccountB, + userPoolTokenAccount, + ]); + + const [uAInfo, uBInfo, tAInfo, tBInfo, spInfo] = balanceInfo.value; + + console.log({ + //@ts-ignore + userAccountAAmount: uAInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + userAccountBAmount: uBInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + tokenAccountAAmount: tAInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + tokenAccountBAmount: tBInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + sourcePoolAccountAmount: spInfo?.data.parsed.info.tokenAmount.amount, + }); + + const unitLimit = 200_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + const transaction = new Transaction().add( + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: unitPrice, + }), + ); + // deposit_all_token_types deposit_single_token_type_exact_amount_in + + //Create wSOL account + if (route.mintA.equals(WSOL) || route.mintB.equals(WSOL)) { + const ixs = await getWrapSOLInstructions(agent, payer, 0); + if (ixs.length > 0) { + transaction.add(...ixs); + } + } + + if (!uAInfo?.data && !route.mintA.equals(WSOL)) { + transaction.add( + createAssociatedTokenAccountInstruction( + payer, + userAccountA, + payer, + route.mintA, + mintAInfo.value?.owner, + ), + ); + } + + if (!uBInfo?.data && !route.mintB.equals(WSOL)) { + transaction.add( + createAssociatedTokenAccountInstruction( + payer, + userAccountB, + payer, + route.mintB, + mintBInfo.value?.owner, //non null assertion was removed here + ), + ); + } + + transaction.add( + Instructions.withdrawAllTokenTypesInstruction( + pool, + authority, + payer, + route.tokenPool, + route.feeAccount, + userPoolTokenAccount, + route.tokenAccountA, + route.tokenAccountB, + userAccountA, + userAccountB, + route.mintA, + route.mintB, + SWAP_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID, + mintAInfo.value?.owner, + mintBInfo.value?.owner, + poolTokenAmount, + minimumTokenA, + minimumTokenB, + ), + ); + + //Unwrap sol + if (route.mintA.equals(WSOL) || route.mintB.equals(WSOL)) { + transaction.add(getUnwrapSOLInstruction(payer)); + } + + return transaction; + } + + //TODO Test + async createRemoveSingleSideLiquidityTransaction( + agent: SolanaAgentKit, + payer: PublicKey, + pool: PublicKey, + route: TokenSwapPool, + dstMint: TokenInput, + poolTokenAmount: number, + priorityFee: number, + ) { + const mintInfo = await agent.connection.getParsedAccountInfo(dstMint.mint); + const [authority] = PublicKey.findProgramAddressSync( + [pool.toBuffer()], + SWAP_PROGRAM_ID, + ); + + const userAccount = getAssociatedTokenAddressSync( + dstMint.mint, + payer, + true, + mintInfo.value?.owner, + ); + + const userPoolTokenAccount = getAssociatedTokenAddressSync( + route.tokenPool, + payer, + true, + TOKEN_2022_PROGRAM_ID, + ); + + const balanceInfo = await agent.connection.getMultipleParsedAccounts([ + userAccount, + route.tokenAccountA, + route.tokenAccountB, + userPoolTokenAccount, + ]); + + const [uAInfo, tAInfo, tBInfo, spInfo] = balanceInfo.value; + + console.log({ + //@ts-ignore + userAccountAAmount: uAInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + tokenAccountAAmount: tAInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + tokenAccountBAmount: tBInfo?.data.parsed.info.tokenAmount.amount, + //@ts-ignore + sourcePoolAccountAmount: spInfo?.data.parsed.info.tokenAmount.amount, + }); + + const unitLimit = 200_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + const transaction = new Transaction().add( + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: unitPrice, + }), + ); + + //Create wSOL account + if (dstMint.mint.equals(WSOL)) { + const ixs = await getWrapSOLInstructions(agent, payer, 0); + if (ixs.length > 0) { + transaction.add(...ixs); + } + } + + if (!uAInfo?.data && !dstMint.mint.equals(WSOL)) { + transaction.add( + createAssociatedTokenAccountInstruction( + payer, + userAccount, + payer, + route.mintB, + mintInfo.value?.owner, + ), + ); + } + + transaction.add( + Instructions.withdrawSingleTokenTypeExactAmountOutInstruction( + pool, + authority, + payer, + route.tokenPool, + route.feeAccount, + userPoolTokenAccount, + route.tokenAccountA, + route.tokenAccountB, + userAccount, + dstMint.mint, + SWAP_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID, + mintInfo.value?.owner, + new BN(dstMint.amount, 10), + new BN(poolTokenAmount), + ), + ); + + //Unwrap sol + if (dstMint.mint.equals(WSOL)) { + transaction.add(getUnwrapSOLInstruction(payer)); + } + + return transaction; + } + + hasTransferFeeConfig(mintInfo: any): boolean { + if (!TOKEN_2022_PROGRAM_ID.equals(mintInfo.value?.owner)) { + return false; + } + + return ( + mintInfo.value?.data.parsed?.info.extensions?.filter( + (ex: any) => ex.extension === "transferFeeConfig", + ).length > 0 + ); + } +} diff --git a/src/tools/fluxbeam_lock_token.ts b/src/tools/fluxbeam_lock_token.ts new file mode 100644 index 00000000..9bde966c --- /dev/null +++ b/src/tools/fluxbeam_lock_token.ts @@ -0,0 +1,422 @@ +import { web3 } from "@project-serum/anchor"; +import { Numberu64, Schedule } from "@bonfida/token-vesting"; +import { + createAssociatedTokenAccountInstruction, + getAssociatedTokenAddress, + getAssociatedTokenAddressSync, + TOKEN_PROGRAM_ID, +} from "@solana/spl-token"; +import { + PublicKey, + SystemProgram, + SYSVAR_CLOCK_PUBKEY, + TransactionInstruction, +} from "@solana/web3.js"; +import { createInitInstruction } from "@bonfida/token-vesting/src/instructions"; +import { getContractInfo } from "@bonfida/token-vesting/src/main"; +import { ContractInfo } from "@bonfida/token-vesting/src/state"; +import { SolanaAgentKit } from "../agent"; + +const PROGRAM_ID = new PublicKey("Lock1zcQFoaZmTk59sr9pB5daFE6Cs1K5eWyRLF1eju"); + +export class Seed { + mint; + releaseTime: Numberu64; + + constructor(mint: PublicKey, releaseTime: Numberu64) { + this.mint = mint; + this.releaseTime = releaseTime; + } + + async toString() { + const encoder = new TextEncoder(); + const dataUint8 = encoder.encode( + JSON.stringify({ + mint: this.mint.toString(), + time: this.releaseTime.toString(), + }), + ); + const hashBuffer = await crypto.subtle.digest("SHA-256", dataUint8); + const hashArray = Array.from(new Uint8Array(hashBuffer)); + return hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); + } +} + +export async function lockers(agent: SolanaAgentKit, mint: PublicKey) { + const resp = await agent.connection.getProgramAccounts(PROGRAM_ID, { + commitment: "processed", + filters: [ + { + memcmp: { + offset: 32, + bytes: mint.toString(), + }, + }, + { + memcmp: { + offset: 32 + 32 + 1, + bytes: "", + }, + }, + ], + }); + return resp.map((m) => { + return { + pubkey: m.pubkey, + account: ContractInfo.fromBuffer(m.account.data), + }; + }); +} + +async function locker(agent: SolanaAgentKit, locker: PublicKey) { + return await getContractInfo(agent.connection, locker); +} + +export async function create( + payer: PublicKey, + owner: PublicKey, + mint: PublicKey, + tokenProgram: PublicKey, + schedules: Schedule[], +): Promise { + const seedWord = await new Seed(mint, schedules[0].releaseTime).toString(); + return _create( + Buffer.from(seedWord), + payer, + owner, + mint, + tokenProgram, + schedules, + ); +} + +export async function unlock( + agent: SolanaAgentKit, + payer: PublicKey, + mint: PublicKey, + tokenProgram: PublicKey, + schedule: Schedule, +): Promise { + const seedWord = await new Seed(mint, schedule.releaseTime).toString(); + return _unlock(agent, Buffer.from(seedWord), payer, mint, tokenProgram); +} + +/** + * This function can be used to lock tokens + * @param seedWord Seed words used to derive the vesting account + * @param payer The fee payer of the transaction + * @param sourceTokenOwner The owner of the source token account (i.e where locked tokens are originating from) + * @param possibleSourceTokenPubkey The source token account (i.e where locked tokens are originating from), if null it defaults to the ATA + * @param destinationTokenPubkey The destination token account i.e where unlocked tokens will be transfered + * @param mintAddress The mint of the tokens being vested + * @param schedules The array of vesting schedules + * @param tokenProgram The token program for the mint + * @returns An array of `TransactionInstruction` + */ +export async function _create( + seedWord: Buffer | Uint8Array, + payer: PublicKey, + sourceTokenOwner: PublicKey, + mintAddress: PublicKey, + tokenProgram: PublicKey, + schedules: Array, +): Promise> { + const sourceTokenPubkey = getAssociatedTokenAddressSync( + mintAddress, + sourceTokenOwner, + true, + tokenProgram, + ); + const destinationTokenPubkey = sourceTokenPubkey; + + // Find the non reversible public key for the vesting contract via the seed + seedWord = seedWord.slice(0, 31); + const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( + [seedWord], + PROGRAM_ID, + ); + + const vestingTokenAccountKey = await getAssociatedTokenAddress( + mintAddress, + vestingAccountKey, + true, + tokenProgram, + ); + + seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); + + return [ + createInitInstruction( + SystemProgram.programId, + PROGRAM_ID, + payer, + vestingAccountKey, + [seedWord], + schedules.length, + ), + createAssociatedTokenAccountInstruction( + payer, + vestingTokenAccountKey, + vestingAccountKey, + mintAddress, + tokenProgram, + ), + createCreateInstruction( + PROGRAM_ID, + tokenProgram, + vestingAccountKey, + vestingTokenAccountKey, + sourceTokenOwner, + sourceTokenPubkey, + destinationTokenPubkey, + mintAddress, + schedules, + [seedWord], + ), + ]; +} + +export function createCreateInstruction( + vestingProgramId: PublicKey, + tokenProgramId: PublicKey, + vestingAccountKey: PublicKey, + vestingTokenAccountKey: PublicKey, + sourceTokenAccountOwnerKey: PublicKey, + sourceTokenAccountKey: PublicKey, + destinationTokenAccountKey: PublicKey, + mintAddress: PublicKey, + schedules: Array, + seeds: Array, +): TransactionInstruction { + const buffers = [ + Buffer.from(Uint8Array.from([1]).buffer), + Buffer.concat(seeds), + mintAddress.toBuffer(), + destinationTokenAccountKey.toBuffer(), + ]; + + schedules.forEach((s) => { + buffers.push(s.toBuffer()); + }); + + const data = Buffer.concat(buffers); + const keys = [ + { + pubkey: tokenProgramId, + isSigner: false, + isWritable: false, + }, + { + pubkey: vestingAccountKey, + isSigner: false, + isWritable: true, + }, + { + pubkey: vestingTokenAccountKey, + isSigner: false, + isWritable: true, + }, + { + pubkey: sourceTokenAccountOwnerKey, + isSigner: true, + isWritable: false, + }, + { + pubkey: sourceTokenAccountKey, + isSigner: false, + isWritable: true, + }, + { + pubkey: mintAddress, + isSigner: false, + isWritable: false, + }, + ]; + return new TransactionInstruction({ + keys, + programId: vestingProgramId, + data, + }); +} + +/** + * This function can be used to unlock vested tokens + * @param seedWord Seed words used to derive the vesting account + * @param payer The payer or owner of the locker - if the owner does not own the dest account then an error is returned + * @param mintAddress The mint of the vested tokens + * @param tokenProgram The token program for the mint + * @returns An array of `TransactionInstruction` + */ +export async function _unlock( + agent: SolanaAgentKit, + seedWord: Buffer | Uint8Array, + payer: PublicKey, + mintAddress: PublicKey, + tokenProgram: PublicKey, +): Promise> { + seedWord = seedWord.slice(0, 31); + const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( + [seedWord], + PROGRAM_ID, + ); + seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); + + const vestingTokenAccountKey = await getAssociatedTokenAddress( + mintAddress, + vestingAccountKey, + true, + tokenProgram, + ); + + console.log("VestingAccountKey", vestingAccountKey.toString()); + const accInfo = await agent.connection.getAccountInfo( + vestingAccountKey, + "processed", + ); + if (!accInfo) { + throw new Error("Vesting contract account is unavailable"); + } + const vestingInfo = ContractInfo.fromBuffer(accInfo!.data); + if (!vestingInfo) { + throw new Error("Vesting contract account is not initialized"); + } + + const res = await agent.connection.getMultipleAccountsInfo( + [vestingInfo.destinationAddress, mintAddress], + { commitment: "processed" }, + ); + const [destinationInfo, mintInfo] = res; + + const unlockIx = createUnlockInstruction( + PROGRAM_ID, + tokenProgram, + SYSVAR_CLOCK_PUBKEY, + vestingAccountKey, + vestingTokenAccountKey, + vestingInfo.destinationAddress, + mintAddress, + [seedWord], + ); + + if (!destinationInfo) { + //Check if signer is the destination (otherwise below create IX wont work) + const ata = getAssociatedTokenAddressSync( + mintAddress, + payer, + false, + mintInfo?.owner, + ); + if (ata.toString() !== vestingInfo.destinationAddress.toString()) { + throw new Error("Signer does not match destination address"); + } + + const createIx = createAssociatedTokenAccountInstruction( + payer, + vestingInfo.destinationAddress, + payer, + mintAddress, + mintInfo?.owner, + ); + + return [createIx, unlockIx]; + } + + return [unlockIx]; +} +export function createUnlockInstruction( + vestingProgramId: PublicKey, + tokenProgramId: PublicKey, + clockSysvarId: PublicKey, + vestingAccountKey: PublicKey, + vestingTokenAccountKey: PublicKey, + destinationTokenAccountKey: PublicKey, + mintAddress: PublicKey, + seeds: Array, +): TransactionInstruction { + const data = Buffer.concat([ + Buffer.from(Uint8Array.from([2]).buffer), + Buffer.concat(seeds), + ]); + + const keys = [ + { + pubkey: tokenProgramId, + isSigner: false, + isWritable: false, + }, + { + pubkey: clockSysvarId, + isSigner: false, + isWritable: false, + }, + { + pubkey: vestingAccountKey, + isSigner: false, + isWritable: true, + }, + { + pubkey: vestingTokenAccountKey, + isSigner: false, + isWritable: true, + }, + { + pubkey: destinationTokenAccountKey, + isSigner: false, + isWritable: true, + }, + { + pubkey: mintAddress, + isSigner: false, + isWritable: false, + }, + ]; + return new TransactionInstruction({ + keys, + programId: vestingProgramId, + data, + }); +} + +export async function lockAuthority( + mint: PublicKey, + tokenProgram: PublicKey, + schedule: Schedule, + authorityType: number, +) { + const seedWord = await new Seed(mint, schedule.releaseTime).toString(); + return _lockAuthority( + Buffer.from(seedWord), + mint, + tokenProgram, + authorityType, + ); +} + +export async function unlockAuthority( + mint: PublicKey, + tokenProgram: PublicKey, + schedule: Schedule, + authorityType: number, +) { + const seedWord = await new Seed(mint, schedule.releaseTime).toString(); + return _unlockAuthority( + Buffer.from(seedWord), + mint, + tokenProgram, + authorityType, + ); +} + +export async function _lockAuthority( + seedWord: Buffer | Uint8Array, + mintAddress: PublicKey, + tokenProgram: PublicKey, + authorityType: number, +) {} + +export async function _unlockAuthority( + seedWord: Buffer | Uint8Array, + mintAddress: PublicKey, + tokenProgram: PublicKey, + authorityType: number, +) {} diff --git a/src/tools/fluxbeam_metadata_management.ts b/src/tools/fluxbeam_metadata_management.ts new file mode 100644 index 00000000..97590d93 --- /dev/null +++ b/src/tools/fluxbeam_metadata_management.ts @@ -0,0 +1,287 @@ +import { + createUpdateMetadataAccountV2Instruction, + Metadata, + UpdateMetadataAccountArgsV2, +} from "@metaplex-foundation/mpl-token-metadata"; +import { TOKEN_METADATA_PROGRAM_ID } from "@onsol/tldparser"; +import { PublicKey } from "@solana/web3.js"; +import { + createUpdateFieldInstruction, + TOKEN_2022_PROGRAM_ID, + createUpdateAuthorityInstruction, +} from "@solana/spl-token"; +import { + Transaction, + ComputeBudgetProgram, + SystemProgram, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { pack } from "@solana/spl-token-metadata"; +import { FEE_ACCOUNT } from "../constants"; + +function isDevnet(agent: SolanaAgentKit) { + return agent.connection.rpcEndpoint.indexOf("devnet") > -1; +} + +export function metadataProgram(agent: SolanaAgentKit): PublicKey { + if (isDevnet(agent)) { + return new PublicKey("M1tgEZCz7fHqRAR3G5RLxU6c6ceQiZyFK7tzzy4Rof4"); + } + return TOKEN_METADATA_PROGRAM_ID; +} + +/** + * Returns the token metadata via mint + * @param mint + * @param metadataProgram + */ +async function getTokenMetadata( + agent: SolanaAgentKit, + mint: PublicKey, + programId?: PublicKey, +): Promise { + const metadataProgramId = programId ?? (await metadataProgram(agent)); + return getTokenMetadataRaw( + agent, + await getMetadataPDA(agent, mint, metadataProgramId), + ); +} + +/** + * Returns the token metadata via mint + * @param metadataAddress + */ +async function getTokenMetadataRaw( + agent: SolanaAgentKit, + metadataAddress: PublicKey, +) { + return Metadata.fromAccountAddress( + agent.connection, + metadataAddress, + "confirmed", + ); +} + +/** + * Returns the file metadata for given token metadata + * @param metadata + */ +async function getTokenFileMetadata(metadata: Metadata) { + if (!metadata || !metadata.data.uri.replace(/\0.*$/g, "")) { + return; + } + + return (await fetch(metadata.data.uri)).json(); +} + +/** + * Returns the token mints metadata PDA + * @param mint + * @param metadataProgram + */ +export async function getMetadataPDA( + agent: SolanaAgentKit, + mint: PublicKey, + programId?: PublicKey, +) { + const metadataProgramId = programId ?? metadataProgram(agent); + const [metaPDA] = PublicKey.findProgramAddressSync( + [Buffer.from("metadata"), metadataProgramId.toBuffer(), mint.toBuffer()], + metadataProgramId, + ); + return metaPDA; +} + +export async function getUpdateToken22MetadataTransaction( + agent: SolanaAgentKit, + mint: PublicKey, + metadata: any, + authority: PublicKey, + data: UpdateMetadataAccountArgsV2, + priorityFee: number, + metadataCID: string, +) { + console.log("getUpdateToken22MetadataTransaction", { + data, + metadata, + }); + + const transaction = new Transaction(); + const unitLimit = 90_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.transfer({ + fromPubkey: authority, + toPubkey: FEE_ACCOUNT, + lamports: 100_000_000, + }), + new TransactionInstruction({ + keys: [], + programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), + data: Buffer.from(metadataCID), + }), + ); + + if (data.data?.name !== metadata.name) { + console.debug( + "getUpdateToken22MetadataTransaction::name - ", + data.data?.name, + metadata.name, + ); + transaction.add( + createUpdateFieldInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: mint, + updateAuthority: new PublicKey(metadata.updateAuthority), + field: "name", + value: data.data?.name ?? "", // cast as a string as a + }), + ); + } + + if (data.data?.symbol !== metadata.symbol) { + console.debug( + "getUpdateToken22MetadataTransaction::symbol - ", + data.data?.symbol, + metadata.symbol, + ); + transaction.add( + createUpdateFieldInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: mint, + updateAuthority: new PublicKey(metadata.updateAuthority), + field: "symbol", + value: data.data?.symbol ?? "", + }), + ); + } + + if (data.data?.uri !== metadata.uri) { + console.debug("getUpdateToken22MetadataTransaction::uri - ", { + data: data.data?.uri, + meta: metadata.uri, + }); + transaction.add( + createUpdateFieldInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: mint, + updateAuthority: new PublicKey(metadata.updateAuthority), + field: "uri", + value: data?.data?.uri ?? "", + }), + ); + } + + console.debug( + "Adjust authority", + data.updateAuthority, + metadata.updateAuthority, + ); + if (data.updateAuthority !== metadata.updateAuthority) { + console.debug( + "getUpdateToken22MetadataTransaction::authority - ", + metadata.updateAuthority, + data.updateAuthority, + ); + const args = { + metadata: mint, + newAuthority: null, + oldAuthority: new PublicKey(metadata.updateAuthority), + programId: TOKEN_2022_PROGRAM_ID, + }; + + if (data.updateAuthority) { + args.newAuthority = new PublicKey(data.updateAuthority); + } + + transaction.add(createUpdateAuthorityInstruction(args)); + } + + const oldMetadataLength = + pack({ + additionalMetadata: metadata?.additionalMetadata || [], + mint: PublicKey.default, + symbol: metadata.symbol, + name: metadata.name, + uri: metadata.uri, + }).length + 4; + + const newMetadataLength = + pack({ + additionalMetadata: [], + mint: PublicKey.default, + symbol: data?.data?.symbol ?? "", + name: data?.data?.name ?? "", + uri: data?.data?.uri ?? "", + }).length + 4; + + const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( + newMetadataLength - oldMetadataLength, + ); + if (mintLamports > 0) { + transaction.add( + SystemProgram.transfer({ + fromPubkey: authority, + toPubkey: new PublicKey(mint), + lamports: mintLamports, + }), + ); + } + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = authority; + transaction.recentBlockhash = bhash.blockhash; + + return transaction; +} + +export async function getUpdateMetadataTransaction( + agent: SolanaAgentKit, + metadata: PublicKey, + authority: PublicKey, + data: UpdateMetadataAccountArgsV2, + priorityFee: number, + metadataCID: string, + programId?: PublicKey, +) { + const metadataProgramId = programId ?? (await metadataProgram(agent)); + const transaction = new Transaction(); + + const unitLimit = 100_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.transfer({ + fromPubkey: authority, + toPubkey: FEE_ACCOUNT, + lamports: 20000000, + }), + new TransactionInstruction({ + keys: [], + programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), + data: Buffer.from(metadataCID), + }), + createUpdateMetadataAccountV2Instruction( + { + metadata: metadata, + updateAuthority: authority, + }, + { + updateMetadataAccountArgsV2: data, + }, + metadataProgramId, + ), + ); + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = authority; + transaction.recentBlockhash = bhash.blockhash; + + return transaction; +} diff --git a/src/tools/fluxbeam_token_minting_controls.ts b/src/tools/fluxbeam_token_minting_controls.ts new file mode 100644 index 00000000..cbd68d1d --- /dev/null +++ b/src/tools/fluxbeam_token_minting_controls.ts @@ -0,0 +1,443 @@ +import { + AccountState, + AuthorityType, + ExtensionType, + TOKEN_2022_PROGRAM_ID, + createAssociatedTokenAccountInstruction, + createEnableRequiredMemoTransfersInstruction, + createInitializeDefaultAccountStateInstruction, + createInitializeImmutableOwnerInstruction, + createInitializeInstruction, + createInitializeInterestBearingMintInstruction, + createInitializeMetadataPointerInstruction, + createInitializeMintCloseAuthorityInstruction, + createInitializeMintInstruction, + createInitializeNonTransferableMintInstruction, + createInitializePermanentDelegateInstruction, + createInitializeTransferFeeConfigInstruction, + createMintToInstruction, + createSetAuthorityInstruction, + createThawAccountInstruction, + getAssociatedTokenAddressSync, + getMintLen, +} from "@solana/spl-token"; +import { + ComputeBudgetProgram, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { pack } from "@solana/spl-token-metadata"; +import { DataV2 } from "@metaplex-foundation/mpl-token-metadata"; +import { FEE_ACCOUNT } from "../constants"; + +export class CreateMintV1 { + name: string; + symbol: string; + metadataUri: string; + decimals: number; + totalSupply: bigint; + + mintAuthority: PublicKey; + freezeAuthority: PublicKey | null; + + sellerFeeBasisPoints: number = 0; + + //Do we mint the total supply to the user + mintTotalSupply: boolean; + + creators: [] | null = null; + + constructor( + name: string, + symbol: string, + metadataUri: string, + totalSupply: bigint, + mintAuthority: PublicKey, + freezeAuthority: PublicKey | null, + decimals = 6, + mintTotalSupply = true, + ) { + this.name = name; + this.symbol = symbol; + this.metadataUri = metadataUri; + this.totalSupply = totalSupply; + this.decimals = decimals; + this.mintTotalSupply = mintTotalSupply; + this.mintAuthority = mintAuthority; + this.freezeAuthority = freezeAuthority; + } + + setSellerFeeBasisPoints(bp: number) { + this.sellerFeeBasisPoints = bp; + } + + setCreators(creators: []) { + this.creators = creators; + } +} + +export class CreateMint extends CreateMintV1 { + extensions: ExtensionType[] = []; + extensionConfig = {}; + + metadata: any; + + setMetadata(meta: any) { + this.metadata = meta; + } + + metadataLength(): number { + if (!this.metadata) { + return 0; + } + + return ( + pack({ + additionalMetadata: this.metadata?.additionalMetadata || [], + mint: PublicKey.default, + symbol: this.metadata.symbol, + name: this.metadata.name, + uri: this.metadata.uri, + }).length + 4 + ); + } + + addExtension(ext: ExtensionType, config: object = {}) { + this.extensions.push(ext); + //@ts-ignore + this.extensionConfig[ext] = config; + } +} + +export async function getCreateMintTransaction( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMint: PublicKey, + config: CreateMint, + priorityFee: number, + metadataCID: string, +) { + const mintLen = getMintLen(config.extensions); + const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( + mintLen + config.metadataLength(), + ); + + const ata = getAssociatedTokenAddressSync( + tokenMint, + owner, + true, + TOKEN_2022_PROGRAM_ID, + ); + + const ON_CHAIN_METADATA = { + name: config.name, + symbol: config.symbol, + uri: config.metadataUri, + sellerFeeBasisPoints: 0, + uses: null, + creators: null, + collection: null, + } as DataV2; + + const unitLimit = 120_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + const txn = new Transaction().add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.createAccount({ + fromPubkey: owner, + newAccountPubkey: tokenMint, + space: mintLen, + lamports: mintLamports, + programId: TOKEN_2022_PROGRAM_ID, + }), + SystemProgram.transfer({ + fromPubkey: owner, + toPubkey: FEE_ACCOUNT, + lamports: 20000000, + }), + new TransactionInstruction({ + keys: [], + programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), + data: Buffer.from(metadataCID), + }), + ); + + let isDefaultFrozen = false; + config.extensions.forEach((ext: string | number) => { + //@ts-ignore + const cfg = config.extensionConfig[ext]; + // eslint-disable-next-line no-console + console.log(`${ext}`, cfg); + + switch (ext) { + case ExtensionType.TransferFeeConfig: + ON_CHAIN_METADATA.sellerFeeBasisPoints = cfg.feeBasisPoints; //Update so it reflects same as royalties + txn.add( + createInitializeTransferFeeConfigInstruction( + tokenMint, + cfg.transfer_fee_config_authority + ? cfg.transfer_fee_config_authority + : config.mintAuthority, //Config Auth + cfg.withdraw_withheld_authority + ? cfg.withdraw_withheld_authority + : config.mintAuthority, //Withdraw Auth + cfg.feeBasisPoints, + cfg.maxFee, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.InterestBearingConfig: + txn.add( + createInitializeInterestBearingMintInstruction( + tokenMint, + owner, //Rate Auth + cfg.rate * 100, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.PermanentDelegate: + txn.add( + createInitializePermanentDelegateInstruction( + tokenMint, + new PublicKey(cfg.address), + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.NonTransferable: + txn.add( + createInitializeNonTransferableMintInstruction( + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.ImmutableOwner: + txn.add( + createInitializeImmutableOwnerInstruction( + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.MemoTransfer: + txn.add( + createEnableRequiredMemoTransfersInstruction( + tokenMint, + owner, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + if (config.mintTotalSupply) { + txn.add( + new TransactionInstruction({ + keys: [{ pubkey: owner, isSigner: true, isWritable: true }], + data: Buffer.from("Mint To Memo", "utf-8"), + programId: new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", + ), + }), + ); + } + break; + case ExtensionType.DefaultAccountState: + isDefaultFrozen = cfg.state === AccountState.Frozen; + txn.add( + createInitializeDefaultAccountStateInstruction( + tokenMint, + cfg.state, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.MintCloseAuthority: + txn.add( + createInitializeMintCloseAuthorityInstruction( + tokenMint, + config.mintAuthority, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.MetadataPointer: + txn.add( + createInitializeMetadataPointerInstruction( + tokenMint, + config.mintAuthority, + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + default: + console.error("Unsupported extension", ext); + break; + } + }); + + //Init the mint + txn.add( + createInitializeMintInstruction( + tokenMint, + config.decimals, + config.mintAuthority, + config.freezeAuthority, + TOKEN_2022_PROGRAM_ID, + ), + ); + + if (config.metadata) { + txn.add( + createInitializeInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: tokenMint, + updateAuthority: config.mintAuthority, + mint: tokenMint, + mintAuthority: config.mintAuthority, + name: config.metadata.name, + symbol: config.metadata.symbol, + uri: config.metadata.uri, + }), + ); + } + + if (config.mintTotalSupply) { + txn.add( + createAssociatedTokenAccountInstruction( + owner, + ata, + owner, + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + + if (isDefaultFrozen) { + txn.add( + createThawAccountInstruction( + ata, + tokenMint, + owner, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + } + + txn.add( + createMintToInstruction( + tokenMint, + ata, + owner, + config.totalSupply, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + } + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + txn.feePayer = owner; + txn.recentBlockhash = bhash.blockhash; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(txn, [agent.wallet]); + + return signature; +} + +export async function getMintToTransaction( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMint: PublicKey, + amount: bigint, + program = TOKEN_2022_PROGRAM_ID, +) { + const txn = new Transaction(); + const ata = getAssociatedTokenAddressSync(tokenMint, owner, true, program); + + const dstIfo = await agent.connection.getAccountInfo(ata, "confirmed"); + if (!dstIfo) { + txn.add( + createAssociatedTokenAccountInstruction( + owner, + ata, + owner, + tokenMint, + program, + ), + ); + } + + txn.add(createMintToInstruction(tokenMint, ata, owner, amount, [], program)); + + const { blockhash } = await agent.connection.getLatestBlockhash("confirmed"); + txn.feePayer = owner; + txn.recentBlockhash = blockhash; + // Sign and send transaction + const signature = await agent.connection.sendTransaction(txn, [agent.wallet]); + + return signature; +} + +export async function getSetAuthorityTransaction( + agent: SolanaAgentKit, + owner: PublicKey, + mint: PublicKey, + authority: AuthorityType, + newAuthority: PublicKey | null, + programID = TOKEN_2022_PROGRAM_ID, + priorityFee: number = 100_000_000_000, +) { + const txn = new Transaction(); + txn.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: Math.floor(priorityFee / 10_000), + }), + ); + txn.add( + createSetAuthorityInstruction( + mint, + owner, + authority, + newAuthority, + [], + programID, + ), + ); + + const { blockhash } = await agent.connection.getLatestBlockhash("confirmed"); + txn.feePayer = owner; + txn.recentBlockhash = blockhash; + + const signature = await agent.connection.sendTransaction(txn, [agent.wallet]); + + return signature; +} + +export async function getRevokeAuthorityTransaction( + agent: SolanaAgentKit, + owner: PublicKey, + mint: PublicKey, + authority: AuthorityType, + programID = TOKEN_2022_PROGRAM_ID, + priorityFee: number = 100_000_000_000, +) { + return getSetAuthorityTransaction( + agent, + owner, + mint, + authority, + null, + programID, + priorityFee, + ); +} diff --git a/src/tools/fluxbeam_token_swap.ts b/src/tools/fluxbeam_token_swap.ts new file mode 100644 index 00000000..8d714675 --- /dev/null +++ b/src/tools/fluxbeam_token_swap.ts @@ -0,0 +1,78 @@ +import { VersionedTransaction, PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../index"; +import { TOKENS, DEFAULT_OPTIONS } from "../constants"; +import { getMint } from "@solana/spl-token"; + +/** + * Swap tokens using FluxBeam DEX + * @param agent SolanaAgentKit instance + * @param outputMint Target token mint address + * @param inputAmount Amount to swap (in token decimals) + * @param inputMint Source token mint address (defaults to USDC) + * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) + * @returns Transaction signature + */ +export async function fluxBeamSwap( + agent: SolanaAgentKit, + outputMint: PublicKey, + inputAmount: number, + inputMint: PublicKey = TOKENS.USDC, + slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, +): Promise { + try { + // Check if input token is native SOL + const isNativeSol = inputMint.equals(TOKENS.SOL); + + // For native SOL, we use LAMPORTS_PER_SOL, otherwise fetch mint info + const inputDecimals = isNativeSol + ? 9 // SOL always has 9 decimals + : (await getMint(agent.connection, inputMint)).decimals; + + // Calculate the correct amount based on actual decimals + const scaledAmount = inputAmount * Math.pow(10, inputDecimals); + + const FLUXBEAM_API = `https://api.fluxbeam.xyz/v1`; + const quoteResponse = await ( + await fetch( + `${FLUXBEAM_API}/quote?` + + `inputMint=${isNativeSol ? TOKENS.SOL.toString() : inputMint.toString()}` + + `&outputMint=${outputMint.toString()}` + + `&amount=${scaledAmount}` + + `&slippageBps=${slippageBps}`, + ) + ).json(); + + console.log(quoteResponse); + const response = await ( + await fetch(`${FLUXBEAM_API}/swap/transaction`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + quoteResponse, + userPublicKey: agent.wallet_address.toString(), + wrapAndUnwrapSol: true, + }), + }) + ).json(); + console.log(response); + // Deserialize transaction + const swapTransactionBuf = Buffer.from(response.transaction, "base64"); + + const transaction = VersionedTransaction.deserialize(swapTransactionBuf); + // Sign and send transaction + transaction.sign([agent.wallet]); + + const signature = agent.connection.sendRawTransaction( + transaction.serialize(), + { + maxRetries: 3, + skipPreflight: true, + }, + ); + return signature; + } catch (error: any) { + throw new Error(`Swap failed: ${error.message}`); + } +} diff --git a/src/tools/fluxbeam_transfer.ts b/src/tools/fluxbeam_transfer.ts new file mode 100644 index 00000000..df5058e6 --- /dev/null +++ b/src/tools/fluxbeam_transfer.ts @@ -0,0 +1,97 @@ +import { SolanaAgentKit } from "../agent"; +import { + TOKEN_2022_PROGRAM_ID, + createAssociatedTokenAccountInstruction, + createTransferCheckedInstruction, +} from "@solana/spl-token"; +import { getAssociatedTokenPDA } from "../utils/fluxbeam_utils"; +import { PublicKey, SystemProgram, Transaction } from "@solana/web3.js"; + +export async function fluxbeamTransferSplToken( + agent: SolanaAgentKit, + mint: PublicKey, + dstOwner: PublicKey, + amount: number, + decimals: number, + program = TOKEN_2022_PROGRAM_ID, + allowOwnerOffCurve = false, +) { + const srcAta = await getAssociatedTokenPDA( + mint, + agent.wallet_address, + program, + allowOwnerOffCurve, + ); + const dstAta = await getAssociatedTokenPDA( + mint, + dstOwner, + program, + allowOwnerOffCurve, + ); + + const transaction = new Transaction(); + + const dstIfo = await agent.connection.getAccountInfo(dstAta, "confirmed"); + if (!dstIfo) { + transaction.add( + createAssociatedTokenAccountInstruction( + agent.wallet_address, + dstAta, + dstOwner, + mint, + program, + ), + ); + } + + transaction.add( + createTransferCheckedInstruction( + srcAta, //Src Ata + mint, //Mint + dstAta, + agent.wallet_address, + amount, //TODO check decimals?? + decimals, + [], + program, + ), + ); + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = agent.wallet_address; + transaction.recentBlockhash = bhash.blockhash; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + + return signature; +} + +export async function fluxbeamTransfer( + agent: SolanaAgentKit, + dstOwner: PublicKey, + amount: number, +) { + const transaction = new Transaction(); + + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: dstOwner, + lamports: amount, + }), + ); + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = agent.wallet_address; + transaction.recentBlockhash = bhash.blockhash; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + + return signature; +} diff --git a/src/tools/fluxbeam_v1_token_creation.ts b/src/tools/fluxbeam_v1_token_creation.ts new file mode 100644 index 00000000..66cb95e7 --- /dev/null +++ b/src/tools/fluxbeam_v1_token_creation.ts @@ -0,0 +1,164 @@ +import { + createAssociatedTokenAccountInstruction, + createInitializeMintInstruction, + createMintToInstruction, + getAssociatedTokenAddressSync, + MINT_SIZE, + TOKEN_PROGRAM_ID, +} from "@solana/spl-token"; +import { + createCreateMetadataAccountV3Instruction, + CreateMetadataAccountV3InstructionAccounts, + DataV2, + PROGRAM_ID, +} from "@metaplex-foundation/mpl-token-metadata"; +import { none, some } from "@metaplex-foundation/umi-options"; +import { + ComputeBudgetProgram, + Connection, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { FEE_ACCOUNT } from "../constants"; + +export interface CreateMintV1Config { + name: string; + symbol: string; + metadataUri: string; + decimals: number; + totalSupply: bigint; + mintAuthority: PublicKey; + freezeAuthority: PublicKey | null; + sellerFeeBasisPoints?: number; + mintTotalSupply?: boolean; // do we want to mint the supply to the user? + creators?: [] | null; +} + +async function getCreateMintTransaction( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMint: PublicKey, + config: CreateMintV1Config, + priorityFee: number, + metadataCID: string, +) { + const mintLamports = + await agent.connection.getMinimumBalanceForRentExemption(MINT_SIZE); + + const ata = getAssociatedTokenAddressSync( + tokenMint, + owner, + true, + TOKEN_PROGRAM_ID, + ); + + const [metadataPDA] = PublicKey.findProgramAddressSync( + [Buffer.from("metadata"), PROGRAM_ID.toBuffer(), tokenMint.toBuffer()], + PROGRAM_ID, + ); + + const ON_CHAIN_METADATA = { + name: config.name, + symbol: config.symbol, + uri: config.metadataUri, + sellerFeeBasisPoints: config.sellerFeeBasisPoints, + creators: config.creators, + collection: null, + uses: null, + } as DataV2; + + const unitLimit = 100_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + const txn = new Transaction().add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ + microLamports: unitPrice, + }), + SystemProgram.transfer({ + fromPubkey: owner, + toPubkey: FEE_ACCOUNT, + lamports: 100_000_000, + }), + new TransactionInstruction({ + keys: [], + programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), + data: Buffer.from(metadataCID), + }), + SystemProgram.createAccount({ + fromPubkey: owner, + newAccountPubkey: tokenMint, + space: MINT_SIZE, + lamports: mintLamports, + programId: TOKEN_PROGRAM_ID, + }), + ); + + txn.add( + createInitializeMintInstruction( + tokenMint, + config.decimals, + config.mintAuthority, + config.freezeAuthority, + TOKEN_PROGRAM_ID, + ), + createCreateMetadataAccountV3Instruction( + { + metadata: metadataPDA, + mint: tokenMint, + mintAuthority: config.mintAuthority, + payer: owner, + updateAuthority: owner, + }, + { + createMetadataAccountArgsV3: { + data: ON_CHAIN_METADATA, + isMutable: true, + collectionDetails: null, + }, + }, + PROGRAM_ID, + ), + createAssociatedTokenAccountInstruction( + owner, + ata, + owner, + tokenMint, + TOKEN_PROGRAM_ID, + ), + ); + + if (config.mintTotalSupply) { + txn.add( + createMintToInstruction( + tokenMint, + ata, + owner, + config.totalSupply, + [], + TOKEN_PROGRAM_ID, + ), + ); + } + + const bhash = await agent.connection.getLatestBlockhash("confirmed"); + txn.feePayer = owner; + txn.recentBlockhash = bhash.blockhash; + return txn; +} + +/** + * Returns the token mints metadata PDA + * @param mint + * @param metadataProgram + */ +function getMetadataPDA(mint: PublicKey, metadataProgram = PROGRAM_ID) { + //@ts-ignore + const [metaPDA] = PublicKey.findProgramAddressSync( + [Buffer.from("metadata"), metadataProgram.toBuffer(), mint.toBuffer()], + metadataProgram, + ); + return metaPDA; +} diff --git a/src/tools/fluxbeam_v2_token_creation.ts b/src/tools/fluxbeam_v2_token_creation.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/tools/fluxbeam_withheld_amounts_tracking.ts b/src/tools/fluxbeam_withheld_amounts_tracking.ts new file mode 100644 index 00000000..b0cbf81e --- /dev/null +++ b/src/tools/fluxbeam_withheld_amounts_tracking.ts @@ -0,0 +1,223 @@ +import { web3 } from "@coral-xyz/anchor"; +import { SolanaAgentKit } from "../agent"; +import { + createAssociatedTokenAccountInstruction, + createHarvestWithheldTokensToMintInstruction, + createWithdrawWithheldTokensFromAccountsInstruction, + createWithdrawWithheldTokensFromMintInstruction, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { ComputeBudgetProgram } from "@solana/web3.js"; +import { accountExists, getAssociatedTokenPDA } from "../utils/fluxbeam_utils"; +import { PublicKey, Transaction } from "@solana/web3.js"; + +/** + * Returns array of transactions needed to claim all withheld tokens for a given mint + * @agent SolanaAgentKit instance + * @param mint + * @param payer + * @param authority + * @param srcAccounts + */ +export async function getClaimWitheldTokens( + agent: SolanaAgentKit, + mint: PublicKey, + authority: PublicKey, + srcAccounts: PublicKey[], + payer?: PublicKey, +): Promise { + try { + const signatures: string[] = []; + + //Get destination account + const dstAcc = await getAssociatedTokenPDA( + mint, + payer || agent.wallet_address, + TOKEN_2022_PROGRAM_ID, + ); + + const { blockhash } = + await agent.connection.getLatestBlockhash("confirmed"); + + if (!(await accountExists(agent, dstAcc))) { + const transaction = new Transaction().add( + ComputeBudgetProgram.setComputeUnitLimit({ units: 42_000 }), + createAssociatedTokenAccountInstruction( + payer || agent.wallet_address, + dstAcc, + payer || agent.wallet_address, + mint, + TOKEN_2022_PROGRAM_ID, + ), + ); + + //Withdraw from mint account too + transaction.add( + createWithdrawWithheldTokensFromMintInstruction( + mint, + dstAcc, + payer || agent.wallet_address, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + + transaction.feePayer = payer || agent.wallet_address; + transaction.recentBlockhash = blockhash; + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + signatures.push(signature); + } else { + const transaction = new Transaction(); + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), + createWithdrawWithheldTokensFromMintInstruction( + mint, + dstAcc, + agent.wallet_address, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + transaction.feePayer = payer || agent.wallet_address; + transaction.recentBlockhash = blockhash; + + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + signatures.push(signature); + } + + for (let i = 0; i < srcAccounts.length; i += 30) { + const transaction = new Transaction().add( + createWithdrawWithheldTokensFromAccountsInstruction( + mint, + dstAcc, + authority, + [], + srcAccounts.slice(i, i + 30), + TOKEN_2022_PROGRAM_ID, + ), + ); + + transaction.feePayer = payer || agent.wallet_address; + transaction.recentBlockhash = blockhash; + + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + signatures.push(signature); + } + return signatures; + } catch (error: any) { + throw new Error(`Failed to claim withheld tokens: ${error.message}`); + } +} + +/** + * Returns transaction to claim withheld tokens from the mint account + * @agent SolanaAgentKit instance + * @param mint Token mint address + * @param payer + * @returns Transaction signature + */ +export async function getClaimWitheldTokensFromMint( + agent: SolanaAgentKit, + mint: PublicKey, + payer?: PublicKey, +) { + try { + //get destination acc + const dstAcc = await getAssociatedTokenPDA( + mint, + payer || agent.wallet_address, + TOKEN_2022_PROGRAM_ID, + ); + const transaction = new Transaction(); + + if (!(await accountExists(agent, dstAcc))) { + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: 42_000 }), + createAssociatedTokenAccountInstruction( + payer || agent.wallet_address, + dstAcc, + payer || agent.wallet_address, + mint, + TOKEN_2022_PROGRAM_ID, + ), + ); + } else { + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), + ); + } + + //Withdraw from mint account too + transaction.add( + createWithdrawWithheldTokensFromMintInstruction( + mint, + dstAcc, + payer || agent.wallet_address, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + + // Set transaction parameters + const { blockhash } = + await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = payer || agent.wallet_address; + transaction.recentBlockhash = blockhash; + + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + + return signature; + } catch (error: any) { + throw new Error(`Failed to claim tokens from mint: ${error.message}`); + } +} + +/** + * Harvests withheld tokens to mint (permissionless) + * @param agent SolanaAgentKit instance + * @param mint Token mint address + * @param srcAccounts Source accounts to harvest from + * @returns Array of transaction signatures + */ +export async function getClaimWithheldTokensToMint( + agent: SolanaAgentKit, + mint: PublicKey, + srcAccounts: PublicKey[], + payer?: PublicKey, +) { + try { + const signatures = []; + + for (let i = 0; i < srcAccounts.length; i += 30) { + const transaction = new Transaction().add( + createHarvestWithheldTokensToMintInstruction( + mint, + srcAccounts.slice(i, i + 30), + ), + ); + + const { blockhash } = + await agent.connection.getLatestBlockhash("confirmed"); + transaction.feePayer = payer || agent.wallet_address; + transaction.recentBlockhash = blockhash; + // Sign and send transaction + const signature = await agent.connection.sendTransaction(transaction, [ + agent.wallet, + ]); + + signatures.push(signature); + } + return signatures; + } catch (error: any) { + throw new Error(`Failed to harvest tokens to mint: ${error.message}`); + } +} diff --git a/src/tools/fluxbeam_wrap_and_unwrap_sol.ts b/src/tools/fluxbeam_wrap_and_unwrap_sol.ts new file mode 100644 index 00000000..087be511 --- /dev/null +++ b/src/tools/fluxbeam_wrap_and_unwrap_sol.ts @@ -0,0 +1,109 @@ +import { + createAssociatedTokenAccountInstruction, + createCloseAccountInstruction, + createSyncNativeInstruction, + getAssociatedTokenAddressSync, +} from "@solana/spl-token"; +import { SolanaAgentKit } from "../agent"; +import { + PublicKey, + SystemProgram, + TransactionInstruction, +} from "@solana/web3.js"; +import { TOKENS } from "../constants"; +import { makeAndSendAndConfirmTransaction } from "../utils/fluxbeam_utils"; + +export async function getWrapSOLInstructions( + agent: SolanaAgentKit, + owner: PublicKey, + amount: number, +): Promise { + const ixs: TransactionInstruction[] = []; + const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); + const ataInfo = await agent.connection + .getTokenAccountBalance(ata) + .catch(() => {}); + + if (ataInfo) { + if (Number(ataInfo?.value.amount) >= amount) { + return ixs; + } + } + + if (!ataInfo) { + ixs.push( + createAssociatedTokenAccountInstruction(owner, ata, owner, TOKENS.wSOL), + ); + } + if (amount > 0) { + ixs.push( + SystemProgram.transfer({ + fromPubkey: owner, + toPubkey: ata, + lamports: amount - Number(ataInfo?.value.amount || 0), + }), + createSyncNativeInstruction(ata), + ); + } + + return ixs; +} + +export function getUnwrapSOLInstruction( + owner: PublicKey, +): TransactionInstruction { + const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); + return createCloseAccountInstruction(ata, owner, owner); +} + +/** + * Wraps SOL to wSOL for the specified amount + * @param agent SolanaAgentKit instance + * @param amount Amount of SOL to wrap (in lamports) + * @returns Transaction signature + */ +export async function wrapSOL( + agent: SolanaAgentKit, + amount: number, +): Promise { + try { + const instructions = await getWrapSOLInstructions( + agent, + agent.wallet_address, + amount, + ); + + if (instructions.length === 0) { + throw new Error("No wrap instructions needed"); + } + + return await makeAndSendAndConfirmTransaction( + agent.connection, + instructions, + [agent.wallet], + agent.wallet, + ); + } catch (error: any) { + throw new Error(`SOL wrapping failed: ${error.message}`); + } +} + +/** + * Unwraps wSOL back to SOL + * @param agent SolanaAgentKit instance + * @returns Transaction signature + */ +export async function unwrapSOL(agent: SolanaAgentKit): Promise { + try { + const instruction = getUnwrapSOLInstruction(agent.wallet_address); + + return await makeAndSendAndConfirmTransaction( + agent.connection, + [instruction], + [agent.wallet], + agent.wallet, + ); + } catch (error: any) { + throw new Error(`SOL unwrapping failed: ${error.message}`); + } +} diff --git a/src/utils/fluxbeam_utils.ts b/src/utils/fluxbeam_utils.ts new file mode 100644 index 00000000..8caaa4e3 --- /dev/null +++ b/src/utils/fluxbeam_utils.ts @@ -0,0 +1,70 @@ +import { + getAssociatedTokenAddressSync, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { + Connection, + Keypair, + PublicKey, + Signer, + TransactionInstruction, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { confirmTransaction } from "@raydium-io/raydium-sdk-v2"; + +/** + * Returns the token mints account for a given user + * @param owner + * @param mint + * @param program + * @param allowOwnerOffCurve + */ +export async function getAssociatedTokenPDA( + mint: PublicKey, + owner: PublicKey, + program = TOKEN_2022_PROGRAM_ID, + allowOwnerOffCurve = false, +) { + return getAssociatedTokenAddressSync( + mint, + owner, + allowOwnerOffCurve, + program, + ); +} + +export async function accountExists(agent: SolanaAgentKit, account: PublicKey) { + const acc = await agent.connection + .getAccountInfo(account, "confirmed") + .catch((e) => {}); + return !!acc; +} + +// Send a versioned transaction with less boilerplate +// https://www.quicknode.com/guides/solana-development/transactions/how-to-use-versioned-transactions-on-solana +// TODO: maybe we should expose this? To discuss. +export const makeAndSendAndConfirmTransaction = async ( + connection: Connection, + instructions: Array, + signers: Array, + payer: Keypair, +) => { + const latestBlockhash = (await connection.getLatestBlockhash("max")) + .blockhash; + + const messageV0 = new TransactionMessage({ + payerKey: payer.publicKey, + recentBlockhash: latestBlockhash, + instructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + transaction.sign(signers); + + const signature = await connection.sendTransaction(transaction); + + await confirmTransaction(connection, signature); + + return signature; +}; From 2aa9ae77a44d45423647076bb4cd871fcc058c9f Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Tue, 14 Jan 2025 08:31:34 +0100 Subject: [PATCH 02/11] feat:added more methods, action and their langchain tool classes --- pnpm-lock.yaml | 1171 +++++++++++++++-- src/actions/fluxbeam/bridgeToken.ts | 77 ++ src/actions/fluxbeam/burnToken.ts | 54 + src/actions/fluxbeam/createPool.ts | 57 + src/actions/fluxbeam/createV1Token.ts | 54 + src/actions/fluxbeam/createV2Token.ts | 80 ++ .../fluxbeam/fluxbeamSubmitFeeClaim.ts | 47 + .../fluxbeam/fluxbeamSubmitFeePayment.ts | 87 ++ src/actions/fluxbeam/fluxbeamTransfer.ts | 88 ++ src/actions/fluxbeam/mintToken.ts | 0 src/actions/fluxbeam/revokeMintAuthority.ts | 63 + src/actions/fluxbeam/setMintAuthority.ts | 62 + src/actions/fluxbeam/unwrapSol.ts | 33 + src/actions/fluxbeam/updateV1TokenMetadata.ts | 0 src/actions/fluxbeam/updateV2TokenMetadata.ts | 0 src/actions/fluxbeam/wrapSol.ts | 37 + src/agent/index.ts | 293 ++++- src/constants/index.ts | 5 + src/langchain/fluxbeam/bridge_token.ts | 53 + src/langchain/fluxbeam/burn_token.ts | 47 + src/langchain/fluxbeam/create_mint_v1.ts | 48 + src/langchain/fluxbeam/create_mint_v2.ts | 66 + src/langchain/fluxbeam/create_pool.ts | 48 + src/langchain/fluxbeam/fee_management.ts | 79 ++ src/langchain/fluxbeam/swap.ts | 49 + .../fluxbeam/token_minting_controls.ts | 141 ++ src/langchain/fluxbeam/transfer.ts | 90 ++ .../fluxbeam/update_v1_token_metadata.ts | 46 + .../fluxbeam/update_v2_token_metadata.ts | 44 + .../fluxbeam/withheld_amounts_tracking.ts | 118 ++ src/langchain/fluxbeam/wrap_and_unwrap_sol.ts | 71 + src/langchain/index.ts | 20 +- src/tools/fluxbeam_bridge_tokens.ts | 120 ++ src/tools/fluxbeam_burn_token.ts | 37 +- src/tools/fluxbeam_create_pool.ts | 23 +- src/tools/fluxbeam_fee_management.ts | 163 +-- src/tools/fluxbeam_fetch_pools.ts | 31 - src/tools/fluxbeam_liquidity_management.ts | 558 -------- src/tools/fluxbeam_lock_token.ts | 784 +++++------ src/tools/fluxbeam_metadata_management.ts | 331 +---- src/tools/fluxbeam_token_airdrop.ts | 0 src/tools/fluxbeam_token_minting_controls.ts | 443 +------ src/tools/fluxbeam_token_swap.ts | 53 +- src/tools/fluxbeam_transfer.ts | 100 +- src/tools/fluxbeam_v1_token_creation.ts | 227 ++-- src/tools/fluxbeam_v2_token_creation.ts | 480 +++++++ .../fluxbeam_withheld_amounts_tracking.ts | 69 +- src/tools/fluxbeam_wrap_and_unwrap_sol.ts | 102 +- src/tools/index.ts | 12 + src/types/index.ts | 18 + src/utils/FluxbeamClient.ts | 117 ++ src/utils/fluxbeam_utils.ts | 70 - test/fluxbeam_bridge_tokens.test.ts | 31 + test/fluxbeam_burn_token.test.ts | 25 + test/fluxbeam_create_pool.test.ts | 32 + test/fluxbeam_create_token_v1.test.ts | 40 + test/fluxbeam_create_token_v2.test.ts | 68 + test/fluxbeam_metadata_management.test.ts | 68 + test/fluxbeam_token_minting_controls.test.ts | 92 ++ test/fluxbeam_token_swap.test.ts | 33 + test/fluxbeam_transfer.test.ts | 42 + test/fluxbeam_wrap_and_unwrap_sol.test.ts | 31 + test/pic5.jpg | Bin 0 -> 55568 bytes 63 files changed, 5094 insertions(+), 2234 deletions(-) create mode 100644 src/actions/fluxbeam/bridgeToken.ts create mode 100644 src/actions/fluxbeam/burnToken.ts create mode 100644 src/actions/fluxbeam/createPool.ts create mode 100644 src/actions/fluxbeam/createV1Token.ts create mode 100644 src/actions/fluxbeam/createV2Token.ts create mode 100644 src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts create mode 100644 src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts create mode 100644 src/actions/fluxbeam/fluxbeamTransfer.ts create mode 100644 src/actions/fluxbeam/mintToken.ts create mode 100644 src/actions/fluxbeam/revokeMintAuthority.ts create mode 100644 src/actions/fluxbeam/setMintAuthority.ts create mode 100644 src/actions/fluxbeam/unwrapSol.ts create mode 100644 src/actions/fluxbeam/updateV1TokenMetadata.ts create mode 100644 src/actions/fluxbeam/updateV2TokenMetadata.ts create mode 100644 src/actions/fluxbeam/wrapSol.ts create mode 100644 src/langchain/fluxbeam/bridge_token.ts create mode 100644 src/langchain/fluxbeam/burn_token.ts create mode 100644 src/langchain/fluxbeam/create_mint_v1.ts create mode 100644 src/langchain/fluxbeam/create_mint_v2.ts create mode 100644 src/langchain/fluxbeam/create_pool.ts create mode 100644 src/langchain/fluxbeam/fee_management.ts create mode 100644 src/langchain/fluxbeam/swap.ts create mode 100644 src/langchain/fluxbeam/token_minting_controls.ts create mode 100644 src/langchain/fluxbeam/transfer.ts create mode 100644 src/langchain/fluxbeam/update_v1_token_metadata.ts create mode 100644 src/langchain/fluxbeam/update_v2_token_metadata.ts create mode 100644 src/langchain/fluxbeam/withheld_amounts_tracking.ts create mode 100644 src/langchain/fluxbeam/wrap_and_unwrap_sol.ts create mode 100644 src/tools/fluxbeam_bridge_tokens.ts delete mode 100644 src/tools/fluxbeam_fetch_pools.ts create mode 100644 src/tools/fluxbeam_token_airdrop.ts create mode 100644 src/utils/FluxbeamClient.ts delete mode 100644 src/utils/fluxbeam_utils.ts create mode 100644 test/fluxbeam_bridge_tokens.test.ts create mode 100644 test/fluxbeam_burn_token.test.ts create mode 100644 test/fluxbeam_create_pool.test.ts create mode 100644 test/fluxbeam_create_token_v1.test.ts create mode 100644 test/fluxbeam_create_token_v2.test.ts create mode 100644 test/fluxbeam_metadata_management.test.ts create mode 100644 test/fluxbeam_token_minting_controls.test.ts create mode 100644 test/fluxbeam_token_swap.test.ts create mode 100644 test/fluxbeam_transfer.test.ts create mode 100644 test/fluxbeam_wrap_and_unwrap_sol.test.ts create mode 100644 test/pic5.jpg diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a16a5de..322335d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,11 @@ importers: '@bonfida/spl-name-service': specifier: ^3.0.7 version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@bonfida/token-vesting': + specifier: 0.0.9 + version: 0.0.9(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@cks-systems/manifest-sdk': specifier: 0.1.59 version: 0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -73,7 +78,13 @@ importers: 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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13) + '@metaplex-foundation/umi-options': + specifier: ^0.8.9 + version: 0.8.9 + '@metaplex-foundation/umi-uploader-irys': + specifier: ^1.0.0 + version: 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -289,6 +300,16 @@ packages: '@brokerloop/ttlcache@3.2.3': resolution: {integrity: sha512-kZWoyJGBYTv1cL5oHBYEixlJysJBf2RVnub3gbclD+dwaW9aKubbHzbZ9q1q6bONosxaOqMsoBorOrZKzBDiqg==} + '@cfworker/json-schema@4.0.3': + resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@cfworker/json-schema@4.1.0': + resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} + '@bonfida/token-vesting@0.0.9': + resolution: {integrity: sha512-EzTRdsbiK4ugEybe6Av3iNTjG1rZOvFD2cSa0jBO+czfw45Pxscu0JPKaVOkII9pIImfPNZTh0U9k67jgbd3GQ==} + peerDependencies: + '@solana/spl-token': 0.3.7 + '@solana/web3.js': ^1.73.2 + '@cfworker/json-schema@4.0.3': resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} @@ -713,6 +734,31 @@ packages: deprecated: 'Arweave support is deprecated - We recommend migrating to the Irys datachain: https://migrate-to.irys.xyz/' hasBin: true + '@irys/arweave@0.0.2': + resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} + + '@irys/bundles@0.0.1': + resolution: {integrity: sha512-yeQNzElERksFbfbNxJQsMkhtkI3+tNqIMZ/Wwxh76NVBmCnCP5huefOv7ET0MOO7TEQL+TqvKSqmFklYSvTyHw==} + + '@irys/query@0.0.9': + resolution: {integrity: sha512-uBIy8qeOQupUSBzR+1KU02JJXFp5Ue9l810PIbBF/ylUB8RTreUFkyyABZ7J3FUaOIXFYrT7WVFSJSzXM7P+8w==} + engines: {node: '>=16.10.0'} + + '@irys/upload-core@0.0.9': + resolution: {integrity: sha512-Ha4pX8jgYBA3dg5KHDPk+Am0QO+SmvnmgCwKa6uiDXZKuVr0neSx4V1OAHoP+As+j7yYgfChdsdrvsNzZGGehA==} + + '@irys/upload-solana@0.1.7': + resolution: {integrity: sha512-gHrEA6fCN2cEpBLM+urHRd0SeHcx6aOpNHPPeDS64tHXORrz4dU8F+OxWyy9wsCQNQd/wzrZldu/qncvcqkv6g==} + + '@irys/upload@0.0.14': + resolution: {integrity: sha512-6XdkyS5cVINcPjv1MzA6jDsawfG7Bw6sq5wilNx5B4X7nNotBPC3SuRrZs06G/0BTUj15W+TRO/tZTDWRUfZzA==} + + '@irys/web-upload-solana@0.1.7': + resolution: {integrity: sha512-LNNhdSdz4u/MXNxkXHS6iPuMB4wqgVBQwK3sKbJPXUMLrb961FNwyJ3S6N2BJmf8jpsQvjd0QoMRp8isxKizSg==} + + '@irys/web-upload@0.0.14': + resolution: {integrity: sha512-vBIslG2KSGyeJjZNTbSvLmGO/bbHS1jcDkD0A1aLgx7xkiTpfdbXOrn4hznPkzQhPtluX4aL44On0GXrEcD8eQ==} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -972,12 +1018,24 @@ packages: '@metaplex-foundation/umi': ^0.9.2 '@solana/web3.js': ^1.72.0 + '@metaplex-foundation/umi-uploader-irys@1.0.0': + resolution: {integrity: sha512-EMTjAdA78ng3/urO3A27jWjMuK5Isohs+6eovgHypeQ8pHmtDH6634m8fonsENVFW/VDuGIzBZ6GKJcBUdI+Jg==} + peerDependencies: + '@metaplex-foundation/umi': ^1.0.0 + '@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-web3js-adapters@1.0.0': + resolution: {integrity: sha512-daAuxorWSwF3cOWz9UjlYKlgGVM6eTw7cbLKyj8Sk90umxv5sfMZR5CjmaILHsXz5uaYIcjoivabSngucp4xNA==} + peerDependencies: + '@metaplex-foundation/umi': ^1.0.0 + '@solana/web3.js': ^1.72.0 + '@metaplex-foundation/umi@0.9.2': resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} @@ -1828,6 +1886,18 @@ packages: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} + algo-msgpack-with-bigint@2.1.1: + resolution: {integrity: sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==} + engines: {node: '>= 10'} + + algosdk@1.24.1: + resolution: {integrity: sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==} + engines: {node: '>=14.0.0'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1865,6 +1935,9 @@ packages: arconnect@0.4.2: resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} + arconnect@0.4.2: + resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -1997,6 +2070,9 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -2028,6 +2104,9 @@ packages: bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + buffer-layout@1.2.2: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} @@ -2124,6 +2203,30 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + cheerio@0.22.0: + resolution: {integrity: sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==} + engines: {node: '>= 0.6'} + + cipher-base@1.0.6: + resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} + engines: {node: '>= 0.10'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + cipher-base@1.0.6: resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} engines: {node: '>= 0.10'} @@ -2276,6 +2379,18 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} + css-select@1.2.0: + resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} + + css-what@2.1.3: + resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} + + csv-parse@5.6.0: + resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} + + csv-stringify@6.5.2: + resolution: {integrity: sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==} + dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -2393,6 +2508,21 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dom-serializer@0.1.1: + resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + + domutils@1.5.1: + resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -2430,6 +2560,12 @@ packages: elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -2453,6 +2589,12 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2504,6 +2646,10 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2645,6 +2791,10 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + express-prom-bundle@7.0.2: resolution: {integrity: sha512-ffFV4HGHvCKnkNJFqm42sYztRJE5mLgOj8MpGey1HOatuFhtcwXoBD2m5gca7ZbcyjkIf7lOH5ZdrhlrBf0sGw==} engines: {node: '>=18'} @@ -2688,6 +2838,10 @@ packages: fastq@1.18.0: resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -2931,6 +3085,10 @@ packages: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -2956,6 +3114,9 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -2982,6 +3143,14 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -3027,6 +3196,10 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} @@ -3081,6 +3254,10 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -3182,6 +3359,9 @@ packages: js-sha512@0.8.0: resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} + js-sha512@0.8.0: + resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} + js-tiktoken@1.0.16: resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} @@ -3198,6 +3378,9 @@ packages: json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -3357,9 +3540,42 @@ packages: lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + lodash.assignin@4.2.0: + resolution: {integrity: sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==} + + lodash.bind@4.2.1: + resolution: {integrity: sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.filter@4.6.0: + resolution: {integrity: sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.pick@4.4.0: + resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} + + lodash.reduce@4.6.0: + resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} + + lodash.reject@4.6.0: + resolution: {integrity: sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==} + + lodash.some@4.6.0: + resolution: {integrity: sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -3367,6 +3583,10 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -3426,6 +3646,9 @@ packages: md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} @@ -3484,6 +3707,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -3520,6 +3747,9 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} @@ -3566,6 +3796,9 @@ packages: multistream@4.1.0: resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + multistream@4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true @@ -3573,6 +3806,12 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + nan@2.22.0: + resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3615,6 +3854,9 @@ packages: node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} @@ -3753,6 +3995,14 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -4041,6 +4291,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -4092,6 +4346,9 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} @@ -4105,6 +4362,10 @@ packages: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4135,6 +4396,16 @@ packages: resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} engines: {node: '>=18.0.0'} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@5.0.1: + resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} + engines: {node: '>=18.0.0'} + secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -4163,6 +4434,10 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4539,6 +4814,10 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -4560,6 +4839,9 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x + typeforce@1.18.0: + resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} + typescript-collections@1.3.3: resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} @@ -4598,6 +4880,9 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -4737,6 +5022,9 @@ packages: engines: {node: '>= 8'} hasBin: true + wif@2.0.6: + resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4745,6 +5033,10 @@ packages: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -4772,6 +5064,18 @@ packages: utf-8-validate: optional: true + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -4968,20 +5272,22 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) borsh: 1.0.0 bs58: 5.0.0 buffer: 6.0.3 '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@noble/curves': 1.8.0 '@scure/base': 1.2.1 '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) borsh: 2.0.0 buffer: 6.0.3 graphemesplit: 2.4.4 @@ -4997,16 +5303,31 @@ snapshots: '@brokerloop/ttlcache@3.2.3': dependencies: '@soncodi/signal': 2.0.7 + '@bonfida/token-vesting@0.0.9(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + dependencies: + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + bip32: 2.0.6 + bn.js: 5.2.1 + bs58: 4.0.1 + buffer-layout: 1.2.2 + tweetnacl: 1.0.3 + + '@cfworker/json-schema@4.1.0': {} '@cfworker/json-schema@4.0.3': {} '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 borsh: 0.7.0 bs58: 6.0.0 @@ -5032,15 +5353,16 @@ snapshots: '@coral-xyz/anchor-errors@0.30.1': {} '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -5098,15 +5420,16 @@ snapshots: - utf-8-validate '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) crypto-hash: 1.3.0 eventemitter3: 4.0.7 pako: 2.1.0 @@ -5141,8 +5464,9 @@ snapshots: - utf-8-validate '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 @@ -5463,18 +5787,6 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - '@ethersproject/abi@5.7.0': - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/abstract-provider@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 @@ -5516,35 +5828,88 @@ snapshots: '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/constants@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - - '@ethersproject/contracts@5.7.0': + '@ethersproject/abi@5.7.0': dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 + '@ethersproject/strings': 5.7.0 - '@ethersproject/hash@5.7.0': + '@ethersproject/abstract-provider@5.7.0': dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + + '@ethersproject/hash@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 @@ -5853,6 +6218,141 @@ snapshots: - encoding - utf-8-validate + '@irys/arweave@0.0.2': + dependencies: + asn1.js: 5.4.1 + async-retry: 1.3.3 + axios: 1.7.9 + base64-js: 1.5.1 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - debug + + '@irys/bundles@0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@irys/arweave': 0.0.2 + '@noble/ed25519': 1.7.3 + base64url: 3.0.1 + bs58: 4.0.1 + keccak: 3.0.4 + secp256k1: 5.0.1 + optionalDependencies: + '@randlabs/myalgo-connect': 1.4.2 + algosdk: 1.24.1(encoding@0.1.13) + arweave-stream-tx: 1.2.2(arweave@1.15.5) + multistream: 4.1.0 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + + '@irys/query@0.0.9': + dependencies: + async-retry: 1.3.3 + axios: 1.7.9 + transitivePeerDependencies: + - debug + + '@irys/upload-core@0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/query': 0.0.9 + '@supercharge/promise-pool': 3.2.0 + async-retry: 1.3.3 + axios: 1.7.9 + base64url: 3.0.1 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + + '@irys/upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + async-retry: 1.3.3 + bignumber.js: 9.1.2 + bs58: 5.0.0 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@irys/upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + async-retry: 1.3.3 + axios: 1.7.9 + base64url: 3.0.1 + bignumber.js: 9.1.2 + csv-parse: 5.6.0 + csv-stringify: 6.5.2 + inquirer: 8.2.6 + mime-types: 2.1.35 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + + '@irys/web-upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + async-retry: 1.3.3 + bignumber.js: 9.1.2 + bs58: 5.0.0 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@irys/web-upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + async-retry: 1.3.3 + axios: 1.7.9 + base64url: 3.0.1 + bignumber.js: 9.1.2 + mime-types: 2.1.35 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -5876,6 +6376,7 @@ snapshots: '@jup-ag/api@6.0.38': {} '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': + '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': dependencies: '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 @@ -5883,6 +6384,7 @@ snapshots: decamelize: 1.2.0 js-tiktoken: 1.0.16 langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) + langsmith: 0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -5893,18 +6395,24 @@ snapshots: - openai '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': + '@langchain/groq@0.1.3(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) groq-sdk: 0.5.0 + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) + groq-sdk: 0.5.0(encoding@0.1.13) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) uuid: 10.0.0 '@langchain/langgraph-sdk@0.0.33': @@ -5915,26 +6423,35 @@ snapshots: uuid: 9.0.1 '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': + '@langchain/langgraph@0.2.39(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/langgraph-sdk': 0.0.33 + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.36 uuid: 10.0.0 zod: 3.24.1 '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': + '@langchain/openai@0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) js-tiktoken: 1.0.16 openai: 4.77.3(zod@3.24.1) + openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) + '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) js-tiktoken: 1.0.16 '@ledgerhq/devices@6.27.1': @@ -6001,11 +6518,16 @@ snapshots: '@ledgerhq/logs@6.12.0': {} '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 tweetnacl: 1.0.3 transitivePeerDependencies: @@ -6015,11 +6537,11 @@ snapshots: - typescript - utf-8-validate - '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@noble/hashes': 1.5.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 superstruct: 2.0.2 tweetnacl: 1.0.3 @@ -6122,7 +6644,7 @@ snapshots: '@metaplex-foundation/beet-solana@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 5.0.0 debug: 4.4.0 transitivePeerDependencies: @@ -6131,10 +6653,10 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 5.0.0 debug: 4.4.0 transitivePeerDependencies: @@ -6143,10 +6665,10 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 5.0.0 debug: 4.4.0 transitivePeerDependencies: @@ -6231,12 +6753,15 @@ snapshots: - utf-8-validate '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6263,15 +6788,20 @@ snapshots: - utf-8-validate '@metaplex-foundation/mpl-bubblegum@0.6.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) js-sha3: 0.8.0 transitivePeerDependencies: - bufferutil @@ -6398,12 +6928,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/rustbin': 0.3.5 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) camelcase: 6.3.0 debug: 4.4.0 js-sha256: 0.9.0 @@ -6417,18 +6947,18 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13)': 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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-http-fetch': 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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13) '@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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - encoding @@ -6436,17 +6966,17 @@ snapshots: 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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@noble/curves': 1.8.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': + '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13)': dependencies: '@metaplex-foundation/umi': 0.9.2 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -6464,11 +6994,11 @@ snapshots: 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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: @@ -6492,16 +7022,43 @@ snapshots: '@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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-uploader-irys@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: + '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/web-upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@supercharge/promise-pool': 3.2.0 + bignumber.js: 9.1.2 + buffer: 6.0.3 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + buffer: 6.0.3 + + '@metaplex-foundation/umi-web3js-adapters@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + dependencies: + '@metaplex-foundation/umi': 0.9.2 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 '@metaplex-foundation/umi@0.9.2': @@ -6605,6 +7162,10 @@ snapshots: '@msgpack/msgpack@3.0.0-beta2': {} + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + '@near-js/crypto@0.0.3': dependencies: '@near-js/types': 0.0.3 @@ -6715,6 +7276,10 @@ snapshots: '@noble/ed25519@1.7.3': {} + '@noble/hashes@1.3.2': {} + + '@noble/ed25519@1.7.3': {} + '@noble/hashes@1.1.3': {} '@noble/hashes@1.3.2': {} @@ -6737,11 +7302,11 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.18.0 - '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/sha2': 5.7.0 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 borsh: 2.0.0 buffer: 6.0.3 @@ -6782,18 +7347,26 @@ snapshots: '@openzeppelin/contracts@5.2.0': {} '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 @@ -6936,6 +7509,28 @@ snapshots: transitivePeerDependencies: - axios + '@project-serum/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + base64-js: 1.5.1 + bn.js: 5.2.1 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0(encoding@0.1.13) + crypto-hash: 1.3.0 + eventemitter3: 4.0.7 + js-sha256: 0.9.0 + pako: 2.1.0 + snake-case: 3.0.4 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@pythnetwork/price-service-sdk': 1.8.0 @@ -6990,6 +7585,15 @@ snapshots: optional: true '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@randlabs/communication-bridge@1.0.1': + optional: true + + '@randlabs/myalgo-connect@1.4.2': + dependencies: + '@randlabs/communication-bridge': 1.0.1 + optional: true + + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -7015,11 +7619,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1)': + '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)': dependencies: '@saberhq/option-utils': 1.15.0 '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@types/promise-retry': 1.1.6 '@types/retry': 0.12.5 bn.js: 5.2.1 @@ -7121,7 +7725,7 @@ snapshots: '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bigint-buffer: 1.1.5 bignumber.js: 9.1.2 transitivePeerDependencies: @@ -7391,7 +7995,7 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7406,32 +8010,37 @@ snapshots: - supports-color - utf-8-validate - '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7459,6 +8068,8 @@ snapshots: dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript @@ -7471,15 +8082,16 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7491,6 +8103,8 @@ snapshots: dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript @@ -7502,7 +8116,7 @@ snapshots: '@solana/spl-token@0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer: 6.0.3 buffer-layout: 1.2.2 @@ -7566,12 +8180,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7581,11 +8195,15 @@ snapshots: - utf-8-validate '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7620,12 +8238,17 @@ snapshots: - utf-8-validate '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7635,12 +8258,17 @@ snapshots: - utf-8-validate '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7650,6 +8278,7 @@ snapshots: - utf-8-validate '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7671,6 +8300,10 @@ snapshots: '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7750,6 +8383,7 @@ snapshots: - utf-8-validate '@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@noble/curves': 1.8.0 @@ -7763,7 +8397,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 9.0.4 superstruct: 2.0.2 transitivePeerDependencies: @@ -7793,7 +8427,7 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@noble/curves': 1.8.0 @@ -7807,7 +8441,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 9.0.4 superstruct: 2.0.2 transitivePeerDependencies: @@ -7847,6 +8481,9 @@ snapshots: '@soncodi/signal@2.0.7': {} '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@supercharge/promise-pool@3.2.0': {} + + '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7915,6 +8552,7 @@ snapshots: defer-to-connect: 2.0.1 '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@tensor-hq/tensor-common@8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -7922,6 +8560,12 @@ snapshots: '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) axios: 0.28.1 big.js: 6.2.2 bn.js: 5.2.1 @@ -7940,13 +8584,18 @@ snapshots: - utf-8-validate '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@msgpack/msgpack': 2.8.0 '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@tensor-hq/tensor-common': 8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 big.js: 6.2.2 bn.js: 5.2.1 @@ -7964,11 +8613,11 @@ snapshots: - typescript - utf-8-validate - '@tiplink/api@0.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': + '@tiplink/api@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 5.0.0 libsodium: 0.7.15 libsodium-wrappers-sumo: 0.7.15 @@ -8074,6 +8723,8 @@ snapshots: '@types/node': 22.10.7 form-data: 4.0.1 + '@types/node@10.12.18': {} + '@types/node@11.11.6': {} '@types/node@12.20.55': {} @@ -8295,6 +8946,29 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + algo-msgpack-with-bigint@2.1.1: + optional: true + + algosdk@1.24.1(encoding@0.1.13): + dependencies: + algo-msgpack-with-bigint: 2.1.1 + buffer: 6.0.3 + cross-fetch: 3.2.0(encoding@0.1.13) + hi-base32: 0.5.1 + js-sha256: 0.9.0 + js-sha3: 0.8.0 + js-sha512: 0.8.0 + json-bigint: 1.0.0 + tweetnacl: 1.0.3 + vlq: 2.0.4 + transitivePeerDependencies: + - encoding + optional: true + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + algo-msgpack-with-bigint@2.1.1: {} algosdk@1.24.1: @@ -8394,6 +9068,11 @@ snapshots: - encoding - utf-8-validate + arconnect@0.4.2: + dependencies: + arweave: 1.15.5 + optional: true + arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@ethersproject/bytes': 5.7.0 @@ -8432,6 +9111,27 @@ snapshots: argparse@2.0.1: {} + arweave-stream-tx@1.2.2(arweave@1.15.5): + dependencies: + arweave: 1.15.5 + exponential-backoff: 3.1.1 + optional: true + + arweave@1.15.5: + dependencies: + arconnect: 0.4.2 + asn1.js: 5.4.1 + base64-js: 1.5.1 + bignumber.js: 9.1.2 + optional: true + + asn1.js@5.4.1: + dependencies: + bn.js: 4.12.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + array-flatten@1.1.1: {} arweave-stream-tx@1.2.2(arweave@1.15.5): @@ -8465,6 +9165,10 @@ snapshots: assertion-error@2.0.1: {} + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -8542,6 +9246,10 @@ snapshots: bech32@1.1.4: {} + base64url@3.0.1: {} + + bech32@1.1.4: {} + big-integer@1.6.52: {} big.js@6.2.2: {} @@ -8560,6 +9268,22 @@ snapshots: bip32-path@0.4.2: {} + bip32@2.0.6: + dependencies: + '@types/node': 10.12.18 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + tiny-secp256k1: 1.1.7 + typeforce: 1.18.0 + wif: 2.0.6 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + bip39-light@1.0.7: dependencies: create-hash: 1.2.0 @@ -8588,8 +9312,13 @@ snapshots: bn.js@4.12.1: {} + bn.js@4.12.1: {} + bn.js@5.2.1: {} + boolbase@1.0.0: + optional: true + bn@1.0.5: {} body-parser@1.20.3: @@ -8634,6 +9363,8 @@ snapshots: brorand@1.1.0: {} + brorand@1.1.0: {} + bs58@4.0.1: dependencies: base-x: 3.0.10 @@ -8646,6 +9377,12 @@ snapshots: dependencies: base-x: 5.0.0 + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + buffer-layout@1.2.2: {} buffer-reverse@1.0.1: {} @@ -8729,12 +9466,49 @@ snapshots: chardet@0.7.0: {} + chardet@0.7.0: {} + check-error@2.1.1: {} check-more-types@2.24.0: {} chownr@1.1.4: {} + cheerio@0.22.0: + dependencies: + css-select: 1.2.0 + dom-serializer: 0.1.1 + entities: 1.1.2 + htmlparser2: 3.10.1 + lodash.assignin: 4.2.0 + lodash.bind: 4.2.1 + lodash.defaults: 4.2.0 + lodash.filter: 4.6.0 + lodash.flatten: 4.4.0 + lodash.foreach: 4.5.0 + lodash.map: 4.6.0 + lodash.merge: 4.6.2 + lodash.pick: 4.4.0 + lodash.reduce: 4.6.0 + lodash.reject: 4.6.0 + lodash.some: 4.6.0 + optional: true + + cipher-base@1.0.6: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-width@3.0.0: {} + + clone@1.0.4: {} + cipher-base@1.0.6: dependencies: inherits: 2.0.4 @@ -8799,6 +9573,23 @@ snapshots: concat-map@0.0.1: {} + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.6 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.6 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -8842,7 +9633,7 @@ snapshots: cross-fetch@3.2.0: dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -8856,6 +9647,21 @@ snapshots: crypto-js@4.2.0: {} + css-select@1.2.0: + dependencies: + boolbase: 1.0.0 + css-what: 2.1.3 + domutils: 1.5.1 + nth-check: 1.0.2 + optional: true + + css-what@2.1.3: + optional: true + + csv-parse@5.6.0: {} + + csv-stringify@6.5.2: {} + csv-generate@3.4.3: {} csv-parse@4.16.3: {} @@ -8953,6 +9759,32 @@ snapshots: dependencies: esutils: 2.0.3 + dom-serializer@0.1.1: + dependencies: + domelementtype: 1.3.1 + entities: 1.1.2 + optional: true + + domelementtype@1.3.1: + optional: true + + domhandler@2.4.2: + dependencies: + domelementtype: 1.3.1 + optional: true + + domutils@1.5.1: + dependencies: + dom-serializer: 0.1.1 + domelementtype: 1.3.1 + optional: true + + domutils@1.7.0: + dependencies: + dom-serializer: 0.1.1 + domelementtype: 1.3.1 + optional: true + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -8978,6 +9810,26 @@ snapshots: eastasianwidth@0.2.0: {} + elliptic@6.5.4: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + ee-first@1.1.1: {} elliptic@6.5.4: @@ -9008,6 +9860,14 @@ snapshots: emoji-regex@9.2.2: {} + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + optional: true + + entities@1.1.2: + optional: true + encodeurl@1.0.2: {} encodeurl@2.0.0: {} @@ -9044,6 +9904,8 @@ snapshots: dependencies: es6-promise: 4.2.8 + escape-string-regexp@1.0.5: {} + esbuild@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 @@ -9298,6 +10160,12 @@ snapshots: exponential-backoff@3.1.1: {} + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + express-prom-bundle@7.0.2(prom-client@15.1.3): dependencies: '@types/express': 4.17.21 @@ -9687,7 +10555,7 @@ snapshots: js-base64: 3.7.7 unicode-trie: 2.0.0 - groq-sdk@0.5.0: + groq-sdk@0.5.0(encoding@0.1.13): dependencies: '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 @@ -9695,7 +10563,7 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding @@ -10160,8 +11028,41 @@ snapshots: lodash.isequal@4.5.0: {} + lodash.assignin@4.2.0: + optional: true + + lodash.bind@4.2.1: + optional: true + + lodash.defaults@4.2.0: + optional: true + + lodash.filter@4.6.0: + optional: true + + lodash.flatten@4.4.0: + optional: true + + lodash.foreach@4.5.0: + optional: true + + lodash.map@4.6.0: + optional: true + lodash.merge@4.6.2: {} + lodash.pick@4.4.0: + optional: true + + lodash.reduce@4.6.0: + optional: true + + lodash.reject@4.6.0: + optional: true + + lodash.some@4.6.0: + optional: true + lodash@4.17.21: {} log-symbols@4.1.0: @@ -10506,7 +11407,7 @@ snapshots: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) optionalDependencies: zod: 3.24.1 transitivePeerDependencies: @@ -10539,6 +11440,20 @@ snapshots: p-cancelable@2.1.1: {} + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + p-finally@1.0.0: {} p-limit@3.1.0: @@ -10827,6 +11742,11 @@ snapshots: resolve-from@4.0.0: {} + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + resolve-pkg-maps@1.0.0: {} resolve@1.22.10: @@ -10875,6 +11795,11 @@ snapshots: hash-base: 3.1.0 inherits: 2.0.4 + ripemd160@2.0.2: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + rpc-websockets@7.5.1: dependencies: '@babel/runtime': 7.26.0 @@ -10909,6 +11834,8 @@ snapshots: run-async@2.4.1: {} + run-async@2.4.1: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -10935,6 +11862,16 @@ snapshots: scrypt-js@3.0.1: {} + secp256k1@5.0.1: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + + safer-buffer@2.1.2: {} + + scrypt-js@3.0.1: {} + secp256k1@5.0.1: dependencies: elliptic: 6.6.1 @@ -10985,6 +11922,11 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + setprototypeof@1.2.0: {} sha.js@2.4.11: @@ -11009,6 +11951,8 @@ snapshots: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 + signal-exit@3.0.7: {} + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -11413,6 +12357,8 @@ snapshots: type-fest@0.21.3: {} + type-fest@0.21.3: {} + type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -11440,6 +12386,8 @@ snapshots: typescript: 5.7.2 yaml: 2.7.0 + typeforce@1.18.0: {} + typescript-collections@1.3.3: {} typescript@4.9.5: {} @@ -11465,6 +12413,8 @@ snapshots: undici-types@6.19.8: {} + undici-types@6.19.8: {} + undici-types@6.20.0: {} unicode-trie@2.0.0: @@ -11565,6 +12515,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 + vlq@2.0.4: + optional: true + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + vlq@2.0.4: {} w-json@1.3.10: {} @@ -11618,8 +12575,18 @@ snapshots: dependencies: isexe: 2.0.0 + wif@2.0.6: + dependencies: + bs58check: 2.1.2 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 diff --git a/src/actions/fluxbeam/bridgeToken.ts b/src/actions/fluxbeam/bridgeToken.ts new file mode 100644 index 00000000..4325f6c5 --- /dev/null +++ b/src/actions/fluxbeam/bridgeToken.ts @@ -0,0 +1,77 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../../types/action"; +import { SolanaAgentKit } from "../../agent"; +import { z } from "zod"; +import { + Chain, + fluxbeamBridgeTokens, +} from "../../tools/fluxbeam_bridge_tokens"; + +const bridgeTokensAction: Action = { + name: "BRIDGE_TOKENS_ACTION", + similes: [ + "bridge tokens", + "transfer across chains", + "send to other chain", + "cross chain transfer", + "bridge to ethereum", + "bridge to polygon", + ], + description: `Bridge tokens from Solana to another blockchain using Fluxbeam. + Supported destination chains include Ethereum, BSC, Polygon, Avalanche, Arbitrum, Optimism and Base. + You can optionally specify a gas drop amount that must not exceed the chain's limit.`, + examples: [ + [ + { + input: { + destination: "ethereum", + destinationWalletAddress: "0x1234...5678", + fromToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + amount: 100, + gasDrop: 0.04, + }, + output: { + status: "success", + signature: "5pB6Fy...", + }, + explanation: "Bridge 100 USDC from Solana to Ethereum", + }, + ], + ], + schema: z.object({ + destination: z.enum([ + "ethereum", + "bsc", + "polygon", + "avalanche", + "solana", + "arbitrum", + "optimism", + "base", + ]), + destinationWalletAddress: z.string(), + fromToken: z.string(), + toToken: z.string(), + amount: z.number(), + gasDrop: z.number().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamBridgeTokens( + agent, + input.destination as Chain, + input.destinationWalletAddress, + input.fromToken, + input.toToken, + input.amount, + input.gasDrop, + ); + + return { + status: "success", + signature, + }; + }, +}; + +export default bridgeTokensAction; diff --git a/src/actions/fluxbeam/burnToken.ts b/src/actions/fluxbeam/burnToken.ts new file mode 100644 index 00000000..a9f75cf0 --- /dev/null +++ b/src/actions/fluxbeam/burnToken.ts @@ -0,0 +1,54 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../../types/action"; +import { SolanaAgentKit } from "../../agent"; +import { z } from "zod"; +import { fluxbeamBurnToken } from "../../tools"; + +const burnTokenAction: Action = { + name: "BURN_TOKEN_ACTION", + similes: [ + "burn tokens", + "destroy tokens", + "remove tokens", + "burn crypto", + "reduce supply", + ], + description: `Burns a specified amount of tokens from your wallet. + Can be used with both Token Program v1 and v2 tokens.`, + examples: [ + [ + { + input: { + mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + amount: 100, + v2: true, + }, + output: { + status: "success", + signature: "2ZqD4f...", + }, + explanation: "Burn 100 tokens from the specified mint", + }, + ], + ], + schema: z.object({ + mint: z.string(), + amount: z.number(), + v2: z.boolean().optional().default(true), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamBurnToken( + agent, + new PublicKey(input.mint), + input.amount, + input.v2, + ); + + return { + status: "success", + signature, + }; + }, +}; + +export default burnTokenAction; diff --git a/src/actions/fluxbeam/createPool.ts b/src/actions/fluxbeam/createPool.ts new file mode 100644 index 00000000..8da3f2b8 --- /dev/null +++ b/src/actions/fluxbeam/createPool.ts @@ -0,0 +1,57 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../../types/action"; +import { SolanaAgentKit } from "../../agent"; +import { z } from "zod"; +import { fluxBeamCreatePool } from "../../tools"; + +const createPoolAction: Action = { + name: "CREATE_POOL_ACTION", + similes: [ + "create liquidity pool", + "start pool", + "initialize pool", + "new trading pool", + "setup token pool", + ], + description: `Creates a new liquidity pool on Fluxbeam with two tokens. + Specify the token addresses and initial amounts to provide liquidity.`, + examples: [ + [ + { + input: { + tokenA: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + tokenAAmount: 1000, + tokenB: "So11111111111111111111111111111111111111112", + tokenBAmount: 5, + }, + output: { + status: "success", + signature: "3xKm2p...", + }, + explanation: "Create a USDC-SOL pool with initial liquidity", + }, + ], + ], + schema: z.object({ + tokenA: z.string(), + tokenAAmount: z.number(), + tokenB: z.string(), + tokenBAmount: z.number(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxBeamCreatePool( + agent, + new PublicKey(input.tokenA), + input.tokenAAmount, + new PublicKey(input.tokenB), + input.tokenBAmount, + ); + + return { + status: "success", + signature, + }; + }, +}; + +export default createPoolAction; diff --git a/src/actions/fluxbeam/createV1Token.ts b/src/actions/fluxbeam/createV1Token.ts new file mode 100644 index 00000000..9dd21b23 --- /dev/null +++ b/src/actions/fluxbeam/createV1Token.ts @@ -0,0 +1,54 @@ +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamCreateMintV1 } from "../../tools"; +import { Action } from "../../types"; + +// Create Mint V1 Action +const createMintV1Action: Action = { + name: "CREATE_MINT_V1_ACTION", + similes: ["create token v1", "mint new token v1", "initialize token v1"], + description: "Creates a new SPL token with metadata (v1)", + examples: [ + [ + { + input: { + name: "My Token", + symbol: "MTK", + decimals: 9, + initialSupply: 1000000, + uri: "https://...", + }, + output: { + status: "success", + signature: "aXw3...", + }, + explanation: "Create new token with initial supply", + }, + ], + ], + schema: z.object({ + name: z.string(), + symbol: z.string(), + decimals: z.number().optional(), + initialSupply: z.number().optional(), + imagePath: z.string().optional(), + uri: z.string().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamCreateMintV1( + agent, + input.name, + input.symbol, + input.decimals, + input.initialSupply, + input.imagePath, + input.uri, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default createMintV1Action; diff --git a/src/actions/fluxbeam/createV2Token.ts b/src/actions/fluxbeam/createV2Token.ts new file mode 100644 index 00000000..cd3a797c --- /dev/null +++ b/src/actions/fluxbeam/createV2Token.ts @@ -0,0 +1,80 @@ +import { Keypair, PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { ExtensionConfig, fluxbeamCreateMintV2 } from "../../tools"; +import { Action } from "../../types"; + +// Create Mint V2 Action (continued) +const createMintV2Action: Action = { + name: "CREATE_MINT_V2_ACTION", + similes: ["create token v2", "mint new token v2", "initialize token v2"], + description: "Creates a new Token-2022 token with extensions", + examples: [ + [ + { + input: { + owner: "EPjFW...", + tokenMint: new Keypair(), + name: "My Token V2", + symbol: "MTK2", + totalSupply: BigInt("1000000"), + mintAuthority: "EPjFW...", + freezeAuthority: null, + decimals: 6, + extensions: [], + priorityFee: 100000, + description: "My token description", + metadataUri: "https://...", + }, + output: { + status: "success", + signature: "bYx4...", + }, + explanation: "Create new token-2022 with extensions", + }, + ], + ], + schema: z.object({ + owner: z.string(), + tokenMint: z.instanceof(Keypair), + name: z.string(), + symbol: z.string(), + totalSupply: z.bigint(), + mintAuthority: z.string(), + freezeAuthority: z.string().nullable(), + decimals: z.number().optional(), + mintTotalSupply: z.boolean().optional(), + priorityFee: z.number(), + extensions: z.array(z.custom()), + description: z.string().optional(), + metadataUri: z.string().optional(), + imagePath: z.string().optional(), + imageUri: z.string().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamCreateMintV2( + agent, + new PublicKey(input.owner), + input.tokenMint, + input.name, + input.symbol, + input.totalSupply, + new PublicKey(input.mintAuthority), + input.freezeAuthority ? new PublicKey(input.freezeAuthority) : null, + input.decimals, + input.mintTotalSupply, + input.priorityFee, + input.extensions, + input.description, + input.metadataUri, + input.imagePath, + input.imageUri, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default createMintV2Action; diff --git a/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts b/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts new file mode 100644 index 00000000..ba6d3052 --- /dev/null +++ b/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts @@ -0,0 +1,47 @@ +import { PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamSubmitFeeClaim } from "../../tools"; +import { Action } from "../../types"; + +// Fee Claim Action +const submitFeeClaimAction: Action = { + name: "SUBMIT_FEE_CLAIM_ACTION", + similes: ["claim fees", "collect fees", "withdraw fees"], + description: "Claims accumulated token fees", + examples: [ + [ + { + input: { + payer: "EPjFW...", + mint: "So11...", + priorityFee: 100000, + }, + output: { + status: "success", + signature: "5mRt8...", + }, + explanation: "Claim fees for a token mint", + }, + ], + ], + schema: z.object({ + payer: z.string(), + mint: z.string(), + priorityFee: z.number().positive(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamSubmitFeeClaim( + agent, + new PublicKey(input.payer), + new PublicKey(input.mint), + input.priorityFee, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default submitFeeClaimAction; diff --git a/src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts b/src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts new file mode 100644 index 00000000..accdc5ec --- /dev/null +++ b/src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts @@ -0,0 +1,87 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../../types/action"; +import { SolanaAgentKit } from "../../agent"; +import { z } from "zod"; +import { fluxbeamSubmitFeePayment, fluxbeamSubmitFeeClaim } from "../../tools"; + +const feePaymentAction: Action = { + name: "FEE_PAYMENT_ACTION", + similes: [ + "pay fees", + "submit fee payment", + "process fees", + "handle transaction fees", + "pay gas", + ], + description: `Submit fee payments for Fluxbeam transactions. + Can be used to pay transaction fees or claim accumulated fees.`, + examples: [ + [ + { + input: { + type: "payment", + quote: { + /* quote object */ + }, + priorityFee: 100000, + }, + output: { + status: "success", + signature: "4wPn3r...", + }, + explanation: "Submit a fee payment for a transaction", + }, + { + input: { + type: "claim", + payer: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + mint: "So11111111111111111111111111111111111111112", + priorityFee: 100000, + }, + output: { + status: "success", + signature: "5tKm4q...", + }, + explanation: "Claim accumulated fees from a token mint", + }, + ], + ], + schema: z.union([ + z.object({ + type: z.literal("payment"), + quote: z.any(), + priorityFee: z.number(), + }), + z.object({ + type: z.literal("claim"), + payer: z.string(), + mint: z.string(), + priorityFee: z.number(), + }), + ]), + handler: async (agent: SolanaAgentKit, input: Record) => { + let signature: string; + + if (input.type === "payment") { + signature = await fluxbeamSubmitFeePayment( + agent, + { quote: input.quote }, + input.priorityFee, + ); + } else { + signature = await fluxbeamSubmitFeeClaim( + agent, + new PublicKey(input.payer), + new PublicKey(input.mint), + input.priorityFee, + ); + } + + return { + status: "success", + signature, + }; + }, +}; + +export default feePaymentAction; diff --git a/src/actions/fluxbeam/fluxbeamTransfer.ts b/src/actions/fluxbeam/fluxbeamTransfer.ts new file mode 100644 index 00000000..f9c7abf7 --- /dev/null +++ b/src/actions/fluxbeam/fluxbeamTransfer.ts @@ -0,0 +1,88 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../../types/action"; +import { SolanaAgentKit } from "../../agent"; +import { z } from "zod"; +import { fluxbeamTransferSplToken, fluxbeamTransferSol } from "../../tools"; + +const transferAction: Action = { + name: "TRANSFER_ACTION", + similes: [ + "transfer tokens", + "send tokens", + "send SOL", + "transfer SOL", + "send money", + ], + description: `Transfer SOL or SPL tokens to another wallet. + For SPL tokens, specify the mint address. For SOL transfers, just provide the amount.`, + examples: [ + [ + { + input: { + type: "spl", + mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + destination: "5KLm2...", + amount: 100, + v2: true, + }, + output: { + status: "success", + signature: "5nKm4p...", + }, + explanation: "Transfer 100 USDC tokens to another wallet", + }, + { + input: { + type: "sol", + destination: "5KLm2...", + amount: 1.5, + }, + output: { + status: "success", + signature: "6pNn3q...", + }, + explanation: "Transfer 1.5 SOL to another wallet", + }, + ], + ], + schema: z.union([ + z.object({ + type: z.literal("spl"), + mint: z.string(), + destination: z.string(), + amount: z.number(), + v2: z.boolean().optional().default(true), + }), + z.object({ + type: z.literal("sol"), + destination: z.string(), + amount: z.number(), + }), + ]), + handler: async (agent: SolanaAgentKit, input: Record) => { + let signature: string; + + if (input.type === "spl") { + signature = await fluxbeamTransferSplToken( + agent, + new PublicKey(input.mint), + new PublicKey(input.destination), + input.amount, + input.v2, + ); + } else { + signature = await fluxbeamTransferSol( + agent, + new PublicKey(input.destination), + input.amount, + ); + } + + return { + status: "success", + signature, + }; + }, +}; + +export default transferAction; diff --git a/src/actions/fluxbeam/mintToken.ts b/src/actions/fluxbeam/mintToken.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/actions/fluxbeam/revokeMintAuthority.ts b/src/actions/fluxbeam/revokeMintAuthority.ts new file mode 100644 index 00000000..27f54817 --- /dev/null +++ b/src/actions/fluxbeam/revokeMintAuthority.ts @@ -0,0 +1,63 @@ +import { AuthorityType } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamRevokeAuthority } from "../../tools/fluxbeam_token_minting_controls"; +import { Action } from "../../types"; + +// Revoke Authority Action +const revokeAuthorityAction: Action = { + name: "REVOKE_AUTHORITY_ACTION", + similes: [ + "remove authority", + "revoke token authority", + "remove token permissions", + ], + description: "Revokes an authority from a token mint by setting it to null", + examples: [ + [ + { + input: { + owner: "EPjFW...", + mint: "So11...", + authority: "MintTokens", + v2: true, + priorityFee: 100000000, + }, + output: { + status: "success", + signature: "eBy7...", + }, + explanation: "Revoke mint authority from token", + }, + ], + ], + schema: z.object({ + owner: z.string(), + mint: z.string(), + authority: z.enum([ + "MintTokens", + "FreezeAccount", + "AccountOwner", + "CloseAccount", + ]), + v2: z.boolean().optional(), + priorityFee: z.number().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamRevokeAuthority( + agent, + new PublicKey(input.owner), + new PublicKey(input.mint), + input.authority as AuthorityType, + input.v2, + input.priorityFee, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default revokeAuthorityAction; diff --git a/src/actions/fluxbeam/setMintAuthority.ts b/src/actions/fluxbeam/setMintAuthority.ts new file mode 100644 index 00000000..1b047604 --- /dev/null +++ b/src/actions/fluxbeam/setMintAuthority.ts @@ -0,0 +1,62 @@ +import { AuthorityType } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamSetAuthority } from "../../tools/fluxbeam_token_minting_controls"; +import { Action } from "../../types"; + +// Set Authority Action +const setAuthorityAction: Action = { + name: "SET_AUTHORITY_ACTION", + similes: ["change authority", "update authority", "modify authority"], + description: "Sets a new authority for a token mint", + examples: [ + [ + { + input: { + owner: "EPjFW...", + mint: "So11...", + authority: "MintTokens", + newAuthority: "NewAu...", + v2: true, + priorityFee: 100000000, + }, + output: { + status: "success", + signature: "6nSt9...", + }, + explanation: "Update mint authority", + }, + ], + ], + schema: z.object({ + owner: z.string(), + mint: z.string(), + authority: z.enum([ + "MintTokens", + "FreezeAccount", + "AccountOwner", + "CloseAccount", + ]), + newAuthority: z.string().nullable(), + v2: z.boolean().optional(), + priorityFee: z.number().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamSetAuthority( + agent, + new PublicKey(input.owner), + new PublicKey(input.mint), + input.authority as AuthorityType, + input.newAuthority ? new PublicKey(input.newAuthority) : null, + input.v2, + input.priorityFee, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default setAuthorityAction; diff --git a/src/actions/fluxbeam/unwrapSol.ts b/src/actions/fluxbeam/unwrapSol.ts new file mode 100644 index 00000000..4ba3d017 --- /dev/null +++ b/src/actions/fluxbeam/unwrapSol.ts @@ -0,0 +1,33 @@ +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamUnwrapSOL } from "../../tools"; +import { Action } from "../../types"; + +// Unwrap SOL Action +const unwrapSolAction: Action = { + name: "UNWRAP_SOL_ACTION", + similes: ["unwrap SOL", "convert wSOL to SOL", "get native SOL"], + description: "Unwraps wSOL back to native SOL", + examples: [ + [ + { + input: {}, + output: { + status: "success", + signature: "dAz6...", + }, + explanation: "Unwrap all wSOL to native SOL", + }, + ], + ], + schema: z.object({}), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamUnwrapSOL(agent); + return { + status: "success", + signature, + }; + }, +}; + +export default unwrapSolAction; diff --git a/src/actions/fluxbeam/updateV1TokenMetadata.ts b/src/actions/fluxbeam/updateV1TokenMetadata.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/actions/fluxbeam/updateV2TokenMetadata.ts b/src/actions/fluxbeam/updateV2TokenMetadata.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/actions/fluxbeam/wrapSol.ts b/src/actions/fluxbeam/wrapSol.ts new file mode 100644 index 00000000..12777214 --- /dev/null +++ b/src/actions/fluxbeam/wrapSol.ts @@ -0,0 +1,37 @@ +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamWrapSOL } from "../../tools"; +import { Action } from "../../types"; + +// Wrap SOL Action +const wrapSolAction: Action = { + name: "WRAP_SOL_ACTION", + similes: ["wrap SOL", "convert SOL to wSOL", "get wrapped SOL"], + description: "Wraps native SOL into wrapped SOL (wSOL)", + examples: [ + [ + { + input: { + amount: 1, + }, + output: { + status: "success", + signature: "cZy5...", + }, + explanation: "Wrap 1 SOL into wSOL", + }, + ], + ], + schema: z.object({ + amount: z.number().positive(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamWrapSOL(agent, input.amount); + return { + status: "success", + signature, + }; + }, +}; + +export default wrapSolAction; diff --git a/src/agent/index.ts b/src/agent/index.ts index c8fc50f7..73a8596f 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -1,4 +1,4 @@ -import { Connection, Keypair, PublicKey } from "@solana/web3.js"; +import { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js"; import { BN } from "@coral-xyz/anchor"; import bs58 from "bs58"; import Decimal from "decimal.js"; @@ -8,6 +8,8 @@ import { StoreInitOptions, } from "@3land/listings-sdk/dist/types/implementation/implementationTypes"; import { DEFAULT_OPTIONS } from "../constants"; +import { DEFAULT_OPTIONS, TOKENS } from "../constants"; +import { Config, FluxbeamServerResponse, TokenCheck } from "../types"; import { deploy_collection, deploy_token, @@ -130,6 +132,23 @@ import { PriorityFee, TargetTokenStruct, InputAssetStruct, + fluxbeamBurnToken, + fluxBeamCreatePool, + fluxbeamSubmitFeePayment, + fluxbeamSubmitFeeClaim, + fluxbeamUpdateV1Metadata, + fluxbeamUpdateV2Metadata, + fluxBeamSwap, + fluxbeamGetClaimWithheldTokensToMint, + fluxbeamGetClaimWitheldTokensFromMint, + fluxbeamGetClaimWitheldTokens, + fluxbeamCreateMintV2, + fluxbeamCreateMintV1, + fluxbeamTransferSol, + fluxbeamTransferSplToken, + fluxbeamUnwrapSOL, + fluxbeamWrapSOL, + ExtensionConfig, } from "../tools"; import { Config, @@ -155,6 +174,18 @@ import { SearchAssetsRpcInput, } from "@metaplex-foundation/digital-asset-standard-api"; import { AlloraInference, AlloraTopic } from "@alloralabs/allora-sdk"; +import { + AuthorityType, + ExtensionType, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { + fluxbeamMintToAccount, + fluxbeamRevokeAuthority, + fluxbeamSetAuthority, +} from "../tools/fluxbeam_token_minting_controls"; +import { KeypairSigner } from "@metaplex-foundation/umi"; +import { Chain, fluxbeamBridgeTokens } from "../tools/fluxbeam_bridge_tokens"; /** * Main class for interacting with Solana blockchain @@ -1107,4 +1138,264 @@ export class SolanaAgentKit { ): Promise { return simulate_switchboard_feed(this, feed, crossbarUrl); } + async fluxbeamBridgeTokens( + agent: SolanaAgentKit, + destination: Chain, + amount: number, + destinationWalletAddress: string, + fromToken: string, + toToken: string, + gasDrop?: number, + ) { + return fluxbeamBridgeTokens( + agent, + destination, + destinationWalletAddress, + fromToken, + toToken, + amount, + gasDrop, + ); + } + async fluxbeamBurnToken( + agent: SolanaAgentKit, + mint: PublicKey, + amount: number, + v2: boolean = true, + ): Promise { + return fluxbeamBurnToken(agent, mint, amount, v2); + } + async fluxbeamCreatePool( + agent: SolanaAgentKit, + token_a: PublicKey, + token_a_amount: number, + token_b: PublicKey, + token_b_amount: number, + ): Promise { + return fluxBeamCreatePool( + agent, + token_a, + token_a_amount, + token_b, + token_b_amount, + ); + } + async fluxbeamSubmitFeePayment( + agent: SolanaAgentKit, + quoteReq: { quote: any }, + priorityFee: number, + ): Promise { + return fluxbeamSubmitFeePayment(agent, quoteReq, priorityFee); + } + + async fluxbeamSubmitFeeClaim( + agent: SolanaAgentKit, + payer: PublicKey, + mint: PublicKey, + priorityFee: number, + ): Promise { + return fluxbeamSubmitFeeClaim(agent, payer, mint, priorityFee); + } + async fluxbeamUpdateV1Metadata( + agent: SolanaAgentKit, + mint: PublicKey, + name: string, + symbol: string, + uri: string, + ): Promise { + return fluxbeamUpdateV1Metadata(agent, mint, name, symbol, uri); + } + async fluxbeamUpdateV2Metadata( + agent: SolanaAgentKit, + mint: PublicKey, + name: string, + symbol: string, + uri: string, + ): Promise { + return fluxbeamUpdateV2Metadata(agent, mint, name, symbol, uri); + } + async fluxbeamMintToAccount( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMint: PublicKey, + amount: bigint, + v2: boolean, + ): Promise { + return fluxbeamMintToAccount(agent, owner, tokenMint, amount, v2); + } + async fluxbeamSetAuthority( + agent: SolanaAgentKit, + owner: PublicKey, + mint: PublicKey, + authority: AuthorityType, + newAuthority: PublicKey | null, + v2: boolean = true, + priorityFee: number = 100_000_000_000, + additional_signers: Keypair[] = [], + ): Promise { + return fluxbeamSetAuthority( + agent, + owner, + mint, + authority, + newAuthority, + v2, + priorityFee, + additional_signers, + ); + } + fluxbeamRevokeAuthority( + agent: SolanaAgentKit, + owner: PublicKey, + mint: PublicKey, + authority: AuthorityType, + v2: boolean = true, + priorityFee: number = 100_000_000_000, + additional_signers: Keypair[] = [], + ): Promise { + return fluxbeamRevokeAuthority( + agent, + owner, + mint, + authority, + v2, + priorityFee, + additional_signers, + ); + } + async fluxBeamSwap( + agent: SolanaAgentKit, + inputMint: PublicKey = TOKENS.USDC, + outputMint: PublicKey, + inputAmount: number, + slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, + ): Promise { + return fluxBeamSwap(agent, inputMint, outputMint, inputAmount, slippageBps); + } + async fluxbeamTransferSplToken( + agent: SolanaAgentKit, + mint: PublicKey, + dstOwner: PublicKey, + amount: number, + v2: boolean = true, + allowOwnerOffCurve = false, + ): Promise { + return fluxbeamTransferSplToken( + agent, + mint, + dstOwner, + amount, + v2, + allowOwnerOffCurve, + ); + } + + async fluxbeamTransferSol( + agent: SolanaAgentKit, + dstOwner: PublicKey, + amount: number, + ): Promise { + return fluxbeamTransferSol(agent, dstOwner, amount); + } + + async fluxbeamCreateMintV1( + agent: SolanaAgentKit, + name: string, + symbol: string, + decimals: number = 9, + uri?: string, + imagePath?: string, + initialSupply?: number, + ): Promise { + return fluxbeamCreateMintV1( + agent, + name, + symbol, + decimals, + initialSupply, + imagePath, + uri, + ); + } + + async fluxbeamCreateMintV2( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMintKeypair: Keypair, + name: string, + symbol: string, + totalSupply: bigint, + mintAuthority: PublicKey, + freezeAuthority: PublicKey | null, + decimals = 6, + mintTotalSupply = true, + priorityFee: number, + extensions: ExtensionConfig[], + description?: string, + metadataUri?: string, + imagePath?: string, + imageUri?: string, + ): Promise { + return fluxbeamCreateMintV2( + agent, + owner, + tokenMintKeypair, + name, + symbol, + totalSupply, + mintAuthority, + freezeAuthority, + decimals, + mintTotalSupply, + priorityFee, + extensions, + description, + metadataUri, + imagePath, + imageUri, + ); + } + + async fluxbeamGetClaimWithheldTokens( + agent: SolanaAgentKit, + mint: PublicKey, + authority: PublicKey, + srcAccounts: PublicKey[], + payer?: PublicKey, + ): Promise { + return fluxbeamGetClaimWitheldTokens( + agent, + mint, + authority, + srcAccounts, + payer, + ); + } + + async fluxbeamGetClaimWithheldTokensFromMint( + agent: SolanaAgentKit, + mint: PublicKey, + payer?: PublicKey, + ): Promise { + return fluxbeamGetClaimWitheldTokensFromMint(agent, mint, payer); + } + + async fluxbeamGetClaimWithheldTokensToMint( + agent: SolanaAgentKit, + mint: PublicKey, + srcAccounts: PublicKey[], + ): Promise { + return fluxbeamGetClaimWithheldTokensToMint(agent, mint, srcAccounts); + } + + async fluxbeamWrapSOL( + agent: SolanaAgentKit, + amount: number, + ): Promise { + return fluxbeamWrapSOL(agent, amount); + } + + async fluxbeamUnwrapSOL(agent: SolanaAgentKit): Promise { + return fluxbeamUnwrapSOL(agent); + } } diff --git a/src/constants/index.ts b/src/constants/index.ts index b62b3c6b..d51ccb97 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -60,3 +60,8 @@ export const SWITCHBOARD_DEFAULT_CROSSBAR = "https://crossbar.switchboard.xyz"; export const FEE_ACCOUNT = new PublicKey( "FLUXR4McuD2iXyP3wpP4XTjSWmB86ppMiyoA52UA9bKb", ); + +export const FLUXBEAM_BASE_URI = "https://api.fluxbeam.xyz/v1"; +export const MEMO_PROGRAM_ID = new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", +); diff --git a/src/langchain/fluxbeam/bridge_token.ts b/src/langchain/fluxbeam/bridge_token.ts new file mode 100644 index 00000000..c283cf76 --- /dev/null +++ b/src/langchain/fluxbeam/bridge_token.ts @@ -0,0 +1,53 @@ +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; +import { Chain } from "../../tools/fluxbeam_bridge_tokens"; + +export class SolanaFluxbeamBridgeTokensTool extends Tool { + name = "solana_bridge_tokens"; + description = `This tool bridges tokens from Solana to a destination blockchain. + + Inputs (input is a JSON string): + destination: string, e.g., "ethereum" (required) + destinationWalletAddress: string, wallet address on destination chain (required) + fromToken: string, e.g., "SOL" (required) + toToken: string, e.g., "USDT" (required) + gasDrop?: number, optional gas drop to be applied to the transaction (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + // Validate destination chain type + if (!(parsedInput.destination in Chain)) { + throw new Error("Invalid destination chain."); + } + + // Bridge the tokens + const signature = await this.solanaKit.fluxbeamBridgeTokens( + this.solanaKit, + parsedInput.destination as Chain, + parsedInput.destinationWalletAddress, + parsedInput.fromToken, + parsedInput.toToken, + parsedInput.gasDrop, + ); + + return JSON.stringify({ + status: "success", + message: "Token bridge initiated successfully", + transaction: signature, + track_url: `https://explorer.mayan.finance/tx/${signature}`, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/burn_token.ts b/src/langchain/fluxbeam/burn_token.ts new file mode 100644 index 00000000..a49dae86 --- /dev/null +++ b/src/langchain/fluxbeam/burn_token.ts @@ -0,0 +1,47 @@ +import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamBurnTokenTool extends Tool { + name = "solana_burn_token"; + description = `This tool can be used to burn a specified amount of tokens. + + Inputs (input is a JSON string): + mint: string, eg "So11111111111111111111111111111111111111112" (required) + amount: number, eg 1 or 0.01 (required) + decimals: number, eg 6 or 9 (required) + v2: boolean eg true or false (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamBurnToken( + this.solanaKit, + new PublicKey(parsedInput.mint), + parsedInput.amount, + parsedInput.v2 || true, + ); + + return JSON.stringify({ + status: "success", + message: "Token burn executed successfully", + transaction: signature, + mint: parsedInput.mint, + amount: parsedInput.amount, + decimals: parsedInput.decimals, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} \ No newline at end of file diff --git a/src/langchain/fluxbeam/create_mint_v1.ts b/src/langchain/fluxbeam/create_mint_v1.ts new file mode 100644 index 00000000..b1816e0e --- /dev/null +++ b/src/langchain/fluxbeam/create_mint_v1.ts @@ -0,0 +1,48 @@ +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamCreateMintV1Tool extends Tool { + name = "solana_create_mint_v1"; + description = `This tool creates a mint on the Solana blockchain. + + Inputs (input is a JSON string): + name: string, token name (required) + symbol: Symbol of the token + decimals: Number of decimals eg. 9 + initialSupply: number (required) + imagePath: path to the image + uri: URI for the token metadata + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamCreateMintV1( + this.solanaKit, + parsedInput.name, + parsedInput.symbol, + parsedInput.decimals, + parsedInput.uri, + parsedInput.imagePath, + parsedInput.initialSupply, + ); + + return JSON.stringify({ + status: "success", + message: "Mint created successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/create_mint_v2.ts b/src/langchain/fluxbeam/create_mint_v2.ts new file mode 100644 index 00000000..48cbb6b1 --- /dev/null +++ b/src/langchain/fluxbeam/create_mint_v2.ts @@ -0,0 +1,66 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamCreateMintV2Tool extends Tool { + name = "solana_create_mint_v2"; + description = `This tool creates a mint on the Solana blockchain (version 2). + + Inputs (input is a JSON string): + owner: string, e.g., "OwnerPublicKey" (required) + tokenMintKeypair: Keypair, e.g., "TokenMintKeypair" (required) + name: string, token name (required) + symbol: string, token symbol (required) + metadataUri: string uri of token metadata, + totalSupply: bigint, + mintAuthority: PublicKey, + freezeAuthority: PublicKey | null, + decimals = 6, + mintTotalSupply = true, + priorityFee: number, e.g., 5000 (required) + extensions: ExtensionConfig[] array of token extensions and their custom config objects (required) + description?: string token description (optional) + metadataUri?: string metadataURI (optional), + imagePath?: string image path (optional), + imageUri?: string, optional image URL (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamCreateMintV2( + this.solanaKit, + new PublicKey(parsedInput.owner), + parsedInput.tokenMintKeypair, + parsedInput.name, + parsedInput.symbol, + parsedInput.description, + parsedInput.metadataURI, + parsedInput.totalSupply, + parsedInput.mintAuthority, + parsedInput.freezeAuthority, + parsedInput.decimals || 6, + parsedInput.mintTotalSupply || true, + parsedInput.priorityFee, + parsedInput.imageData, + parsedInput.imageUri, + ); + + return JSON.stringify({ + status: "success", + message: "Mint created successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/create_pool.ts b/src/langchain/fluxbeam/create_pool.ts new file mode 100644 index 00000000..0066159f --- /dev/null +++ b/src/langchain/fluxbeam/create_pool.ts @@ -0,0 +1,48 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamCreatePoolTool extends Tool { + name = "fluxbeam_create_pool"; + description = `This tool can be used to create a new token pool using FluxBeam. + + Inputs (input is a JSON string): + token_a: string, eg "So11111111111111111111111111111111111111112" (required) + token_a_amount: number, eg 100 or 0.1 (required) + token_b: string, eg "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" (required) + token_b_amount: number, eg 200 or 0.2 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamCreatePool( + this.solanaKit, + new PublicKey(parsedInput.token_a), + parsedInput.token_a_amount, + new PublicKey(parsedInput.token_b), + parsedInput.token_b_amount, + ); + + return JSON.stringify({ + status: "success", + message: "Token pool created successfully", + transaction: signature, + token_a: parsedInput.token_a, + token_a_amount: parsedInput.token_a_amount, + token_b: parsedInput.token_b, + token_b_amount: parsedInput.token_b_amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/fee_management.ts b/src/langchain/fluxbeam/fee_management.ts new file mode 100644 index 00000000..d77c8f7e --- /dev/null +++ b/src/langchain/fluxbeam/fee_management.ts @@ -0,0 +1,79 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamSubmitFeePaymentTool extends Tool { + name = "solana_submit_fee_payment"; + description = `This tool can be used to submit a fee payment transaction. + + Inputs (input is a JSON string): + quoteReq: object, e.g., { "quote": { "payer": "SomePubKeyString", "fee": 1000000 } } (required) + priorityFee: number, e.g., 100000 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamSubmitFeePayment( + this.solanaKit, + parsedInput.quoteReq, + parsedInput.priorityFee, + ); + + return JSON.stringify({ + status: "success", + message: "Fee payment transaction submitted successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaFluxbeamSubmitFeeClaimTool extends Tool { + name = "solana_submit_fee_claim"; + description = `This tool can be used to submit a fee claim transaction. + + Inputs (input is a JSON string): + payer: string, e.g., "SomePubKeyString" (required) + mint: string, e.g., "SomeMintPubKeyString" (required) + priorityFee: number, e.g., 100000 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamSubmitFeeClaim( + this.solanaKit, + new PublicKey(parsedInput.payer), + new PublicKey(parsedInput.mint), + parsedInput.priorityFee, + ); + + return JSON.stringify({ + status: "success", + message: "Fee claim transaction submitted successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/swap.ts b/src/langchain/fluxbeam/swap.ts new file mode 100644 index 00000000..d3b8cc8c --- /dev/null +++ b/src/langchain/fluxbeam/swap.ts @@ -0,0 +1,49 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; +import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; + +export class SolanaFluxBeamSwapTool extends Tool { + name = "solana_fluxbeam_swap"; + description = `This tool swaps tokens using the FluxBeam DEX. + + Inputs (input is a JSON string): + outputMint: string, eg "So11111111111111111111111111111111111111112" (required) + inputAmount: number, eg 100 (required, amount in token decimals) + inputMint?: string, eg "EPjFWdd5AufqSSQBj1RNkQu86VkzPzZPuTz2tnn8kq5" (optional, defaults to USDC) + slippageBps?: number, eg 300 (optional, default 300 = 3% slippage tolerance)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxBeamSwap( + this.solanaKit, + parsedInput.inputMint + ? new PublicKey(parsedInput.inputMint) + : TOKENS.USDC, + new PublicKey(parsedInput.outputMint), + parsedInput.inputAmount, + parsedInput.slippageBps || DEFAULT_OPTIONS.SLIPPAGE_BPS, + ); + + return JSON.stringify({ + status: "success", + message: "Token swap executed successfully", + transaction: signature, + outputMint: parsedInput.outputMint, + inputAmount: parsedInput.inputAmount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/token_minting_controls.ts b/src/langchain/fluxbeam/token_minting_controls.ts new file mode 100644 index 00000000..4f96e23e --- /dev/null +++ b/src/langchain/fluxbeam/token_minting_controls.ts @@ -0,0 +1,141 @@ +import { TOKEN_2022_PROGRAM_ID, AuthorityType } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamMintToAccountTool extends Tool { + name = "solana_fluxbeam_mint_to_account"; + description = `This tool mints tokens to a specified account. + + Inputs (input is a JSON string): + owner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) + tokenMint: string, eg "So11111111111111111111111111111111111111112" (required) + amount: bigint, eg 1000000000000000n (required, amount in token decimals) + program?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamMintToAccount( + this.solanaKit, + new PublicKey(parsedInput.owner), + new PublicKey(parsedInput.tokenMint), + BigInt(parsedInput.amount), + parsedInput.v2 || true, + ); + + return JSON.stringify({ + status: "success", + message: "Tokens minted successfully", + transaction: signature, + owner: parsedInput.owner, + tokenMint: parsedInput.tokenMint, + amount: parsedInput.amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaFluxbeamSetAuthorityTool extends Tool { + name = "solana_fluxbeam_set_authority"; + description = `This tool sets a new authority for a token mint. + + Inputs (input is a JSON string): + owner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) + mint: string, eg "So11111111111111111111111111111111111111112" (required) + authority: string, eg "MintTokens" (required, AuthorityType as a string) + newAuthority: string | null, eg "NewAuthorityPublicKey" or null (required) + programID?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID) + priorityFee?: number, eg 100000000000 (optional, default is 100 lamports) + additional_signers: Keypair[] (optional)`; + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamSetAuthority( + this.solanaKit, + new PublicKey(parsedInput.owner), + new PublicKey(parsedInput.mint), + parsedInput.authority as AuthorityType, + parsedInput.newAuthority + ? new PublicKey(parsedInput.newAuthority) + : null, + parsedInput.programID || TOKEN_2022_PROGRAM_ID, + parsedInput.priorityFee || 100_000_000_000, + parsedInput.additional_signers, + ); + + return JSON.stringify({ + status: "success", + message: "Authority set successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaFluxbeamRevokeAuthorityTool extends Tool { + name = "solana_fluxbeam_revoke_authority"; + description = `This tool revokes authority for a token mint. + + Inputs (input is a JSON string): + owner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) + mint: string, eg "So11111111111111111111111111111111111111112" (required) + authority: string, eg "MintTokens" (required, AuthorityType as a string) + programID?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID) + priorityFee?: number, eg 100000000000 (optional, default is 100 lamports) + additional_signers: Keypair[] (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamRevokeAuthority( + this.solanaKit, + new PublicKey(parsedInput.owner), + new PublicKey(parsedInput.mint), + parsedInput.authority as AuthorityType, + parsedInput.programID || TOKEN_2022_PROGRAM_ID, + parsedInput.priorityFee || 100_000_000_000, + parsedInput.additional_signers, + ); + + return JSON.stringify({ + status: "success", + message: "Authority revoked successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/transfer.ts b/src/langchain/fluxbeam/transfer.ts new file mode 100644 index 00000000..35395cfe --- /dev/null +++ b/src/langchain/fluxbeam/transfer.ts @@ -0,0 +1,90 @@ +import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamTransferSplTokenTool extends Tool { + name = "solana_transfer_spl_token"; + description = `This tool transfers SPL tokens from the agent's wallet to another wallet. + + Inputs (input is a JSON string): + mint: string, eg "So11111111111111111111111111111111111111112" (required) + dstOwner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) + amount: number, eg 1 or 0.01 (required) + program?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID) + allowOwnerOffCurve?: boolean, eg true or false (optional, defaults to false)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamTransferSplToken( + this.solanaKit, + new PublicKey(parsedInput.mint), + new PublicKey(parsedInput.dstOwner), + parsedInput.amount, + parsedInput.v2 || true, + parsedInput.allowOwnerOffCurve || false, + ); + + return JSON.stringify({ + status: "success", + message: "SPL token transfer executed successfully", + transaction: signature, + mint: parsedInput.mint, + dstOwner: parsedInput.dstOwner, + amount: parsedInput.amount, + decimals: parsedInput.decimals, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaFluxbeamTransferSolTool extends Tool { + name = "solana_transfer_sol"; + description = `This tool transfers SOL from the agent's wallet to another wallet. + + Inputs (input is a JSON string): + dstOwner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) + amount: number, eg 1000000 (required, amount in lamports)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamTransferSol( + this.solanaKit, + new PublicKey(parsedInput.dstOwner), + parsedInput.amount, + ); + + return JSON.stringify({ + status: "success", + message: "SOL transfer executed successfully", + transaction: signature, + dstOwner: parsedInput.dstOwner, + amount: parsedInput.amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/update_v1_token_metadata.ts b/src/langchain/fluxbeam/update_v1_token_metadata.ts new file mode 100644 index 00000000..21de81bf --- /dev/null +++ b/src/langchain/fluxbeam/update_v1_token_metadata.ts @@ -0,0 +1,46 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamUpdateMetadataTool extends Tool { + name = "solana_update_metadata"; + description = `This tool updates metadata for a token account. + + Inputs (input is a JSON string): + mint: string, e.g., "TokenMintPublicKey" (required) + name: string, token name (required) + symbol: string, token symbol (required) + uri: string, token symbol (required) + `; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamUpdateV1Metadata( + this.solanaKit, + // updateAuthority, + new PublicKey(parsedInput.mint), + parsedInput.name, + parsedInput.symbol, + parsedInput.uri, + ); + + return JSON.stringify({ + status: "success", + message: "Metadata updated successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/update_v2_token_metadata.ts b/src/langchain/fluxbeam/update_v2_token_metadata.ts new file mode 100644 index 00000000..87d597ce --- /dev/null +++ b/src/langchain/fluxbeam/update_v2_token_metadata.ts @@ -0,0 +1,44 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamUpdateV2MetadataTool extends Tool { + name = "solana_update_token2022_metadata"; + description = `This tool updates metadata for a token using the 2022 standard. + + Inputs (input is a JSON string): + mint: string, e.g., "TokenMintPublicKey" (required) + name: string, token name (required) + symbol: string, token symbol (required) + uri:string token uri (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = this.solanaKit.fluxbeamUpdateV2Metadata( + this.solanaKit, + new PublicKey(parsedInput.mint), + parsedInput.name, + parsedInput.symbol, + parsedInput.uri, + ); + + return JSON.stringify({ + status: "success", + message: "Token 2022 metadata updated successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/withheld_amounts_tracking.ts b/src/langchain/fluxbeam/withheld_amounts_tracking.ts new file mode 100644 index 00000000..60b5fe11 --- /dev/null +++ b/src/langchain/fluxbeam/withheld_amounts_tracking.ts @@ -0,0 +1,118 @@ +import { PublicKey } from "@solana/web3.js"; +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamGetClaimWithheldTokensTool extends Tool { + name = "solana_claim_withheld_tokens"; + description = `This tool claims all withheld tokens for a given mint. + + Inputs (input is a JSON string): + mint: string, e.g., "So11111111111111111111111111111111111111112" (required) + authority: string, e.g., "AuthorityPublicKeyString" (required) + srcAccounts: string[], e.g., ["Account1PubKey", "Account2PubKey"] (required) + payer?: string, e.g., "PayerPublicKeyString" (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signatures = await this.solanaKit.fluxbeamGetClaimWithheldTokens( + this.solanaKit, + new PublicKey(parsedInput.mint), + new PublicKey(parsedInput.authority), + parsedInput.srcAccounts.map((acc: string) => new PublicKey(acc)), + parsedInput.payer ? new PublicKey(parsedInput.payer) : undefined, + ); + + return JSON.stringify({ + status: "success", + message: "Claimed withheld tokens successfully", + transactions: signatures, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} +export class SolanaFluxbeamGetClaimWithheldTokensFromMintTool extends Tool { + name = "solana_claim_withheld_tokens_from_mint"; + description = `This tool claims withheld tokens from the mint account. + + Inputs (input is a JSON string): + mint: string, e.g., "So11111111111111111111111111111111111111112" (required) + payer?: string, e.g., "PayerPublicKeyString" (optional)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signature = + await this.solanaKit.fluxbeamGetClaimWithheldTokensFromMint( + this.solanaKit, + new PublicKey(parsedInput.mint), + parsedInput.payer ? new PublicKey(parsedInput.payer) : undefined, + ); + + return JSON.stringify({ + status: "success", + message: "Claimed withheld tokens from mint successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} +export class SolanaFluxbeamGetClaimWithheldTokensToMintTool extends Tool { + name = "solana_claim_withheld_tokens_to_mint"; + description = `This tool harvests withheld tokens to the mint account (permissionless). + + Inputs (input is a JSON string): + mint: string, e.g., "So11111111111111111111111111111111111111112" (required) + srcAccounts: string[], e.g., ["Account1PubKey", "Account2PubKey"] (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + const signatures = + await this.solanaKit.fluxbeamGetClaimWithheldTokensToMint( + this.solanaKit, + new PublicKey(parsedInput.mint), + parsedInput.srcAccounts.map((acc: string) => new PublicKey(acc)), + ); + + return JSON.stringify({ + status: "success", + message: "Harvested withheld tokens to mint successfully", + transactions: signatures, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts b/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts new file mode 100644 index 00000000..03c727f0 --- /dev/null +++ b/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts @@ -0,0 +1,71 @@ +import { Tool } from "langchain/tools"; +import { SolanaAgentKit } from "../../agent"; + +export class SolanaFluxbeamWrapSOLTool extends Tool { + name = "solana_fluxbeam_wrap_sol"; + description = `This tool wraps SOL into wSOL for the specified amount in lamports. + + Inputs (input is a JSON string): + amount: number, eg 1000000 (required)`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(input: string): Promise { + try { + const parsedInput = JSON.parse(input); + + if (!parsedInput.amount || typeof parsedInput.amount !== "number") { + throw new Error( + "Invalid input: 'amount' is required and must be a number.", + ); + } + + const signature = await this.solanaKit.fluxbeamWrapSOL( + this.solanaKit, + parsedInput.amount, + ); + + return JSON.stringify({ + status: "success", + message: "SOL wrapped successfully", + transaction: signature, + amount: parsedInput.amount, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} + +export class SolanaFluxbeamUnwrapSOLTool extends Tool { + name = "solana_fluxbeam_unwrap_sol"; + description = `This tool unwraps wSOL back into SOL for the user's wallet. No additional inputs required.`; + + constructor(private solanaKit: SolanaAgentKit) { + super(); + } + + protected async _call(): Promise { + try { + const signature = await this.solanaKit.fluxbeamUnwrapSOL(this.solanaKit); + + return JSON.stringify({ + status: "success", + message: "wSOL unwrapped successfully", + transaction: signature, + }); + } catch (error: any) { + return JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + }); + } + } +} diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 798de7f3..90e33af6 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -32,7 +32,7 @@ export * from "./mayan"; export * from "./allora"; export * from "./solutiofi"; export * from "./switchboard"; - +export * from "./fluxbeam" import type { SolanaAgentKit } from "../agent"; import { SolanaBalanceTool, @@ -263,5 +263,23 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaMergeTokensTool(solanaKit), new SolanaSpreadTokenTool(solanaKit), new SolanaAlloraGetPriceInference(solanaKit), + new SolanaFluxbeamBridgeTokensTool(solanaKit), + new SolanaFluxbeamBurnTokenTool(solanaKit), + new SolanaFluxbeamCreatePoolTool(solanaKit), + new SolanaFluxbeamCreatePoolTool(solanaKit), + new SolanaFluxbeamSubmitFeeClaimTool(solanaKit), + new SolanaFluxbeamSubmitFeePaymentTool(solanaKit), + new SolanaFluxbeamUpdateMetadataTool(solanaKit), + new SolanaFluxbeamUpdateV2MetadataTool(solanaKit), + new SolanaFluxbeamMintToAccountTool(solanaKit), + new SolanaFluxbeamSetAuthorityTool(solanaKit), + new SolanaFluxbeamRevokeAuthorityTool(solanaKit), + new SolanaFluxbeamCreateMintV1Tool(solanaKit), + new SolanaFluxbeamCreateMintV2Tool(solanaKit), + new SolanaFluxbeamGetClaimWithheldTokensFromMintTool(solanaKit), + new SolanaFluxbeamGetClaimWithheldTokensToMintTool(solanaKit), + new SolanaFluxbeamGetClaimWithheldTokensTool(solanaKit), + new SolanaFluxbeamWrapSOLTool(solanaKit), + new SolanaFluxbeamUnwrapSOLTool(solanaKit), ]; } diff --git a/src/tools/fluxbeam_bridge_tokens.ts b/src/tools/fluxbeam_bridge_tokens.ts new file mode 100644 index 00000000..961e698e --- /dev/null +++ b/src/tools/fluxbeam_bridge_tokens.ts @@ -0,0 +1,120 @@ +/* eslint-disable no-console */ +import { + fetchQuote, + swapFromSolana, + Quote, + SolanaTransactionSigner, +} from "@mayanfinance/swap-sdk"; +import { SolanaAgentKit } from "../agent"; +import { Transaction, VersionedTransaction } from "@solana/web3.js"; + +export enum Chain { + Ethereum = "ethereum", + Bsc = "bsc", + Polygon = "polygon", + Avalanche = "avalanche", + Solana = "solana", + Arbitrum = "arbitrum", + Optimism = "optimism", + Base = "base", +} + +export const GAS_DROP_LIMITS: Record = { + [Chain.Ethereum]: 0.05, + [Chain.Bsc]: 0.02, + [Chain.Polygon]: 0.2, + [Chain.Avalanche]: 0.2, + [Chain.Solana]: 0.2, + [Chain.Arbitrum]: 0.01, + [Chain.Optimism]: 0.01, + [Chain.Base]: 0.01, +}; + +/** + * Bridges tokens from Solana to a destination chain using the Mayan Finance protocol. + * + * This function performs a token swap from Solana to another blockchain (Ethereum, BSC, Polygon, etc.). + * It fetches a quote for the swap, signs the transaction, and then initiates the swap. + * + * @param {SolanaAgentKit} agent - The agent responsible for the Solana wallet and network connection. + * @param {Chain} destination - The destination blockchain to which the tokens are being swapped. + * @param {string} destinationWalletAddress - The wallet address on the destination chain to receive the tokens. + * @param {string} fromToken - The token address to be swapped from. + * @param {string} toToken - The token address to be swapped to. + * @param {number} [gasDrop] - The optional gas drop to be applied to the transaction. Must not exceed the limit for the source chain. + * + * @throws {Error} Throws an error if the gas drop exceeds the source chain's limit. + * @throws {Error} Throws an error if the transaction type is invalid during signing. + * + * @returns {Promise} A promise that resolves to the transaction signature of the initiated swap. + * + */ + +export async function fluxbeamBridgeTokens( + agent: SolanaAgentKit, + destination: Chain, + destinationWalletAddress: string, + fromToken: string, + toToken: string, + amount: number, + gasDrop?: number, +): Promise { + async function signer(trx: Transaction): Promise; + async function signer( + trx: VersionedTransaction, + ): Promise; + async function signer( + trx: Transaction | VersionedTransaction, + ): Promise { + if ("version" in trx) { + (trx as VersionedTransaction).sign([agent.wallet]); + } else { + (trx as Transaction).partialSign(agent.wallet); + } + return trx; + } + try { + // Validate gas drop + if (gasDrop !== undefined && gasDrop > GAS_DROP_LIMITS[destination]) { + throw new Error( + `Gas drop for ${destination} cannot exceed ${GAS_DROP_LIMITS[destination]}`, + ); + } + + const quotes = await fetchQuote({ + amount: amount, + fromToken: fromToken, + toToken: toToken, + fromChain: Chain.Solana, + toChain: destination, + slippageBps: 50, // means 3% + // gasDrop: gasDrop ?? 0.04, // optional + referrerBps: 5, // optional + }); + for (const quote of quotes) { + console.log(quote); + } + + //just pass the fn the txn object that it uses is internally implemented + const swapTrx = await swapFromSolana( + quotes[0], + agent.wallet_address.toString(), + destinationWalletAddress, + null, + signer, + agent.connection, + ); + + console.log("Swap initiated! Transaction signature:", swapTrx.signature); + + // You can track the swap status using the Mayan Explorer API + console.log( + "Track your swap at:", + `https://explorer.mayan.finance/tx/${swapTrx.signature}`, + ); + + return swapTrx.signature; + } catch (error: any) { + throw Error(`Bridging failed: ${error.message}`); + } +} diff --git a/src/tools/fluxbeam_burn_token.ts b/src/tools/fluxbeam_burn_token.ts index 2a6e3f97..06f693a7 100644 --- a/src/tools/fluxbeam_burn_token.ts +++ b/src/tools/fluxbeam_burn_token.ts @@ -1,8 +1,18 @@ -import { PublicKey, Transaction } from "@solana/web3.js"; -import { getAssociatedTokenPDA } from "../utils/fluxbeam_utils"; +import { + PublicKey, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { + getAssociatedTokenPDA, + sendTransaction, + signTransaction, +} from "../utils/FluxbeamClient"; import { createBurnCheckedInstruction, + getMint, TOKEN_2022_PROGRAM_ID, + TOKEN_PROGRAM_ID, } from "@solana/spl-token"; import { SolanaAgentKit } from "../agent"; @@ -11,18 +21,20 @@ import { SolanaAgentKit } from "../agent"; * @param agent SolanaAgentKit instance * @param mint Token mint address * @param amount Amount of tokens to burn - * @param decimals Token decimals * @param program Optional token program ID (defaults to TOKEN_2022_PROGRAM_ID) * @returns Transaction signature */ -export async function fluxbeamBurnTokens( +export async function fluxbeamBurnToken( agent: SolanaAgentKit, mint: PublicKey, amount: number, - decimals: number, - program = TOKEN_2022_PROGRAM_ID, + v2: boolean = true, ): Promise { try { + const program = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; + const decimals = ( + await getMint(agent.connection, mint, "finalized", program) + ).decimals; const srcAta = await getAssociatedTokenPDA( mint, agent.wallet_address, @@ -41,18 +53,11 @@ export async function fluxbeamBurnTokens( ), ); - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = agent.wallet_address; - transaction.recentBlockhash = bhash.blockhash; + const txn = await signTransaction(agent, transaction); - // Sign and send transaction - const signature = await agent.connection.sendTransaction( - transaction, - [agent.wallet], - { skipPreflight: false, preflightCommitment: "confirmed", maxRetries: 5 }, - ); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; } catch (error: any) { throw new Error(`Burn token failed: ${error.message}`); } diff --git a/src/tools/fluxbeam_create_pool.ts b/src/tools/fluxbeam_create_pool.ts index 3ff4d23d..f532c3ff 100644 --- a/src/tools/fluxbeam_create_pool.ts +++ b/src/tools/fluxbeam_create_pool.ts @@ -1,6 +1,6 @@ import { VersionedTransaction, PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../index"; -import { TOKENS } from "../constants"; +import { FLUXBEAM_BASE_URI, TOKENS } from "../constants"; import { getMint } from "@solana/spl-token"; /** @@ -21,8 +21,6 @@ export async function fluxBeamCreatePool( token_b_amount: number, ): Promise { try { - const FLUXBEAM_API = `https://api.fluxbeam.xyz/v1`; - const isTokenA_NativeSol = token_a.equals(TOKENS.SOL); const tokenA_Decimals = isTokenA_NativeSol ? 9 @@ -36,9 +34,8 @@ export async function fluxBeamCreatePool( : (await getMint(agent.connection, token_b)).decimals; const scaledAmountTokenB = token_b_amount * Math.pow(10, tokenB_Decimals); - - const { poolTransaction } = await ( - await fetch(`${FLUXBEAM_API}/token_pools`, { + const response = await ( + await fetch(`${FLUXBEAM_BASE_URI}/token_pools`, { method: "POST", headers: { "Content-Type": "application/json", @@ -49,23 +46,33 @@ export async function fluxBeamCreatePool( token_b: token_b, token_a_amount: scaledAmountTokenA, token_b_amount: scaledAmountTokenB, + priorityFeeLamports: 500000, }), }) ).json(); + if (response.error) { + throw new Error(response.error); + } // Deserialize transaction - const TransactionBuf = Buffer.from(poolTransaction, "base64"); + const TransactionBuf = Buffer.from(response.transaction, "base64"); const transaction = VersionedTransaction.deserialize(TransactionBuf); // Sign and send transaction transaction.sign([agent.wallet]); - const signature = agent.connection.sendRawTransaction( + const signature = await agent.connection.sendRawTransaction( transaction.serialize(), { maxRetries: 3, skipPreflight: true, }, ); + const latestBlockhash = await agent.connection.getLatestBlockhash(); + await agent.connection.confirmTransaction({ + signature, + blockhash: latestBlockhash.blockhash, + lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, + }); return signature; } catch (error: any) { throw new Error(`Swap failed: ${error.message}`); diff --git a/src/tools/fluxbeam_fee_management.ts b/src/tools/fluxbeam_fee_management.ts index cdd2506f..27dba9c1 100644 --- a/src/tools/fluxbeam_fee_management.ts +++ b/src/tools/fluxbeam_fee_management.ts @@ -11,132 +11,17 @@ import { TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token"; import { SolanaAgentKit } from "../agent"; +import { MEMO_PROGRAM_ID } from "../constants"; +import { signTransaction, sendTransaction } from "../utils/FluxbeamClient"; -const baseURI = "https://api.fluxbeam.xyz/v1"; -const MEMO_PROGRAM_ID = new PublicKey( - "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", +const FEE_ACCOUNT = new PublicKey( + "FEE1M4bRtos7Yi8cni9s6zpxDfZTSsARwrhqMJMLLKhv", ); -const FEE_ACCOUNTS = [ - new PublicKey("FEE1M4bRtos7Yi8cni9s6zpxDfZTSsARwrhqMJMLLKhv"), - // new PublicKey("FEE2qEfVjE64bdT9SXRa4ALvm4tFcwg7WE8ArQDuTjuD"), - // new PublicKey("FEE3veNwA943NP38BB968i3Zo1Mjxtn9bkHN8eK8UKHS"), - // new PublicKey("FEE4hmPcfXNTgscRrqpjnQQiNjdQN4XGVVZQqHgFYcNT"), - // new PublicKey("FEE5sDtT4N7AsGnsBNxB9EUEMTnRoJqZ56FZubsDKTxm"), - // new PublicKey("FEE6Ytka6NhFKNN9mJrGGGomSMs1Dk7GDXEwdjoiwt6t"), - // new PublicKey("FEE7HqiD7CCv9bYrWhfFou8naYdhZU78C6KdWV8kLouY"), - // new PublicKey("FEE8ZTYvsC3CLe8YnkN4vXikxnUcecmDB5D8ShXAAqPW"), - // new PublicKey("FEE9Z48Pdm7Dt1pr5kCZ1gwt6hWX5Kmohk45SBJHXmZX"), -]; - -/** - * Get cluster status - */ -export async function clusterStatus() { - const resp = await fetch(uri(`status`)); - if (resp.status !== 200) { - throw new Error(resp.statusText); - } - - return await resp.json(); -} - -/** - * Get job details - */ -export async function getJob(pk: string) { - const response = await fetch(uri(`jobs/${pk}`)); - if (!response.ok) { - throw new Error(`Failed to fetch job: ${response.statusText}`); - } - return response.json(); -} - -/** - * Get history for a mint - */ -export async function getHistory(mint: PublicKey): Promise { - const response = await fetch(uri(`history/${mint}`)); - if (!response.ok) { - throw new Error(`Failed to fetch history: ${response.statusText}`); - } - return response.json(); -} - -/** - * Restart a job - */ -export async function restartJob(pk: string) { - const response = await fetch(uri(`jobs/${pk}/restart`), { - method: "PUT", - }); - if (!response.ok) { - throw new Error(`Failed to restart job: ${response.statusText}`); - } - return response.json(); -} - -/** - * Get quote for fee payment - */ -export async function quote( - agent: SolanaAgentKit, - pk: PublicKey, - mint: PublicKey, -) { - const response = await fetch(uri(`jobs/quote`), { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - payer: agent.wallet_address.toBase58(), - mint: mint.toBase58(), - pipeline: "Fee Manager", - }), - }); - if (!response.ok) { - throw new Error(`Failed to get quote: ${response.statusText}`); - } - return response.json(); -} - -/** - * Submit a job - */ -export async function submitJob( - quote: string | Record, - hash: string, - signature: string, -) { - const response = await fetch(uri(`jobs`), { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - quote, - hash, - signature, - }), - }); - if (!response.ok) { - throw new Error(`Failed to submit job: ${response.statusText}`); - } - return response.json(); -} - -export function uri(endpoint: string) { - return `${baseURI}/workflow/${endpoint}`; -} - -export function feeAccount(): PublicKey { - return FEE_ACCOUNTS[Math.floor(Math.random() * FEE_ACCOUNTS.length)]; -} /** * Submit fee payment transaction */ -export async function submitFeePayment( +export async function fluxbeamSubmitFeePayment( agent: SolanaAgentKit, quoteReq: { quote: any }, priorityFee: number, @@ -147,15 +32,15 @@ export async function submitFeePayment( console.log("buildFeeTransaction", { quoteReq, quote, priorityFee }); const transaction = new Transaction(); const unit_limit = 160_000; + const unitPrice = Math.floor(priorityFee / unit_limit); // Add compute budget instructions - const unitPrice = Math.floor(priorityFee / unit_limit); transaction.add( ComputeBudgetProgram.setComputeUnitLimit({ units: unit_limit }), ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), SystemProgram.transfer({ fromPubkey: new PublicKey(quote.payer), //agent.wallet_address, - toPubkey: feeAccount(), + toPubkey: FEE_ACCOUNT, lamports: quote.fee, }), new TransactionInstruction({ @@ -165,35 +50,27 @@ export async function submitFeePayment( }), ); - // Set transaction parameters - const { blockhash } = await agent.connection.getLatestBlockhash(); - transaction.recentBlockhash = blockhash; - transaction.feePayer = agent.wallet_address; + const txn = await signTransaction(agent, transaction); - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; } catch (error: any) { throw new Error(`Fee payment failed: ${error.message}`); } } +//Enables tokens to harvest token fees generated by the Transfer Fee extension. /** - * Submit claim transaction + * Submit fee claim transaction */ -export async function submitClaim( +export async function fluxbeamSubmitFeeClaim( agent: SolanaAgentKit, - quoteReq: { quote: any }, payer: PublicKey, mint: PublicKey, priorityFee: number, ): Promise { try { - const { quote } = quoteReq; - const transaction = new Transaction(); const unitLimit = 160_000; const unitPrice = Math.floor(priorityFee / unitLimit); @@ -220,18 +97,12 @@ export async function submitClaim( ), ); - // Set transaction parameters - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - transaction.recentBlockhash = bhash.blockhash; - transaction.feePayer = agent.wallet_address; + const txn = await signTransaction(agent, transaction); - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; } catch (error: any) { - throw new Error(`Fee payment failed: ${error.message}`); + throw new Error(`Fee claim failed: ${error.message}`); } } diff --git a/src/tools/fluxbeam_fetch_pools.ts b/src/tools/fluxbeam_fetch_pools.ts deleted file mode 100644 index 20a46a68..00000000 --- a/src/tools/fluxbeam_fetch_pools.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; - -const baseURI = "https://api.fluxbeam.xyz/v1"; - -export async function search(query: string, page: number = 0) { - return await (await fetch(uri(`search?q=${query}&page=${page}`))).json(); -} - -export async function pools(page: number, limit = 100) { - return await (await fetch(uri(`pools?limit=${limit}&page=${page}`))).json(); -} - -export async function pool(pk: PublicKey) { - return (await fetch(uri(`pools/${pk}`))).json(); -} - -export async function poolByTicker(ticker: string) { - return (await fetch(uri(`pool-tickers/${ticker}`))).json(); -} - -export async function poolByMint(ticker: string) { - return (await fetch(uri(`pool-mints/${ticker}`))).json(); -} - -export async function listings(ticker: string) { - return (await fetch(uri(`pool-listings/${ticker.toLowerCase()}`))).json(); -} - -export function uri(endpoint: string) { - return `${baseURI}/spl22/${endpoint}`; -} diff --git a/src/tools/fluxbeam_liquidity_management.ts b/src/tools/fluxbeam_liquidity_management.ts index 3be2c569..e69de29b 100644 --- a/src/tools/fluxbeam_liquidity_management.ts +++ b/src/tools/fluxbeam_liquidity_management.ts @@ -1,558 +0,0 @@ -/* eslint-disable @typescript-eslint/ban-ts-comment */ -import { BN, web3 } from "@project-serum/anchor"; -import { - createAssociatedTokenAccountInstruction, - createCloseAccountInstruction, - createHarvestWithheldTokensToMintInstruction, - createSyncNativeInstruction, - createTransferCheckedInstruction, - getAssociatedTokenAddressSync, - TOKEN_2022_PROGRAM_ID, -} from "@solana/spl-token"; -import { - PoolConfig, - TokenInput, - TokenSwapLayout, - TokenSwapPool, -} from "./layouts"; -import { SWAP_PROGRAM_ID, WSOL } from "./constants"; -import Instructions from "./instructions"; -import { SolanaAgentKit } from "../agent"; -import { ComputeBudgetProgram, PublicKey, Transaction } from "@solana/web3.js"; -import { - getUnwrapSOLInstruction, - getWrapSOLInstructions, -} from "./fluxbeam_wrap_and_unwrap_sol"; - -export default class Client { - connection; - - poolTokenProgramId = TOKEN_2022_PROGRAM_ID; //The program ID of the token program for the pool tokens - - constructor(connection: Connection) { - this.connection = connection; - } - - async createAddLiquidityTransaction( - agent: SolanaAgentKit, - payer: PublicKey, - pool: PublicKey, - route: TokenSwapPool, - srcMint: TokenInput, - dstMint: TokenInput, - poolTokenAmount: any, - initTokenPrice = false, - priorityFee, - ) { - const mintAInfo = await this.connection.getParsedAccountInfo(route.mintA); - const mintBInfo = await this.connection.getParsedAccountInfo(route.mintB); - const [authority] = PublicKey.findProgramAddressSync( - [pool.toBuffer()], - SWAP_PROGRAM_ID, - ); - - const userAccountA = getAssociatedTokenAddressSync( - route.mintA, - payer, - true, - mintAInfo.value?.owner, - ); - const userAccountB = getAssociatedTokenAddressSync( - route.mintB, - payer, - true, - mintBInfo.value?.owner, - ); - const userPoolTokenAccount = getAssociatedTokenAddressSync( - route.tokenPool, - payer, - true, - TOKEN_2022_PROGRAM_ID, - ); - - const balanceInfo = await this.connection.getMultipleParsedAccounts( - [userPoolTokenAccount], - { - commitment: "confirmed", - }, - ); - const [userPoolTokenAccountInfo] = balanceInfo.value; - - const unitLimit = 100_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - const transaction = new Transaction().add( - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: unitPrice, - }), - ); - - if (route.mintA.equals(WSOL)) { - //Do sync native checks - const ixs = await getWrapSOLInstructions(agent, payer, srcMint.amount); - if (ixs.length > 0) { - transaction.add(...ixs); - } - } - - if (route.mintB.equals(WSOL)) { - //Do sync native checks - const ixs = await getWrapSOLInstructions(agent, payer, dstMint.amount); - if (ixs.length > 0) { - transaction.add(...ixs); - } - } - - if (!userPoolTokenAccountInfo) { - transaction.add( - createAssociatedTokenAccountInstruction( - payer, - userPoolTokenAccount, - payer, - route.tokenPool, - TOKEN_2022_PROGRAM_ID, - ), - ); - } - - console.debug("depositAllTokenTypesInstruction", { - pool, - mintA: route.mintA, - mintB: route.mintB, - poolTokenAmount: poolTokenAmount, - tokenAAmount: srcMint.amount, - tokenBAmount: dstMint.amount, - srcMint, - dstMint, - }); - - if (initTokenPrice) { - const ratio = dstMint.amount / srcMint.amount; - - //ts-ignore - poolTokenAmount = 1_000_000_000; - - console.log("initTokenPrice", { - poolTokenAmount: poolTokenAmount, - tokenA: route.mintA.toString(), - tokenB: route.mintB.toString(), - ratio, //b to a - amountA: srcMint.amount, - amountB: dstMint.amount, - eAmountA: srcMint.amount / 2, - eAmountB: dstMint.amount / 2, - exactAmountInA: srcMint.amountInExact(srcMint.amount / 2), - exactAmountInB: dstMint.amountInExact(dstMint.amount / 2), - }); - - //@ts-ignore - transaction.add( - createTransferCheckedInstruction( - userAccountA, - route.mintA, - route.tokenAccountA, - payer, - srcMint.amountInExact(srcMint.amount / 2), - mintAInfo.value?.data?.parsed?.info.decimals, - [], - mintAInfo.value?.owner, - ), - ); - - //@ts-ignore - transaction.add( - createTransferCheckedInstruction( - userAccountB, - route.mintB, - route.tokenAccountB, - payer, - dstMint.amountInExact(dstMint.amount / 2), - mintBInfo.value?.data?.parsed?.info.decimals, - [], - mintBInfo.value?.owner, - ), - ); - - // srcMint.amount -= srcMint.exactAmountIn(srcMint.amount/2) - // dstMint.amount -= dstMint.exactAmountIn(dstMint.amount/2) - srcMint.amount = srcMint.amount / 2; - dstMint.amount = dstMint.amount / 2; - } - - transaction.add( - Instructions.depositAllTokenTypesInstruction( - pool, - authority, - payer, - userAccountA, - userAccountB, - route.tokenAccountA, - route.tokenAccountB, - route.tokenPool, - userPoolTokenAccount, - route.mintA, - route.mintB, - SWAP_PROGRAM_ID, - mintAInfo.value?.owner, - mintBInfo.value?.owner, - TOKEN_2022_PROGRAM_ID, - new BN(poolTokenAmount, 10), - new BN(srcMint.amount, 10), - new BN(dstMint.amount, 10), - ), - ); - - if (route.mintB.equals(WSOL)) { - //Do sync native checks - transaction.add(await getUnwrapSOLInstruction(payer)); - } - - return transaction; - } - - async createAddSingleSideLiquidityTransaction( - agent: SolanaAgentKit, - payer: PublicKey, - pool: PublicKey, - route: TokenSwapPool, - srcMint: TokenInput, - minPoolTokenAmount: BN, - priorityFee, - ) { - const [authority] = PublicKey.findProgramAddressSync( - [pool.toBuffer()], - SWAP_PROGRAM_ID, - ); - - const userAccount = getAssociatedTokenAddressSync( - srcMint.mint, - payer, - true, - srcMint.programID, - ); - const userPoolTokenAccount = getAssociatedTokenAddressSync( - route.tokenPool, - payer, - true, - TOKEN_2022_PROGRAM_ID, - ); - - const balanceInfo = await this.connection.getMultipleParsedAccounts( - [userPoolTokenAccount], - { - commitment: "confirmed", - }, - ); - const [userPoolTokenAccountInfo] = balanceInfo.value; - - const unitLimit = 200_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - const transaction = new Transaction().add( - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: unitPrice, - }), - ); - - if (srcMint.mint.equals(WSOL)) { - //Do sync native checks - const ixs = await getWrapSOLInstructions(agent, payer, srcMint.amount); - if (ixs.length > 0) { - transaction.add(...ixs); - } - } - - if (!userPoolTokenAccountInfo) { - transaction.add( - createAssociatedTokenAccountInstruction( - payer, - userPoolTokenAccount, - payer, - route.tokenPool, - TOKEN_2022_PROGRAM_ID, - ), - ); - } - - console.log("amountIn", srcMint.amount); - console.log("amountOut", minPoolTokenAmount); - - transaction.add( - Instructions.depositSingleTokenTypeExactAmountInInstruction( - pool, - authority, - payer, - userAccount, - route.tokenAccountA, - route.tokenAccountB, - route.tokenPool, - userPoolTokenAccount, - srcMint.mint, - SWAP_PROGRAM_ID, - srcMint.programID, - TOKEN_2022_PROGRAM_ID, - new BN(srcMint.amount), - new BN(minPoolTokenAmount), - ), - ); - - if (srcMint.mint.equals(WSOL)) { - //Do sync native checks - transaction.add(getUnwrapSOLInstruction(payer)); - } - - return transaction; - } - - async createRemoveLiquidityTransaction( - agent: SolanaAgentKit, - payer: PublicKey, - pool: PublicKey, - route: TokenSwapPool, - poolTokenAmount: number, - minimumTokenA: number, - minimumTokenB: number, - priorityFee: number, - ) { - const mintAInfo = await this.connection.getParsedAccountInfo(route.mintA); - const mintBInfo = await this.connection.getParsedAccountInfo(route.mintB); - const [authority] = PublicKey.findProgramAddressSync( - [pool.toBuffer()], - SWAP_PROGRAM_ID, - ); - - const userAccountA = getAssociatedTokenAddressSync( - route.mintA, - payer, - true, - mintAInfo.value?.owner, - ); - const userAccountB = getAssociatedTokenAddressSync( - route.mintB, - payer, - true, - mintBInfo.value?.owner, - ); - const userPoolTokenAccount = getAssociatedTokenAddressSync( - route.tokenPool, - payer, - true, - TOKEN_2022_PROGRAM_ID, - ); - - const balanceInfo = await this.connection.getMultipleParsedAccounts([ - userAccountA, - userAccountB, - route.tokenAccountA, - route.tokenAccountB, - userPoolTokenAccount, - ]); - - const [uAInfo, uBInfo, tAInfo, tBInfo, spInfo] = balanceInfo.value; - - console.log({ - //@ts-ignore - userAccountAAmount: uAInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - userAccountBAmount: uBInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - tokenAccountAAmount: tAInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - tokenAccountBAmount: tBInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - sourcePoolAccountAmount: spInfo?.data.parsed.info.tokenAmount.amount, - }); - - const unitLimit = 200_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - const transaction = new Transaction().add( - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: unitPrice, - }), - ); - // deposit_all_token_types deposit_single_token_type_exact_amount_in - - //Create wSOL account - if (route.mintA.equals(WSOL) || route.mintB.equals(WSOL)) { - const ixs = await getWrapSOLInstructions(agent, payer, 0); - if (ixs.length > 0) { - transaction.add(...ixs); - } - } - - if (!uAInfo?.data && !route.mintA.equals(WSOL)) { - transaction.add( - createAssociatedTokenAccountInstruction( - payer, - userAccountA, - payer, - route.mintA, - mintAInfo.value?.owner, - ), - ); - } - - if (!uBInfo?.data && !route.mintB.equals(WSOL)) { - transaction.add( - createAssociatedTokenAccountInstruction( - payer, - userAccountB, - payer, - route.mintB, - mintBInfo.value?.owner, //non null assertion was removed here - ), - ); - } - - transaction.add( - Instructions.withdrawAllTokenTypesInstruction( - pool, - authority, - payer, - route.tokenPool, - route.feeAccount, - userPoolTokenAccount, - route.tokenAccountA, - route.tokenAccountB, - userAccountA, - userAccountB, - route.mintA, - route.mintB, - SWAP_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID, - mintAInfo.value?.owner, - mintBInfo.value?.owner, - poolTokenAmount, - minimumTokenA, - minimumTokenB, - ), - ); - - //Unwrap sol - if (route.mintA.equals(WSOL) || route.mintB.equals(WSOL)) { - transaction.add(getUnwrapSOLInstruction(payer)); - } - - return transaction; - } - - //TODO Test - async createRemoveSingleSideLiquidityTransaction( - agent: SolanaAgentKit, - payer: PublicKey, - pool: PublicKey, - route: TokenSwapPool, - dstMint: TokenInput, - poolTokenAmount: number, - priorityFee: number, - ) { - const mintInfo = await agent.connection.getParsedAccountInfo(dstMint.mint); - const [authority] = PublicKey.findProgramAddressSync( - [pool.toBuffer()], - SWAP_PROGRAM_ID, - ); - - const userAccount = getAssociatedTokenAddressSync( - dstMint.mint, - payer, - true, - mintInfo.value?.owner, - ); - - const userPoolTokenAccount = getAssociatedTokenAddressSync( - route.tokenPool, - payer, - true, - TOKEN_2022_PROGRAM_ID, - ); - - const balanceInfo = await agent.connection.getMultipleParsedAccounts([ - userAccount, - route.tokenAccountA, - route.tokenAccountB, - userPoolTokenAccount, - ]); - - const [uAInfo, tAInfo, tBInfo, spInfo] = balanceInfo.value; - - console.log({ - //@ts-ignore - userAccountAAmount: uAInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - tokenAccountAAmount: tAInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - tokenAccountBAmount: tBInfo?.data.parsed.info.tokenAmount.amount, - //@ts-ignore - sourcePoolAccountAmount: spInfo?.data.parsed.info.tokenAmount.amount, - }); - - const unitLimit = 200_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - const transaction = new Transaction().add( - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: unitPrice, - }), - ); - - //Create wSOL account - if (dstMint.mint.equals(WSOL)) { - const ixs = await getWrapSOLInstructions(agent, payer, 0); - if (ixs.length > 0) { - transaction.add(...ixs); - } - } - - if (!uAInfo?.data && !dstMint.mint.equals(WSOL)) { - transaction.add( - createAssociatedTokenAccountInstruction( - payer, - userAccount, - payer, - route.mintB, - mintInfo.value?.owner, - ), - ); - } - - transaction.add( - Instructions.withdrawSingleTokenTypeExactAmountOutInstruction( - pool, - authority, - payer, - route.tokenPool, - route.feeAccount, - userPoolTokenAccount, - route.tokenAccountA, - route.tokenAccountB, - userAccount, - dstMint.mint, - SWAP_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID, - mintInfo.value?.owner, - new BN(dstMint.amount, 10), - new BN(poolTokenAmount), - ), - ); - - //Unwrap sol - if (dstMint.mint.equals(WSOL)) { - transaction.add(getUnwrapSOLInstruction(payer)); - } - - return transaction; - } - - hasTransferFeeConfig(mintInfo: any): boolean { - if (!TOKEN_2022_PROGRAM_ID.equals(mintInfo.value?.owner)) { - return false; - } - - return ( - mintInfo.value?.data.parsed?.info.extensions?.filter( - (ex: any) => ex.extension === "transferFeeConfig", - ).length > 0 - ); - } -} diff --git a/src/tools/fluxbeam_lock_token.ts b/src/tools/fluxbeam_lock_token.ts index 9bde966c..0b7ce717 100644 --- a/src/tools/fluxbeam_lock_token.ts +++ b/src/tools/fluxbeam_lock_token.ts @@ -1,422 +1,422 @@ -import { web3 } from "@project-serum/anchor"; -import { Numberu64, Schedule } from "@bonfida/token-vesting"; -import { - createAssociatedTokenAccountInstruction, - getAssociatedTokenAddress, - getAssociatedTokenAddressSync, - TOKEN_PROGRAM_ID, -} from "@solana/spl-token"; -import { - PublicKey, - SystemProgram, - SYSVAR_CLOCK_PUBKEY, - TransactionInstruction, -} from "@solana/web3.js"; -import { createInitInstruction } from "@bonfida/token-vesting/src/instructions"; -import { getContractInfo } from "@bonfida/token-vesting/src/main"; -import { ContractInfo } from "@bonfida/token-vesting/src/state"; -import { SolanaAgentKit } from "../agent"; +// import { web3 } from "@project-serum/anchor"; +// import { Numberu64, Schedule } from "@bonfida/token-vesting"; +// import { +// createAssociatedTokenAccountInstruction, +// getAssociatedTokenAddress, +// getAssociatedTokenAddressSync, +// TOKEN_PROGRAM_ID, +// } from "@solana/spl-token"; +// import { +// PublicKey, +// SystemProgram, +// SYSVAR_CLOCK_PUBKEY, +// TransactionInstruction, +// } from "@solana/web3.js"; +// import { createInitInstruction } from "@bonfida/token-vesting/src/instructions"; +// import { getContractInfo } from "@bonfida/token-vesting/src/main"; +// import { ContractInfo } from "@bonfida/token-vesting/src/state"; +// import { SolanaAgentKit } from "../agent"; -const PROGRAM_ID = new PublicKey("Lock1zcQFoaZmTk59sr9pB5daFE6Cs1K5eWyRLF1eju"); +// const PROGRAM_ID = new PublicKey("Lock1zcQFoaZmTk59sr9pB5daFE6Cs1K5eWyRLF1eju"); -export class Seed { - mint; - releaseTime: Numberu64; +// export class Seed { +// mint; +// releaseTime: Numberu64; - constructor(mint: PublicKey, releaseTime: Numberu64) { - this.mint = mint; - this.releaseTime = releaseTime; - } +// constructor(mint: PublicKey, releaseTime: Numberu64) { +// this.mint = mint; +// this.releaseTime = releaseTime; +// } - async toString() { - const encoder = new TextEncoder(); - const dataUint8 = encoder.encode( - JSON.stringify({ - mint: this.mint.toString(), - time: this.releaseTime.toString(), - }), - ); - const hashBuffer = await crypto.subtle.digest("SHA-256", dataUint8); - const hashArray = Array.from(new Uint8Array(hashBuffer)); - return hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); - } -} +// async toString() { +// const encoder = new TextEncoder(); +// const dataUint8 = encoder.encode( +// JSON.stringify({ +// mint: this.mint.toString(), +// time: this.releaseTime.toString(), +// }), +// ); +// const hashBuffer = await crypto.subtle.digest("SHA-256", dataUint8); +// const hashArray = Array.from(new Uint8Array(hashBuffer)); +// return hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); +// } +// } -export async function lockers(agent: SolanaAgentKit, mint: PublicKey) { - const resp = await agent.connection.getProgramAccounts(PROGRAM_ID, { - commitment: "processed", - filters: [ - { - memcmp: { - offset: 32, - bytes: mint.toString(), - }, - }, - { - memcmp: { - offset: 32 + 32 + 1, - bytes: "", - }, - }, - ], - }); - return resp.map((m) => { - return { - pubkey: m.pubkey, - account: ContractInfo.fromBuffer(m.account.data), - }; - }); -} +// export async function lockers(agent: SolanaAgentKit, mint: PublicKey) { +// const resp = await agent.connection.getProgramAccounts(PROGRAM_ID, { +// commitment: "processed", +// filters: [ +// { +// memcmp: { +// offset: 32, +// bytes: mint.toString(), +// }, +// }, +// { +// memcmp: { +// offset: 32 + 32 + 1, +// bytes: "", +// }, +// }, +// ], +// }); +// return resp.map((m) => { +// return { +// pubkey: m.pubkey, +// account: ContractInfo.fromBuffer(m.account.data), +// }; +// }); +// } -async function locker(agent: SolanaAgentKit, locker: PublicKey) { - return await getContractInfo(agent.connection, locker); -} +// async function locker(agent: SolanaAgentKit, locker: PublicKey) { +// return await getContractInfo(agent.connection, locker); +// } -export async function create( - payer: PublicKey, - owner: PublicKey, - mint: PublicKey, - tokenProgram: PublicKey, - schedules: Schedule[], -): Promise { - const seedWord = await new Seed(mint, schedules[0].releaseTime).toString(); - return _create( - Buffer.from(seedWord), - payer, - owner, - mint, - tokenProgram, - schedules, - ); -} +// export async function create( +// payer: PublicKey, +// owner: PublicKey, +// mint: PublicKey, +// tokenProgram: PublicKey, +// schedules: Schedule[], +// ): Promise { +// const seedWord = await new Seed(mint, schedules[0].releaseTime).toString(); +// return _create( +// Buffer.from(seedWord), +// payer, +// owner, +// mint, +// tokenProgram, +// schedules, +// ); +// } -export async function unlock( - agent: SolanaAgentKit, - payer: PublicKey, - mint: PublicKey, - tokenProgram: PublicKey, - schedule: Schedule, -): Promise { - const seedWord = await new Seed(mint, schedule.releaseTime).toString(); - return _unlock(agent, Buffer.from(seedWord), payer, mint, tokenProgram); -} +// export async function unlock( +// agent: SolanaAgentKit, +// payer: PublicKey, +// mint: PublicKey, +// tokenProgram: PublicKey, +// schedule: Schedule, +// ): Promise { +// const seedWord = await new Seed(mint, schedule.releaseTime).toString(); +// return _unlock(agent, Buffer.from(seedWord), payer, mint, tokenProgram); +// } -/** - * This function can be used to lock tokens - * @param seedWord Seed words used to derive the vesting account - * @param payer The fee payer of the transaction - * @param sourceTokenOwner The owner of the source token account (i.e where locked tokens are originating from) - * @param possibleSourceTokenPubkey The source token account (i.e where locked tokens are originating from), if null it defaults to the ATA - * @param destinationTokenPubkey The destination token account i.e where unlocked tokens will be transfered - * @param mintAddress The mint of the tokens being vested - * @param schedules The array of vesting schedules - * @param tokenProgram The token program for the mint - * @returns An array of `TransactionInstruction` - */ -export async function _create( - seedWord: Buffer | Uint8Array, - payer: PublicKey, - sourceTokenOwner: PublicKey, - mintAddress: PublicKey, - tokenProgram: PublicKey, - schedules: Array, -): Promise> { - const sourceTokenPubkey = getAssociatedTokenAddressSync( - mintAddress, - sourceTokenOwner, - true, - tokenProgram, - ); - const destinationTokenPubkey = sourceTokenPubkey; +// /** +// * This function can be used to lock tokens +// * @param seedWord Seed words used to derive the vesting account +// * @param payer The fee payer of the transaction +// * @param sourceTokenOwner The owner of the source token account (i.e where locked tokens are originating from) +// * @param possibleSourceTokenPubkey The source token account (i.e where locked tokens are originating from), if null it defaults to the ATA +// * @param destinationTokenPubkey The destination token account i.e where unlocked tokens will be transfered +// * @param mintAddress The mint of the tokens being vested +// * @param schedules The array of vesting schedules +// * @param tokenProgram The token program for the mint +// * @returns An array of `TransactionInstruction` +// */ +// export async function _create( +// seedWord: Buffer | Uint8Array, +// payer: PublicKey, +// sourceTokenOwner: PublicKey, +// mintAddress: PublicKey, +// tokenProgram: PublicKey, +// schedules: Array, +// ): Promise> { +// const sourceTokenPubkey = getAssociatedTokenAddressSync( +// mintAddress, +// sourceTokenOwner, +// true, +// tokenProgram, +// ); +// const destinationTokenPubkey = sourceTokenPubkey; - // Find the non reversible public key for the vesting contract via the seed - seedWord = seedWord.slice(0, 31); - const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( - [seedWord], - PROGRAM_ID, - ); +// // Find the non reversible public key for the vesting contract via the seed +// seedWord = seedWord.slice(0, 31); +// const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( +// [seedWord], +// PROGRAM_ID, +// ); - const vestingTokenAccountKey = await getAssociatedTokenAddress( - mintAddress, - vestingAccountKey, - true, - tokenProgram, - ); +// const vestingTokenAccountKey = await getAssociatedTokenAddress( +// mintAddress, +// vestingAccountKey, +// true, +// tokenProgram, +// ); - seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); +// seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); - return [ - createInitInstruction( - SystemProgram.programId, - PROGRAM_ID, - payer, - vestingAccountKey, - [seedWord], - schedules.length, - ), - createAssociatedTokenAccountInstruction( - payer, - vestingTokenAccountKey, - vestingAccountKey, - mintAddress, - tokenProgram, - ), - createCreateInstruction( - PROGRAM_ID, - tokenProgram, - vestingAccountKey, - vestingTokenAccountKey, - sourceTokenOwner, - sourceTokenPubkey, - destinationTokenPubkey, - mintAddress, - schedules, - [seedWord], - ), - ]; -} +// return [ +// createInitInstruction( +// SystemProgram.programId, +// PROGRAM_ID, +// payer, +// vestingAccountKey, +// [seedWord], +// schedules.length, +// ), +// createAssociatedTokenAccountInstruction( +// payer, +// vestingTokenAccountKey, +// vestingAccountKey, +// mintAddress, +// tokenProgram, +// ), +// createCreateInstruction( +// PROGRAM_ID, +// tokenProgram, +// vestingAccountKey, +// vestingTokenAccountKey, +// sourceTokenOwner, +// sourceTokenPubkey, +// destinationTokenPubkey, +// mintAddress, +// schedules, +// [seedWord], +// ), +// ]; +// } -export function createCreateInstruction( - vestingProgramId: PublicKey, - tokenProgramId: PublicKey, - vestingAccountKey: PublicKey, - vestingTokenAccountKey: PublicKey, - sourceTokenAccountOwnerKey: PublicKey, - sourceTokenAccountKey: PublicKey, - destinationTokenAccountKey: PublicKey, - mintAddress: PublicKey, - schedules: Array, - seeds: Array, -): TransactionInstruction { - const buffers = [ - Buffer.from(Uint8Array.from([1]).buffer), - Buffer.concat(seeds), - mintAddress.toBuffer(), - destinationTokenAccountKey.toBuffer(), - ]; +// export function createCreateInstruction( +// vestingProgramId: PublicKey, +// tokenProgramId: PublicKey, +// vestingAccountKey: PublicKey, +// vestingTokenAccountKey: PublicKey, +// sourceTokenAccountOwnerKey: PublicKey, +// sourceTokenAccountKey: PublicKey, +// destinationTokenAccountKey: PublicKey, +// mintAddress: PublicKey, +// schedules: Array, +// seeds: Array, +// ): TransactionInstruction { +// const buffers = [ +// Buffer.from(Uint8Array.from([1]).buffer), +// Buffer.concat(seeds), +// mintAddress.toBuffer(), +// destinationTokenAccountKey.toBuffer(), +// ]; - schedules.forEach((s) => { - buffers.push(s.toBuffer()); - }); +// schedules.forEach((s) => { +// buffers.push(s.toBuffer()); +// }); - const data = Buffer.concat(buffers); - const keys = [ - { - pubkey: tokenProgramId, - isSigner: false, - isWritable: false, - }, - { - pubkey: vestingAccountKey, - isSigner: false, - isWritable: true, - }, - { - pubkey: vestingTokenAccountKey, - isSigner: false, - isWritable: true, - }, - { - pubkey: sourceTokenAccountOwnerKey, - isSigner: true, - isWritable: false, - }, - { - pubkey: sourceTokenAccountKey, - isSigner: false, - isWritable: true, - }, - { - pubkey: mintAddress, - isSigner: false, - isWritable: false, - }, - ]; - return new TransactionInstruction({ - keys, - programId: vestingProgramId, - data, - }); -} +// const data = Buffer.concat(buffers); +// const keys = [ +// { +// pubkey: tokenProgramId, +// isSigner: false, +// isWritable: false, +// }, +// { +// pubkey: vestingAccountKey, +// isSigner: false, +// isWritable: true, +// }, +// { +// pubkey: vestingTokenAccountKey, +// isSigner: false, +// isWritable: true, +// }, +// { +// pubkey: sourceTokenAccountOwnerKey, +// isSigner: true, +// isWritable: false, +// }, +// { +// pubkey: sourceTokenAccountKey, +// isSigner: false, +// isWritable: true, +// }, +// { +// pubkey: mintAddress, +// isSigner: false, +// isWritable: false, +// }, +// ]; +// return new TransactionInstruction({ +// keys, +// programId: vestingProgramId, +// data, +// }); +// } -/** - * This function can be used to unlock vested tokens - * @param seedWord Seed words used to derive the vesting account - * @param payer The payer or owner of the locker - if the owner does not own the dest account then an error is returned - * @param mintAddress The mint of the vested tokens - * @param tokenProgram The token program for the mint - * @returns An array of `TransactionInstruction` - */ -export async function _unlock( - agent: SolanaAgentKit, - seedWord: Buffer | Uint8Array, - payer: PublicKey, - mintAddress: PublicKey, - tokenProgram: PublicKey, -): Promise> { - seedWord = seedWord.slice(0, 31); - const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( - [seedWord], - PROGRAM_ID, - ); - seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); +// /** +// * This function can be used to unlock vested tokens +// * @param seedWord Seed words used to derive the vesting account +// * @param payer The payer or owner of the locker - if the owner does not own the dest account then an error is returned +// * @param mintAddress The mint of the vested tokens +// * @param tokenProgram The token program for the mint +// * @returns An array of `TransactionInstruction` +// */ +// export async function _unlock( +// agent: SolanaAgentKit, +// seedWord: Buffer | Uint8Array, +// payer: PublicKey, +// mintAddress: PublicKey, +// tokenProgram: PublicKey, +// ): Promise> { +// seedWord = seedWord.slice(0, 31); +// const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( +// [seedWord], +// PROGRAM_ID, +// ); +// seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); - const vestingTokenAccountKey = await getAssociatedTokenAddress( - mintAddress, - vestingAccountKey, - true, - tokenProgram, - ); +// const vestingTokenAccountKey = await getAssociatedTokenAddress( +// mintAddress, +// vestingAccountKey, +// true, +// tokenProgram, +// ); - console.log("VestingAccountKey", vestingAccountKey.toString()); - const accInfo = await agent.connection.getAccountInfo( - vestingAccountKey, - "processed", - ); - if (!accInfo) { - throw new Error("Vesting contract account is unavailable"); - } - const vestingInfo = ContractInfo.fromBuffer(accInfo!.data); - if (!vestingInfo) { - throw new Error("Vesting contract account is not initialized"); - } +// console.log("VestingAccountKey", vestingAccountKey.toString()); +// const accInfo = await agent.connection.getAccountInfo( +// vestingAccountKey, +// "processed", +// ); +// if (!accInfo) { +// throw new Error("Vesting contract account is unavailable"); +// } +// const vestingInfo = ContractInfo.fromBuffer(accInfo!.data); +// if (!vestingInfo) { +// throw new Error("Vesting contract account is not initialized"); +// } - const res = await agent.connection.getMultipleAccountsInfo( - [vestingInfo.destinationAddress, mintAddress], - { commitment: "processed" }, - ); - const [destinationInfo, mintInfo] = res; +// const res = await agent.connection.getMultipleAccountsInfo( +// [vestingInfo.destinationAddress, mintAddress], +// { commitment: "processed" }, +// ); +// const [destinationInfo, mintInfo] = res; - const unlockIx = createUnlockInstruction( - PROGRAM_ID, - tokenProgram, - SYSVAR_CLOCK_PUBKEY, - vestingAccountKey, - vestingTokenAccountKey, - vestingInfo.destinationAddress, - mintAddress, - [seedWord], - ); +// const unlockIx = createUnlockInstruction( +// PROGRAM_ID, +// tokenProgram, +// SYSVAR_CLOCK_PUBKEY, +// vestingAccountKey, +// vestingTokenAccountKey, +// vestingInfo.destinationAddress, +// mintAddress, +// [seedWord], +// ); - if (!destinationInfo) { - //Check if signer is the destination (otherwise below create IX wont work) - const ata = getAssociatedTokenAddressSync( - mintAddress, - payer, - false, - mintInfo?.owner, - ); - if (ata.toString() !== vestingInfo.destinationAddress.toString()) { - throw new Error("Signer does not match destination address"); - } +// if (!destinationInfo) { +// //Check if signer is the destination (otherwise below create IX wont work) +// const ata = getAssociatedTokenAddressSync( +// mintAddress, +// payer, +// false, +// mintInfo?.owner, +// ); +// if (ata.toString() !== vestingInfo.destinationAddress.toString()) { +// throw new Error("Signer does not match destination address"); +// } - const createIx = createAssociatedTokenAccountInstruction( - payer, - vestingInfo.destinationAddress, - payer, - mintAddress, - mintInfo?.owner, - ); +// const createIx = createAssociatedTokenAccountInstruction( +// payer, +// vestingInfo.destinationAddress, +// payer, +// mintAddress, +// mintInfo?.owner, +// ); - return [createIx, unlockIx]; - } +// return [createIx, unlockIx]; +// } - return [unlockIx]; -} -export function createUnlockInstruction( - vestingProgramId: PublicKey, - tokenProgramId: PublicKey, - clockSysvarId: PublicKey, - vestingAccountKey: PublicKey, - vestingTokenAccountKey: PublicKey, - destinationTokenAccountKey: PublicKey, - mintAddress: PublicKey, - seeds: Array, -): TransactionInstruction { - const data = Buffer.concat([ - Buffer.from(Uint8Array.from([2]).buffer), - Buffer.concat(seeds), - ]); +// return [unlockIx]; +// } +// export function createUnlockInstruction( +// vestingProgramId: PublicKey, +// tokenProgramId: PublicKey, +// clockSysvarId: PublicKey, +// vestingAccountKey: PublicKey, +// vestingTokenAccountKey: PublicKey, +// destinationTokenAccountKey: PublicKey, +// mintAddress: PublicKey, +// seeds: Array, +// ): TransactionInstruction { +// const data = Buffer.concat([ +// Buffer.from(Uint8Array.from([2]).buffer), +// Buffer.concat(seeds), +// ]); - const keys = [ - { - pubkey: tokenProgramId, - isSigner: false, - isWritable: false, - }, - { - pubkey: clockSysvarId, - isSigner: false, - isWritable: false, - }, - { - pubkey: vestingAccountKey, - isSigner: false, - isWritable: true, - }, - { - pubkey: vestingTokenAccountKey, - isSigner: false, - isWritable: true, - }, - { - pubkey: destinationTokenAccountKey, - isSigner: false, - isWritable: true, - }, - { - pubkey: mintAddress, - isSigner: false, - isWritable: false, - }, - ]; - return new TransactionInstruction({ - keys, - programId: vestingProgramId, - data, - }); -} +// const keys = [ +// { +// pubkey: tokenProgramId, +// isSigner: false, +// isWritable: false, +// }, +// { +// pubkey: clockSysvarId, +// isSigner: false, +// isWritable: false, +// }, +// { +// pubkey: vestingAccountKey, +// isSigner: false, +// isWritable: true, +// }, +// { +// pubkey: vestingTokenAccountKey, +// isSigner: false, +// isWritable: true, +// }, +// { +// pubkey: destinationTokenAccountKey, +// isSigner: false, +// isWritable: true, +// }, +// { +// pubkey: mintAddress, +// isSigner: false, +// isWritable: false, +// }, +// ]; +// return new TransactionInstruction({ +// keys, +// programId: vestingProgramId, +// data, +// }); +// } -export async function lockAuthority( - mint: PublicKey, - tokenProgram: PublicKey, - schedule: Schedule, - authorityType: number, -) { - const seedWord = await new Seed(mint, schedule.releaseTime).toString(); - return _lockAuthority( - Buffer.from(seedWord), - mint, - tokenProgram, - authorityType, - ); -} +// export async function lockAuthority( +// mint: PublicKey, +// tokenProgram: PublicKey, +// schedule: Schedule, +// authorityType: number, +// ) { +// const seedWord = await new Seed(mint, schedule.releaseTime).toString(); +// return _lockAuthority( +// Buffer.from(seedWord), +// mint, +// tokenProgram, +// authorityType, +// ); +// } -export async function unlockAuthority( - mint: PublicKey, - tokenProgram: PublicKey, - schedule: Schedule, - authorityType: number, -) { - const seedWord = await new Seed(mint, schedule.releaseTime).toString(); - return _unlockAuthority( - Buffer.from(seedWord), - mint, - tokenProgram, - authorityType, - ); -} +// export async function unlockAuthority( +// mint: PublicKey, +// tokenProgram: PublicKey, +// schedule: Schedule, +// authorityType: number, +// ) { +// const seedWord = await new Seed(mint, schedule.releaseTime).toString(); +// return _unlockAuthority( +// Buffer.from(seedWord), +// mint, +// tokenProgram, +// authorityType, +// ); +// } -export async function _lockAuthority( - seedWord: Buffer | Uint8Array, - mintAddress: PublicKey, - tokenProgram: PublicKey, - authorityType: number, -) {} +// export async function _lockAuthority( +// seedWord: Buffer | Uint8Array, +// mintAddress: PublicKey, +// tokenProgram: PublicKey, +// authorityType: number, +// ) {} -export async function _unlockAuthority( - seedWord: Buffer | Uint8Array, - mintAddress: PublicKey, - tokenProgram: PublicKey, - authorityType: number, -) {} +// export async function _unlockAuthority( +// seedWord: Buffer | Uint8Array, +// mintAddress: PublicKey, +// tokenProgram: PublicKey, +// authorityType: number, +// ) {} diff --git a/src/tools/fluxbeam_metadata_management.ts b/src/tools/fluxbeam_metadata_management.ts index 97590d93..66ca321e 100644 --- a/src/tools/fluxbeam_metadata_management.ts +++ b/src/tools/fluxbeam_metadata_management.ts @@ -1,287 +1,86 @@ import { - createUpdateMetadataAccountV2Instruction, - Metadata, - UpdateMetadataAccountArgsV2, + fetchMetadataFromSeeds, + updateV1, } from "@metaplex-foundation/mpl-token-metadata"; -import { TOKEN_METADATA_PROGRAM_ID } from "@onsol/tldparser"; -import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; import { - createUpdateFieldInstruction, - TOKEN_2022_PROGRAM_ID, - createUpdateAuthorityInstruction, -} from "@solana/spl-token"; + fromWeb3JsKeypair, + fromWeb3JsPublicKey, +} from "@metaplex-foundation/umi-web3js-adapters"; import { - Transaction, - ComputeBudgetProgram, - SystemProgram, - TransactionInstruction, -} from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent"; -import { pack } from "@solana/spl-token-metadata"; -import { FEE_ACCOUNT } from "../constants"; - -function isDevnet(agent: SolanaAgentKit) { - return agent.connection.rpcEndpoint.indexOf("devnet") > -1; -} - -export function metadataProgram(agent: SolanaAgentKit): PublicKey { - if (isDevnet(agent)) { - return new PublicKey("M1tgEZCz7fHqRAR3G5RLxU6c6ceQiZyFK7tzzy4Rof4"); - } - return TOKEN_METADATA_PROGRAM_ID; -} + createSignerFromKeypair, + keypairIdentity, +} from "@metaplex-foundation/umi"; +import * as bs58 from "bs58"; +import { PublicKey } from "@solana/web3.js"; -/** - * Returns the token metadata via mint - * @param mint - * @param metadataProgram - */ -async function getTokenMetadata( +export async function fluxbeamUpdateV1Metadata( agent: SolanaAgentKit, mint: PublicKey, - programId?: PublicKey, -): Promise { - const metadataProgramId = programId ?? (await metadataProgram(agent)); - return getTokenMetadataRaw( - agent, - await getMetadataPDA(agent, mint, metadataProgramId), - ); -} - -/** - * Returns the token metadata via mint - * @param metadataAddress - */ -async function getTokenMetadataRaw( - agent: SolanaAgentKit, - metadataAddress: PublicKey, + name: string, + symbol: string, + uri: string, ) { - return Metadata.fromAccountAddress( - agent.connection, - metadataAddress, - "confirmed", - ); -} - -/** - * Returns the file metadata for given token metadata - * @param metadata - */ -async function getTokenFileMetadata(metadata: Metadata) { - if (!metadata || !metadata.data.uri.replace(/\0.*$/g, "")) { - return; - } + try { + // Create UMI instance from agent + const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()); + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); + const myKeypair = agent.wallet; + const updateAuthority = createSignerFromKeypair( + umi, + fromWeb3JsKeypair(myKeypair), + ); //signer + const initialMetadata = await fetchMetadataFromSeeds(umi, { + mint: fromWeb3JsPublicKey(mint), + }); + const txId = await updateV1(umi, { + mint: fromWeb3JsPublicKey(mint), + authority: updateAuthority, + data: { ...initialMetadata, symbol: symbol, name: name, uri: uri }, + }).sendAndConfirm(umi); - return (await fetch(metadata.data.uri)).json(); -} + const txSignature = bs58.default.encode(txId.signature); -/** - * Returns the token mints metadata PDA - * @param mint - * @param metadataProgram - */ -export async function getMetadataPDA( - agent: SolanaAgentKit, - mint: PublicKey, - programId?: PublicKey, -) { - const metadataProgramId = programId ?? metadataProgram(agent); - const [metaPDA] = PublicKey.findProgramAddressSync( - [Buffer.from("metadata"), metadataProgramId.toBuffer(), mint.toBuffer()], - metadataProgramId, - ); - return metaPDA; + return txSignature; + } catch (error) { + throw Error(`failed to update metadata for token v1 asset: ${error}`); + } } -export async function getUpdateToken22MetadataTransaction( +export async function fluxbeamUpdateV2Metadata( agent: SolanaAgentKit, mint: PublicKey, - metadata: any, - authority: PublicKey, - data: UpdateMetadataAccountArgsV2, - priorityFee: number, - metadataCID: string, + name: string, + symbol: string, + uri: string, ) { - console.log("getUpdateToken22MetadataTransaction", { - data, - metadata, - }); - - const transaction = new Transaction(); - const unitLimit = 90_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.transfer({ - fromPubkey: authority, - toPubkey: FEE_ACCOUNT, - lamports: 100_000_000, - }), - new TransactionInstruction({ - keys: [], - programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), - data: Buffer.from(metadataCID), - }), - ); - - if (data.data?.name !== metadata.name) { - console.debug( - "getUpdateToken22MetadataTransaction::name - ", - data.data?.name, - metadata.name, - ); - transaction.add( - createUpdateFieldInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: mint, - updateAuthority: new PublicKey(metadata.updateAuthority), - field: "name", - value: data.data?.name ?? "", // cast as a string as a - }), - ); - } - - if (data.data?.symbol !== metadata.symbol) { - console.debug( - "getUpdateToken22MetadataTransaction::symbol - ", - data.data?.symbol, - metadata.symbol, - ); - transaction.add( - createUpdateFieldInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: mint, - updateAuthority: new PublicKey(metadata.updateAuthority), - field: "symbol", - value: data.data?.symbol ?? "", - }), - ); - } - - if (data.data?.uri !== metadata.uri) { - console.debug("getUpdateToken22MetadataTransaction::uri - ", { - data: data.data?.uri, - meta: metadata.uri, + try { + const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()); + + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); + const myKeypair = agent.wallet; + const updateAuthority = createSignerFromKeypair( + umi, + fromWeb3JsKeypair(myKeypair), + ); //signer + const initialMetadata = await fetchMetadataFromSeeds(umi, { + mint: fromWeb3JsPublicKey(mint), }); - transaction.add( - createUpdateFieldInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: mint, - updateAuthority: new PublicKey(metadata.updateAuthority), - field: "uri", - value: data?.data?.uri ?? "", - }), - ); - } - - console.debug( - "Adjust authority", - data.updateAuthority, - metadata.updateAuthority, - ); - if (data.updateAuthority !== metadata.updateAuthority) { - console.debug( - "getUpdateToken22MetadataTransaction::authority - ", - metadata.updateAuthority, - data.updateAuthority, - ); - const args = { - metadata: mint, - newAuthority: null, - oldAuthority: new PublicKey(metadata.updateAuthority), - programId: TOKEN_2022_PROGRAM_ID, - }; - - if (data.updateAuthority) { - args.newAuthority = new PublicKey(data.updateAuthority); - } - transaction.add(createUpdateAuthorityInstruction(args)); - } + const txId = await updateV1(umi, { + authority: updateAuthority, + mint: fromWeb3JsPublicKey(mint), + data: { ...initialMetadata, symbol: symbol, name: name, uri: uri }, + }).sendAndConfirm(umi); - const oldMetadataLength = - pack({ - additionalMetadata: metadata?.additionalMetadata || [], - mint: PublicKey.default, - symbol: metadata.symbol, - name: metadata.name, - uri: metadata.uri, - }).length + 4; + const txSignature = bs58.default.encode(txId.signature); - const newMetadataLength = - pack({ - additionalMetadata: [], - mint: PublicKey.default, - symbol: data?.data?.symbol ?? "", - name: data?.data?.name ?? "", - uri: data?.data?.uri ?? "", - }).length + 4; - - const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( - newMetadataLength - oldMetadataLength, - ); - if (mintLamports > 0) { - transaction.add( - SystemProgram.transfer({ - fromPubkey: authority, - toPubkey: new PublicKey(mint), - lamports: mintLamports, - }), + return txSignature; + } catch (error) { + throw Error( + `failed to update metadata for token v2 (token2022) asset: ${error}`, ); - } - - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = authority; - transaction.recentBlockhash = bhash.blockhash; - - return transaction; -} - -export async function getUpdateMetadataTransaction( - agent: SolanaAgentKit, - metadata: PublicKey, - authority: PublicKey, - data: UpdateMetadataAccountArgsV2, - priorityFee: number, - metadataCID: string, - programId?: PublicKey, -) { - const metadataProgramId = programId ?? (await metadataProgram(agent)); - const transaction = new Transaction(); - - const unitLimit = 100_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.transfer({ - fromPubkey: authority, - toPubkey: FEE_ACCOUNT, - lamports: 20000000, - }), - new TransactionInstruction({ - keys: [], - programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), - data: Buffer.from(metadataCID), - }), - createUpdateMetadataAccountV2Instruction( - { - metadata: metadata, - updateAuthority: authority, - }, - { - updateMetadataAccountArgsV2: data, - }, - metadataProgramId, - ), - ); - - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = authority; - transaction.recentBlockhash = bhash.blockhash; - - return transaction; + } // mint: fromWeb3JsPublicKey(mint), } diff --git a/src/tools/fluxbeam_token_airdrop.ts b/src/tools/fluxbeam_token_airdrop.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/tools/fluxbeam_token_minting_controls.ts b/src/tools/fluxbeam_token_minting_controls.ts index cbd68d1d..c119ea18 100644 --- a/src/tools/fluxbeam_token_minting_controls.ts +++ b/src/tools/fluxbeam_token_minting_controls.ts @@ -1,371 +1,46 @@ import { - AccountState, AuthorityType, - ExtensionType, - TOKEN_2022_PROGRAM_ID, createAssociatedTokenAccountInstruction, - createEnableRequiredMemoTransfersInstruction, - createInitializeDefaultAccountStateInstruction, - createInitializeImmutableOwnerInstruction, - createInitializeInstruction, - createInitializeInterestBearingMintInstruction, - createInitializeMetadataPointerInstruction, - createInitializeMintCloseAuthorityInstruction, - createInitializeMintInstruction, - createInitializeNonTransferableMintInstruction, - createInitializePermanentDelegateInstruction, - createInitializeTransferFeeConfigInstruction, createMintToInstruction, createSetAuthorityInstruction, - createThawAccountInstruction, getAssociatedTokenAddressSync, - getMintLen, + TOKEN_2022_PROGRAM_ID, + TOKEN_PROGRAM_ID, } from "@solana/spl-token"; import { - ComputeBudgetProgram, PublicKey, - SystemProgram, + ComputeBudgetProgram, Transaction, - TransactionInstruction, + Keypair, } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; -import { pack } from "@solana/spl-token-metadata"; -import { DataV2 } from "@metaplex-foundation/mpl-token-metadata"; -import { FEE_ACCOUNT } from "../constants"; - -export class CreateMintV1 { - name: string; - symbol: string; - metadataUri: string; - decimals: number; - totalSupply: bigint; - - mintAuthority: PublicKey; - freezeAuthority: PublicKey | null; - - sellerFeeBasisPoints: number = 0; - - //Do we mint the total supply to the user - mintTotalSupply: boolean; - - creators: [] | null = null; - - constructor( - name: string, - symbol: string, - metadataUri: string, - totalSupply: bigint, - mintAuthority: PublicKey, - freezeAuthority: PublicKey | null, - decimals = 6, - mintTotalSupply = true, - ) { - this.name = name; - this.symbol = symbol; - this.metadataUri = metadataUri; - this.totalSupply = totalSupply; - this.decimals = decimals; - this.mintTotalSupply = mintTotalSupply; - this.mintAuthority = mintAuthority; - this.freezeAuthority = freezeAuthority; - } - - setSellerFeeBasisPoints(bp: number) { - this.sellerFeeBasisPoints = bp; - } - - setCreators(creators: []) { - this.creators = creators; - } -} - -export class CreateMint extends CreateMintV1 { - extensions: ExtensionType[] = []; - extensionConfig = {}; - - metadata: any; - - setMetadata(meta: any) { - this.metadata = meta; - } - - metadataLength(): number { - if (!this.metadata) { - return 0; - } - - return ( - pack({ - additionalMetadata: this.metadata?.additionalMetadata || [], - mint: PublicKey.default, - symbol: this.metadata.symbol, - name: this.metadata.name, - uri: this.metadata.uri, - }).length + 4 - ); - } - - addExtension(ext: ExtensionType, config: object = {}) { - this.extensions.push(ext); - //@ts-ignore - this.extensionConfig[ext] = config; - } -} - -export async function getCreateMintTransaction( - agent: SolanaAgentKit, - owner: PublicKey, - tokenMint: PublicKey, - config: CreateMint, - priorityFee: number, - metadataCID: string, -) { - const mintLen = getMintLen(config.extensions); - const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( - mintLen + config.metadataLength(), - ); - - const ata = getAssociatedTokenAddressSync( - tokenMint, - owner, - true, - TOKEN_2022_PROGRAM_ID, - ); - - const ON_CHAIN_METADATA = { - name: config.name, - symbol: config.symbol, - uri: config.metadataUri, - sellerFeeBasisPoints: 0, - uses: null, - creators: null, - collection: null, - } as DataV2; - - const unitLimit = 120_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - const txn = new Transaction().add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.createAccount({ - fromPubkey: owner, - newAccountPubkey: tokenMint, - space: mintLen, - lamports: mintLamports, - programId: TOKEN_2022_PROGRAM_ID, - }), - SystemProgram.transfer({ - fromPubkey: owner, - toPubkey: FEE_ACCOUNT, - lamports: 20000000, - }), - new TransactionInstruction({ - keys: [], - programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), - data: Buffer.from(metadataCID), - }), - ); - - let isDefaultFrozen = false; - config.extensions.forEach((ext: string | number) => { - //@ts-ignore - const cfg = config.extensionConfig[ext]; - // eslint-disable-next-line no-console - console.log(`${ext}`, cfg); - - switch (ext) { - case ExtensionType.TransferFeeConfig: - ON_CHAIN_METADATA.sellerFeeBasisPoints = cfg.feeBasisPoints; //Update so it reflects same as royalties - txn.add( - createInitializeTransferFeeConfigInstruction( - tokenMint, - cfg.transfer_fee_config_authority - ? cfg.transfer_fee_config_authority - : config.mintAuthority, //Config Auth - cfg.withdraw_withheld_authority - ? cfg.withdraw_withheld_authority - : config.mintAuthority, //Withdraw Auth - cfg.feeBasisPoints, - cfg.maxFee, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.InterestBearingConfig: - txn.add( - createInitializeInterestBearingMintInstruction( - tokenMint, - owner, //Rate Auth - cfg.rate * 100, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.PermanentDelegate: - txn.add( - createInitializePermanentDelegateInstruction( - tokenMint, - new PublicKey(cfg.address), - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.NonTransferable: - txn.add( - createInitializeNonTransferableMintInstruction( - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.ImmutableOwner: - txn.add( - createInitializeImmutableOwnerInstruction( - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.MemoTransfer: - txn.add( - createEnableRequiredMemoTransfersInstruction( - tokenMint, - owner, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - if (config.mintTotalSupply) { - txn.add( - new TransactionInstruction({ - keys: [{ pubkey: owner, isSigner: true, isWritable: true }], - data: Buffer.from("Mint To Memo", "utf-8"), - programId: new PublicKey( - "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", - ), - }), - ); - } - break; - case ExtensionType.DefaultAccountState: - isDefaultFrozen = cfg.state === AccountState.Frozen; - txn.add( - createInitializeDefaultAccountStateInstruction( - tokenMint, - cfg.state, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.MintCloseAuthority: - txn.add( - createInitializeMintCloseAuthorityInstruction( - tokenMint, - config.mintAuthority, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.MetadataPointer: - txn.add( - createInitializeMetadataPointerInstruction( - tokenMint, - config.mintAuthority, - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - default: - console.error("Unsupported extension", ext); - break; - } - }); - - //Init the mint - txn.add( - createInitializeMintInstruction( - tokenMint, - config.decimals, - config.mintAuthority, - config.freezeAuthority, - TOKEN_2022_PROGRAM_ID, - ), - ); - - if (config.metadata) { - txn.add( - createInitializeInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: tokenMint, - updateAuthority: config.mintAuthority, - mint: tokenMint, - mintAuthority: config.mintAuthority, - name: config.metadata.name, - symbol: config.metadata.symbol, - uri: config.metadata.uri, - }), - ); - } - - if (config.mintTotalSupply) { - txn.add( - createAssociatedTokenAccountInstruction( - owner, - ata, - owner, - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - - if (isDefaultFrozen) { - txn.add( - createThawAccountInstruction( - ata, - tokenMint, - owner, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - } - - txn.add( - createMintToInstruction( - tokenMint, - ata, - owner, - config.totalSupply, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - } - - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - txn.feePayer = owner; - txn.recentBlockhash = bhash.blockhash; - - // Sign and send transaction - const signature = await agent.connection.sendTransaction(txn, [agent.wallet]); - - return signature; -} - -export async function getMintToTransaction( +import { sendTransaction, signTransaction } from "../utils/FluxbeamClient"; + +/** + * Mints tokens to the associated token account of a given owner. + * If the associated token account does not exist, it is created. + * + * @param {SolanaAgentKit} agent - SolanaAgentKit instance + * @param {PublicKey} owner - The public key of the token account owner. + * @param {PublicKey} tokenMint - The public key of the token mint account. + * @param {bigint} amount - The amount of tokens to mint. + * @param {boolean} [v2=true] - Whether to use the Token 2022 program. + * @returns {Promise} - The transaction signature. + */ +export async function fluxbeamMintToAccount( agent: SolanaAgentKit, owner: PublicKey, tokenMint: PublicKey, amount: bigint, - program = TOKEN_2022_PROGRAM_ID, + v2: boolean = true, ) { - const txn = new Transaction(); + const program = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; + const transaction = new Transaction(); const ata = getAssociatedTokenAddressSync(tokenMint, owner, true, program); const dstIfo = await agent.connection.getAccountInfo(ata, "confirmed"); if (!dstIfo) { - txn.add( + transaction.add( createAssociatedTokenAccountInstruction( owner, ata, @@ -376,34 +51,49 @@ export async function getMintToTransaction( ); } - txn.add(createMintToInstruction(tokenMint, ata, owner, amount, [], program)); + transaction.add( + createMintToInstruction(tokenMint, ata, owner, amount, [], program), + ); + + const txn = await signTransaction(agent, transaction); - const { blockhash } = await agent.connection.getLatestBlockhash("confirmed"); - txn.feePayer = owner; - txn.recentBlockhash = blockhash; - // Sign and send transaction - const signature = await agent.connection.sendTransaction(txn, [agent.wallet]); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; } -export async function getSetAuthorityTransaction( +/** + * Sets a new authority for a given mint account. + * + * @param {SolanaAgentKit} agent -SolanaAgentKit instance + * @param {PublicKey} owner - The public key of the current authority. + * @param {PublicKey} mint - The public key of the mint account. + * @param {AuthorityType} authority - The type of authority to set (e.g., Mint, Freeze, Close). + * @param {PublicKey|null} newAuthority - The public key of the new authority, or null to revoke. + * @param {boolean} [v2=true] - Whether to use the Token 2022 program. + * @param {number} [priorityFee=100_000_000] - The priority fee for the transaction (in microLamports). + * @param {Keypair[]} [additional_signers=[]] - Additional signers required for the transaction. + * @returns {Promise} - The transaction signature. + */ +export async function fluxbeamSetAuthority( agent: SolanaAgentKit, owner: PublicKey, mint: PublicKey, authority: AuthorityType, newAuthority: PublicKey | null, - programID = TOKEN_2022_PROGRAM_ID, - priorityFee: number = 100_000_000_000, + v2: boolean = true, + priorityFee: number = 100_000_000, + additional_signers: Keypair[] = [], ) { - const txn = new Transaction(); - txn.add( + const programID = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; + const transaction = new Transaction(); + transaction.add( ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), ComputeBudgetProgram.setComputeUnitPrice({ microLamports: Math.floor(priorityFee / 10_000), }), ); - txn.add( + transaction.add( createSetAuthorityInstruction( mint, owner, @@ -413,31 +103,42 @@ export async function getSetAuthorityTransaction( programID, ), ); + const txn = await signTransaction(agent, transaction, additional_signers); - const { blockhash } = await agent.connection.getLatestBlockhash("confirmed"); - txn.feePayer = owner; - txn.recentBlockhash = blockhash; - - const signature = await agent.connection.sendTransaction(txn, [agent.wallet]); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; } -export async function getRevokeAuthorityTransaction( +/** + * Revokes an authority from a given mint account by setting it to null. + * + * @param {SolanaAgentKit} agent - SolanaAgentKit instance + * @param {PublicKey} owner - The public key of the current authority. + * @param {PublicKey} mint - The public key of the mint account. + * @param {AuthorityType} authority - The type of authority to revoke (e.g., Mint, Freeze, Close). + * @param {boolean} [v2=true] - Whether to use the Token 2022 program. + * @param {number} [priorityFee=100_000_000] - The priority fee for the transaction (in microLamports). + * @param {Keypair[]} [additional_signers=[]] - Additional signers required for the transaction. + * @returns {Promise} - The transaction signature. + */ +export function fluxbeamRevokeAuthority( agent: SolanaAgentKit, owner: PublicKey, mint: PublicKey, authority: AuthorityType, - programID = TOKEN_2022_PROGRAM_ID, - priorityFee: number = 100_000_000_000, + v2: boolean = true, + priorityFee: number = 100_000_000, + additional_signers: Keypair[] = [], ) { - return getSetAuthorityTransaction( + return fluxbeamSetAuthority( agent, owner, mint, authority, null, - programID, + v2, priorityFee, + additional_signers, ); } diff --git a/src/tools/fluxbeam_token_swap.ts b/src/tools/fluxbeam_token_swap.ts index 8d714675..66ebf043 100644 --- a/src/tools/fluxbeam_token_swap.ts +++ b/src/tools/fluxbeam_token_swap.ts @@ -1,22 +1,48 @@ import { VersionedTransaction, PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; +import { Quote, SolanaAgentKit, TransformedResponse } from "../index"; import { TOKENS, DEFAULT_OPTIONS } from "../constants"; import { getMint } from "@solana/spl-token"; +import { Console } from "console"; +import { sendTransaction, signTransaction } from "../utils/FluxbeamClient"; + +function transformResponse(response: { quote: Quote }): Quote { + // Destructure the input object to get the quote object + const { + program, + pool, + inputMint, + outputMint, + amountIn, + outAmount, + minimumOut, + } = response.quote; + + // Return a new quote object with the arguments in the desired order + return { + amountIn, + inputMint, + minimumOut, + outAmount, + outputMint, + pool, + program, + }; +} /** * Swap tokens using FluxBeam DEX * @param agent SolanaAgentKit instance + * @param inputMint Source token mint address (defaults to USDC) * @param outputMint Target token mint address * @param inputAmount Amount to swap (in token decimals) - * @param inputMint Source token mint address (defaults to USDC) * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) * @returns Transaction signature */ export async function fluxBeamSwap( agent: SolanaAgentKit, + inputMint: PublicKey, outputMint: PublicKey, inputAmount: number, - inputMint: PublicKey = TOKENS.USDC, slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, ): Promise { try { @@ -35,14 +61,15 @@ export async function fluxBeamSwap( const quoteResponse = await ( await fetch( `${FLUXBEAM_API}/quote?` + - `inputMint=${isNativeSol ? TOKENS.SOL.toString() : inputMint.toString()}` + + `inputMint=${inputMint.toString()}` + `&outputMint=${outputMint.toString()}` + `&amount=${scaledAmount}` + `&slippageBps=${slippageBps}`, ) ).json(); - console.log(quoteResponse); + const quote = transformResponse(quoteResponse); + // console.log(quote); const response = await ( await fetch(`${FLUXBEAM_API}/swap/transaction`, { method: "POST", @@ -50,27 +77,35 @@ export async function fluxBeamSwap( "Content-Type": "application/json", }, body: JSON.stringify({ - quoteResponse, + priorityFeeLamports: 100000, + quote, userPublicKey: agent.wallet_address.toString(), wrapAndUnwrapSol: true, }), }) ).json(); - console.log(response); + console.log(`this is the transaction response ${response.transaction}`); // Deserialize transaction const swapTransactionBuf = Buffer.from(response.transaction, "base64"); - const transaction = VersionedTransaction.deserialize(swapTransactionBuf); + + console.log("Transaction", transaction); // Sign and send transaction transaction.sign([agent.wallet]); - const signature = agent.connection.sendRawTransaction( + const signature = await agent.connection.sendRawTransaction( transaction.serialize(), { maxRetries: 3, skipPreflight: true, }, ); + // const txn = await signTransaction(agent, response.transaction); + + // const resp = await sendTransaction(txn); + + // return response.signature; + return signature; } catch (error: any) { throw new Error(`Swap failed: ${error.message}`); diff --git a/src/tools/fluxbeam_transfer.ts b/src/tools/fluxbeam_transfer.ts index df5058e6..9d79122e 100644 --- a/src/tools/fluxbeam_transfer.ts +++ b/src/tools/fluxbeam_transfer.ts @@ -1,21 +1,50 @@ import { SolanaAgentKit } from "../agent"; import { TOKEN_2022_PROGRAM_ID, + TOKEN_PROGRAM_ID, createAssociatedTokenAccountInstruction, createTransferCheckedInstruction, + getMint, } from "@solana/spl-token"; -import { getAssociatedTokenPDA } from "../utils/fluxbeam_utils"; -import { PublicKey, SystemProgram, Transaction } from "@solana/web3.js"; - +import { + getAssociatedTokenPDA, + sendTransaction, + signTransaction, +} from "../utils/FluxbeamClient"; +import { + LAMPORTS_PER_SOL, + PublicKey, + SystemProgram, + Transaction, +} from "@solana/web3.js"; +/** + * Transfers SPL tokens from the agent's wallet to a destination wallet. + * + * By default, this function uses the `TOKEN_2022_PROGRAM_ID` program to handle + * transfers for tokens adhering to the Token-2022 specification. It also handles + * creating the destination's associated token account (ATA) if it doesn't already exist. + * + * @param agent - The SolanaAgentKit instance for interacting with Solana. + * @param mint - The public key of the SPL token mint. + * @param dstOwner - The public key of the destination wallet. + * @param amount - The number of tokens to transfer (unscaled by decimals). + * @param v2 - the token type to transfer , v2 is set to true by default meaning we are transferring TOKEN 2022 (or v2) tokens + * @param allowOwnerOffCurve - Whether the owner can be an off-curve public key (defaults to false). + * @returns The signature of the submitted transaction. + * @throws If there is an error during the transfer or account creation process. + */ export async function fluxbeamTransferSplToken( agent: SolanaAgentKit, mint: PublicKey, dstOwner: PublicKey, amount: number, - decimals: number, - program = TOKEN_2022_PROGRAM_ID, + v2: boolean = true, allowOwnerOffCurve = false, ) { + const program = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; + const decimals = (await getMint(agent.connection, mint, "finalized", program)) + .decimals; + const srcAta = await getAssociatedTokenPDA( mint, agent.wallet_address, @@ -28,7 +57,6 @@ export async function fluxbeamTransferSplToken( program, allowOwnerOffCurve, ); - const transaction = new Transaction(); const dstIfo = await agent.connection.getAccountInfo(dstAta, "confirmed"); @@ -43,55 +71,61 @@ export async function fluxbeamTransferSplToken( ), ); } - transaction.add( createTransferCheckedInstruction( srcAta, //Src Ata mint, //Mint dstAta, agent.wallet_address, - amount, //TODO check decimals?? + amount * Math.pow(10, decimals), decimals, [], program, ), ); - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = agent.wallet_address; - transaction.recentBlockhash = bhash.blockhash; + const txn = await signTransaction(agent, transaction); - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; } -export async function fluxbeamTransfer( +/** + * Transfers SOL (native token) from the agent's wallet to a destination wallet. + * + * This function creates and signs a transaction that transfers a specified amount + * of SOL from the agent to the destination wallet. The amount is specified in SOL + * and converted to lamports internally. + * + * @param agent - The SolanaAgentKit instance for interacting with Solana. + * @param dstOwner - The public key of the destination wallet. + * @param amount - The amount of SOL to transfer (in SOL, not lamports). + * @returns The signature of the submitted transaction. + * @throws If there is an error during the transfer process. + */ +export async function fluxbeamTransferSol( agent: SolanaAgentKit, dstOwner: PublicKey, amount: number, ) { - const transaction = new Transaction(); + try { + const transaction = new Transaction(); - transaction.add( - SystemProgram.transfer({ - fromPubkey: agent.wallet_address, - toPubkey: dstOwner, - lamports: amount, - }), - ); + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: dstOwner, + lamports: amount * LAMPORTS_PER_SOL, + }), + ); - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = agent.wallet_address; - transaction.recentBlockhash = bhash.blockhash; + const txn = await signTransaction(agent, transaction); - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + const response = await sendTransaction(agent, txn); - return signature; + return response.signature; + } catch (error: any) { + throw new Error(`failed to tranfer Sol ${error.message}`); + } } diff --git a/src/tools/fluxbeam_v1_token_creation.ts b/src/tools/fluxbeam_v1_token_creation.ts index 66cb95e7..1cee9cda 100644 --- a/src/tools/fluxbeam_v1_token_creation.ts +++ b/src/tools/fluxbeam_v1_token_creation.ts @@ -1,164 +1,89 @@ import { - createAssociatedTokenAccountInstruction, - createInitializeMintInstruction, - createMintToInstruction, - getAssociatedTokenAddressSync, - MINT_SIZE, - TOKEN_PROGRAM_ID, -} from "@solana/spl-token"; -import { - createCreateMetadataAccountV3Instruction, - CreateMetadataAccountV3InstructionAccounts, - DataV2, - PROGRAM_ID, + createFungible, + mintV1, + TokenStandard, } from "@metaplex-foundation/mpl-token-metadata"; -import { none, some } from "@metaplex-foundation/umi-options"; -import { - ComputeBudgetProgram, - Connection, - PublicKey, - SystemProgram, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; -import { FEE_ACCOUNT } from "../constants"; - -export interface CreateMintV1Config { - name: string; - symbol: string; - metadataUri: string; - decimals: number; - totalSupply: bigint; - mintAuthority: PublicKey; - freezeAuthority: PublicKey | null; - sellerFeeBasisPoints?: number; - mintTotalSupply?: boolean; // do we want to mint the supply to the user? - creators?: [] | null; -} - -async function getCreateMintTransaction( +import { + fromWeb3JsKeypair, + fromWeb3JsPublicKey, +} from "@metaplex-foundation/umi-web3js-adapters"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; +import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; +import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; +import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; +import * as bs58 from "bs58"; +import { uploadImage } from "../utils/FluxbeamClient"; +/** + * Create a new SPL V1 token + * @param agent SolanaAgentKit instance + * @param name Name of the token + * @param symbol Symbol of the token + * @param decimals Number of decimals for the token (default: 9) + * @param initialSupply Initial supply to mint (optional) + * @param imagePath path to the image to upload it if not uri is provided (optional) + * @param uri URI for the image (optional) + * @returns transaction signature + */ +export async function fluxbeamCreateMintV1( agent: SolanaAgentKit, - owner: PublicKey, - tokenMint: PublicKey, - config: CreateMintV1Config, - priorityFee: number, - metadataCID: string, + name: string, + symbol: string, + decimals: number = 9, + initialSupply?: number, + imagePath?: string, + uri?: string, ) { - const mintLamports = - await agent.connection.getMinimumBalanceForRentExemption(MINT_SIZE); - - const ata = getAssociatedTokenAddressSync( - tokenMint, - owner, - true, - TOKEN_PROGRAM_ID, - ); + try { + // Create UMI instance from agent + const umi = createUmi(agent.connection.rpcEndpoint) + .use(mplToolbox()) + .use(irysUploader()); + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - const [metadataPDA] = PublicKey.findProgramAddressSync( - [Buffer.from("metadata"), PROGRAM_ID.toBuffer(), tokenMint.toBuffer()], - PROGRAM_ID, - ); + // Ensure URI is defined: upload the image if URI is not provided + if (!uri) { + if (!imagePath) { + throw new Error("Either 'uri' or 'imagePath' must be provided."); + } + uri = await uploadImage(umi, imagePath); + } - const ON_CHAIN_METADATA = { - name: config.name, - symbol: config.symbol, - uri: config.metadataUri, - sellerFeeBasisPoints: config.sellerFeeBasisPoints, - creators: config.creators, - collection: null, - uses: null, - } as DataV2; + // Create new token mint + const mint = generateSigner(umi); - const unitLimit = 100_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - const txn = new Transaction().add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: unitPrice, - }), - SystemProgram.transfer({ - fromPubkey: owner, - toPubkey: FEE_ACCOUNT, - lamports: 100_000_000, - }), - new TransactionInstruction({ - keys: [], - programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), - data: Buffer.from(metadataCID), - }), - SystemProgram.createAccount({ - fromPubkey: owner, - newAccountPubkey: tokenMint, - space: MINT_SIZE, - lamports: mintLamports, - programId: TOKEN_PROGRAM_ID, - }), - ); - - txn.add( - createInitializeMintInstruction( - tokenMint, - config.decimals, - config.mintAuthority, - config.freezeAuthority, - TOKEN_PROGRAM_ID, - ), - createCreateMetadataAccountV3Instruction( - { - metadata: metadataPDA, - mint: tokenMint, - mintAuthority: config.mintAuthority, - payer: owner, - updateAuthority: owner, - }, - { - createMetadataAccountArgsV3: { - data: ON_CHAIN_METADATA, - isMutable: true, - collectionDetails: null, - }, + let builder = createFungible(umi, { + name, + uri, + symbol, + sellerFeeBasisPoints: { + basisPoints: 0n, + identifier: "%", + decimals: 2, }, - PROGRAM_ID, - ), - createAssociatedTokenAccountInstruction( - owner, - ata, - owner, - tokenMint, - TOKEN_PROGRAM_ID, - ), - ); + decimals, + mint, + }); - if (config.mintTotalSupply) { - txn.add( - createMintToInstruction( - tokenMint, - ata, - owner, - config.totalSupply, - [], - TOKEN_PROGRAM_ID, - ), - ); - } + if (initialSupply) { + builder = builder.add( + mintV1(umi, { + mint: mint.publicKey, + tokenStandard: TokenStandard.Fungible, + tokenOwner: fromWeb3JsPublicKey(agent.wallet_address), + amount: initialSupply * Math.pow(10, decimals), + }), + ); + } - const bhash = await agent.connection.getLatestBlockhash("confirmed"); - txn.feePayer = owner; - txn.recentBlockhash = bhash.blockhash; - return txn; -} + const txId = await builder.sendAndConfirm(umi, { + confirm: { commitment: "finalized" }, + }); -/** - * Returns the token mints metadata PDA - * @param mint - * @param metadataProgram - */ -function getMetadataPDA(mint: PublicKey, metadataProgram = PROGRAM_ID) { - //@ts-ignore - const [metaPDA] = PublicKey.findProgramAddressSync( - [Buffer.from("metadata"), metadataProgram.toBuffer(), mint.toBuffer()], - metadataProgram, - ); - return metaPDA; + const signature = bs58.default.encode(txId.signature); + + return signature; + } catch (error: any) { + throw Error(`failed to create V1 token : ${error}`); + } } diff --git a/src/tools/fluxbeam_v2_token_creation.ts b/src/tools/fluxbeam_v2_token_creation.ts index e69de29b..55b7d80a 100644 --- a/src/tools/fluxbeam_v2_token_creation.ts +++ b/src/tools/fluxbeam_v2_token_creation.ts @@ -0,0 +1,480 @@ +import { + AccountState, + ExtensionType, + TOKEN_2022_PROGRAM_ID, + createAssociatedTokenAccountInstruction, + createEnableRequiredMemoTransfersInstruction, + createInitializeDefaultAccountStateInstruction, + createInitializeImmutableOwnerInstruction, + createInitializeInstruction, + createInitializeInterestBearingMintInstruction, + createInitializeMetadataPointerInstruction, + createInitializeMintCloseAuthorityInstruction, + createInitializeMintInstruction, + createInitializeNonTransferableMintInstruction, + createInitializePermanentDelegateInstruction, + createInitializeTransferFeeConfigInstruction, + createMintToInstruction, + createThawAccountInstruction, + getAssociatedTokenAddressSync, + getMintLen, +} from "@solana/spl-token"; +import { + ComputeBudgetProgram, + Keypair, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { pack } from "@solana/spl-token-metadata"; +import { DataV2 } from "@metaplex-foundation/mpl-token-metadata"; +import { FEE_ACCOUNT } from "../constants"; +import { + sendTransaction, + signTransaction, + uploadImage, +} from "../utils/FluxbeamClient"; +import { none } from "@metaplex-foundation/umi-options"; +import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; +import { keypairIdentity } from "@metaplex-foundation/umi"; +import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; +import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; +import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; + +export interface ExtensionConfig { + type: ExtensionType; + cfg: Record; // Dynamic structure for each extension's config +} + +export class CreateMintV1 { + name: string; + symbol: string; + metadataUri: string; + decimals: number; + totalSupply: bigint; + + mintAuthority: PublicKey; + freezeAuthority: PublicKey | null; + + sellerFeeBasisPoints: number = 0; + + //Do we mint the total supply to the user + mintTotalSupply: boolean; + + creators: [] | null = null; + + constructor( + name: string, + symbol: string, + metadataUri: string, + totalSupply: bigint, + mintAuthority: PublicKey, + freezeAuthority: PublicKey | null, + decimals = 6, + mintTotalSupply = true, + ) { + this.name = name; + this.symbol = symbol; + this.metadataUri = metadataUri; + this.totalSupply = totalSupply; + this.decimals = decimals; + this.mintTotalSupply = mintTotalSupply; + this.mintAuthority = mintAuthority; + this.freezeAuthority = freezeAuthority; + } + + setSellerFeeBasisPoints(bp: number) { + this.sellerFeeBasisPoints = bp; + } + + setCreators(creators: []) { + this.creators = creators; + } +} + +export class CreateMintV2 extends CreateMintV1 { + extensions: ExtensionType[] = []; + extensionConfig = {}; + + metadata: any; + + setMetadata(meta: any) { + this.metadata = meta; + } + + metadataLength(): number { + if (!this.metadata) { + return 0; + } + return ( + pack({ + additionalMetadata: this.metadata?.additionalMetadata || [], //[string, string] + mint: this.metadata.mint, // Default/Placeholder PublicKey, + symbol: this.metadata.symbol, + name: this.metadata.name, + uri: this.metadata.uri, + }).length + 4 + ); + } + + addExtension(ext: ExtensionType, config: object = {}) { + this.extensions.push(ext); + //@ts-ignore + this.extensionConfig[ext] = config; + } +} + +async function getCreateToken2022MintTransaction( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMint: PublicKey, + config: CreateMintV2, + priorityFee: number, +) { + const mintLen = getMintLen(config.extensions); + console.log(`this is the mintLen ${mintLen}`); + console.log(`this is the metadataLength ${config.metadataLength()}`); + const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( + mintLen + config.metadataLength(), + ); + const ata = getAssociatedTokenAddressSync( + tokenMint, + owner, + true, + TOKEN_2022_PROGRAM_ID, + ); + const ON_CHAIN_METADATA = { + name: config.name, + symbol: config.symbol, + uri: config.metadataUri, + sellerFeeBasisPoints: 0, + uses: none(), + creators: none(), + collection: none(), + } as DataV2; + const unitLimit = 120_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + const transaction = new Transaction(); + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.createAccount({ + fromPubkey: owner, + newAccountPubkey: tokenMint, + space: mintLen, + lamports: mintLamports, + programId: TOKEN_2022_PROGRAM_ID, + }), + SystemProgram.transfer({ + fromPubkey: owner, + toPubkey: FEE_ACCOUNT, + lamports: 200000, + }), + new TransactionInstruction({ + keys: [], + programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), + data: Buffer.from(config.name), + }), + ); + let isDefaultFrozen = false; + config.extensions.forEach((ext: string | number) => { + //@ts-ignore + const cfg = config.extensionConfig[ext]; + // eslint-disable-next-line no-console + console.log(`${ext}`, cfg); + + switch (ext) { + case ExtensionType.TransferFeeConfig: + ON_CHAIN_METADATA.sellerFeeBasisPoints = cfg.feeBasisPoints; //Update so it reflects same as royalties + transaction.add( + createInitializeTransferFeeConfigInstruction( + tokenMint, + cfg.transfer_fee_config_authority + ? cfg.transfer_fee_config_authority + : config.mintAuthority, //Config Auth + cfg.withdraw_withheld_authority + ? cfg.withdraw_withheld_authority + : config.mintAuthority, //Withdraw Auth + cfg.feeBasisPoints, + cfg.maxFee, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.InterestBearingConfig: + transaction.add( + createInitializeInterestBearingMintInstruction( + tokenMint, + owner, //Rate Auth + cfg.rate * 100, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.PermanentDelegate: + transaction.add( + createInitializePermanentDelegateInstruction( + tokenMint, + new PublicKey(cfg.address), + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.NonTransferable: + transaction.add( + createInitializeNonTransferableMintInstruction( + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.ImmutableOwner: + transaction.add( + createInitializeImmutableOwnerInstruction( + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.MemoTransfer: + transaction.add( + createEnableRequiredMemoTransfersInstruction( + tokenMint, + owner, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + if (config.mintTotalSupply) { + transaction.add( + new TransactionInstruction({ + keys: [{ pubkey: owner, isSigner: true, isWritable: true }], + data: Buffer.from("Mint To Memo", "utf-8"), + programId: new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", + ), + }), + ); + } + break; + case ExtensionType.DefaultAccountState: + isDefaultFrozen = cfg.state === AccountState.Frozen; + transaction.add( + createInitializeDefaultAccountStateInstruction( + tokenMint, + cfg.state, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.MintCloseAuthority: + transaction.add( + createInitializeMintCloseAuthorityInstruction( + tokenMint, + config.mintAuthority, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + case ExtensionType.MetadataPointer: + transaction.add( + createInitializeMetadataPointerInstruction( + tokenMint, + config.mintAuthority, + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + break; + default: + console.error("Unsupported extension", ext); + break; + } + }); + + //Init the mint + transaction.add( + createInitializeMintInstruction( + tokenMint, + config.decimals, + config.mintAuthority, + config.freezeAuthority, + TOKEN_2022_PROGRAM_ID, + ), + ); + + if (config.metadata) { + transaction.add( + createInitializeInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: tokenMint, + updateAuthority: config.mintAuthority, + mint: tokenMint, + mintAuthority: config.mintAuthority, + name: config.metadata.name, + symbol: config.metadata.symbol, + uri: config.metadata.uri, + }), + ); + } + + if (config.mintTotalSupply) { + transaction.add( + createAssociatedTokenAccountInstruction( + owner, + ata, + owner, + tokenMint, + TOKEN_2022_PROGRAM_ID, + ), + ); + + if (isDefaultFrozen) { + transaction.add( + createThawAccountInstruction( + ata, + tokenMint, + owner, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + } + + transaction.add( + createMintToInstruction( + tokenMint, + ata, + owner, + config.totalSupply, + [], + TOKEN_2022_PROGRAM_ID, + ), + ); + } + + return transaction; +} + +export async function fluxbeamCreateMintV2( + agent: SolanaAgentKit, + owner: PublicKey, + tokenMint: Keypair, + name: string, + symbol: string, + totalSupply: bigint, + mintAuthority: PublicKey, + freezeAuthority: PublicKey | null, + decimals = 6, + mintTotalSupply = true, + priorityFee: number, + extensions: ExtensionConfig[], + description?: string, + metadataUri?: string, + imagePath?: string, + imageUri?: string, +) { + try { + const umi = createUmi(agent.connection.rpcEndpoint) + .use(mplToolbox()) + .use(irysUploader()); + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); + + // Ensure either metadataUri, imageUri, or imagePath is provided + if (!metadataUri && !imageUri && !imagePath) { + throw new Error( + "At least one of 'metadataUri', 'imageUri', or 'imagePath' must be provided to create token metadata.", + ); + } + + // If metadataUri is not provided, process imageUri or imagePath to generate it + if (!metadataUri) { + // If imageUri is provided, use it to create the metadata + if (imageUri) { + metadataUri = await umi.uploader.uploadJson({ + name, + description: description || "No description provided", + image: imageUri, + }); + + if (!metadataUri) { + throw new Error( + "Failed to upload metadata JSON using the provided image URI.", + ); + } + } + // If imageUri is not provided but imagePath is, upload the image and use the resulting URI + else if (imagePath) { + const uploadedImageUri = await uploadImage(umi, imagePath); + + if (!uploadedImageUri) { + throw new Error( + "Failed to upload the image and generate its URI from imagePath.", + ); + } + + metadataUri = await umi.uploader.uploadJson({ + name, + description: description || "No description provided", + image: uploadedImageUri, + }); + + if (!metadataUri) { + throw new Error( + "Failed to upload metadata JSON using the uploaded image URI.", + ); + } + } + } + // Ensure metadataUri is a valid string before proceeding + if (!metadataUri) { + throw new Error( + "Failed to resolve metadataUri. It must be a valid string.", + ); + } + + const config = new CreateMintV2( + name, + symbol, + metadataUri, + totalSupply, + mintAuthority, + freezeAuthority, + decimals, + mintTotalSupply, + ); + config.setSellerFeeBasisPoints(0.5); + config.setCreators([]); + + extensions.forEach(({ type, cfg }) => { + config.addExtension(type, cfg); + }); + if (description || metadataUri) { + config.setMetadata({ + name, + mint: new PublicKey("11111111111111111111111111111111"), + symbol, + uri: metadataUri, + additionalMetadata: description ? [] : [], // { key: "description", value: description } will fix description + }); + } + const transaction = await getCreateToken2022MintTransaction( + agent, + owner, + tokenMint.publicKey, + config, + priorityFee, + ); + // Sign and send the transaction + + const txn = await signTransaction(agent, transaction, [tokenMint]); + + const response = await sendTransaction(agent, txn); + + return response.signature; + } catch (error: any) { + throw Error(`failed to create V2 token : ${error}`); + } +} diff --git a/src/tools/fluxbeam_withheld_amounts_tracking.ts b/src/tools/fluxbeam_withheld_amounts_tracking.ts index b0cbf81e..f43cbd2d 100644 --- a/src/tools/fluxbeam_withheld_amounts_tracking.ts +++ b/src/tools/fluxbeam_withheld_amounts_tracking.ts @@ -8,7 +8,12 @@ import { TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token"; import { ComputeBudgetProgram } from "@solana/web3.js"; -import { accountExists, getAssociatedTokenPDA } from "../utils/fluxbeam_utils"; +import { + accountExists, + getAssociatedTokenPDA, + sendTransaction, + signTransaction, +} from "../utils/FluxbeamClient"; import { PublicKey, Transaction } from "@solana/web3.js"; /** @@ -19,7 +24,7 @@ import { PublicKey, Transaction } from "@solana/web3.js"; * @param authority * @param srcAccounts */ -export async function getClaimWitheldTokens( +export async function fluxbeamGetClaimWitheldTokens( agent: SolanaAgentKit, mint: PublicKey, authority: PublicKey, @@ -36,9 +41,6 @@ export async function getClaimWitheldTokens( TOKEN_2022_PROGRAM_ID, ); - const { blockhash } = - await agent.connection.getLatestBlockhash("confirmed"); - if (!(await accountExists(agent, dstAcc))) { const transaction = new Transaction().add( ComputeBudgetProgram.setComputeUnitLimit({ units: 42_000 }), @@ -62,11 +64,11 @@ export async function getClaimWitheldTokens( ), ); - transaction.feePayer = payer || agent.wallet_address; - transaction.recentBlockhash = blockhash; - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + // Sign and send the transaction + const signature = await signTransaction(agent, transaction); + + await sendTransaction(agent, signature); + signatures.push(signature); } else { const transaction = new Transaction(); @@ -80,12 +82,11 @@ export async function getClaimWitheldTokens( TOKEN_2022_PROGRAM_ID, ), ); - transaction.feePayer = payer || agent.wallet_address; - transaction.recentBlockhash = blockhash; + // Sign and send the transaction + const signature = await signTransaction(agent, transaction); + + await sendTransaction(agent, signature); - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); signatures.push(signature); } @@ -101,12 +102,11 @@ export async function getClaimWitheldTokens( ), ); - transaction.feePayer = payer || agent.wallet_address; - transaction.recentBlockhash = blockhash; + // Sign and send the transaction + const signature = await signTransaction(agent, transaction); + + await sendTransaction(agent, signature); - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); signatures.push(signature); } return signatures; @@ -122,7 +122,7 @@ export async function getClaimWitheldTokens( * @param payer * @returns Transaction signature */ -export async function getClaimWitheldTokensFromMint( +export async function fluxbeamGetClaimWitheldTokensFromMint( agent: SolanaAgentKit, mint: PublicKey, payer?: PublicKey, @@ -164,16 +164,10 @@ export async function getClaimWitheldTokensFromMint( ), ); - // Set transaction parameters - const { blockhash } = - await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = payer || agent.wallet_address; - transaction.recentBlockhash = blockhash; + // Sign and send the transaction + const signature = await signTransaction(agent, transaction); - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + await sendTransaction(agent, signature); return signature; } catch (error: any) { @@ -188,11 +182,10 @@ export async function getClaimWitheldTokensFromMint( * @param srcAccounts Source accounts to harvest from * @returns Array of transaction signatures */ -export async function getClaimWithheldTokensToMint( +export async function fluxbeamGetClaimWithheldTokensToMint( agent: SolanaAgentKit, mint: PublicKey, srcAccounts: PublicKey[], - payer?: PublicKey, ) { try { const signatures = []; @@ -205,14 +198,10 @@ export async function getClaimWithheldTokensToMint( ), ); - const { blockhash } = - await agent.connection.getLatestBlockhash("confirmed"); - transaction.feePayer = payer || agent.wallet_address; - transaction.recentBlockhash = blockhash; - // Sign and send transaction - const signature = await agent.connection.sendTransaction(transaction, [ - agent.wallet, - ]); + // Sign and send the transaction + const signature = await signTransaction(agent, transaction); + + await sendTransaction(agent, signature); signatures.push(signature); } diff --git a/src/tools/fluxbeam_wrap_and_unwrap_sol.ts b/src/tools/fluxbeam_wrap_and_unwrap_sol.ts index 087be511..4150575c 100644 --- a/src/tools/fluxbeam_wrap_and_unwrap_sol.ts +++ b/src/tools/fluxbeam_wrap_and_unwrap_sol.ts @@ -6,47 +6,67 @@ import { } from "@solana/spl-token"; import { SolanaAgentKit } from "../agent"; import { + LAMPORTS_PER_SOL, PublicKey, SystemProgram, + Transaction, TransactionInstruction, } from "@solana/web3.js"; import { TOKENS } from "../constants"; -import { makeAndSendAndConfirmTransaction } from "../utils/fluxbeam_utils"; +import { sendTransaction, signTransaction } from "../utils/FluxbeamClient"; export async function getWrapSOLInstructions( agent: SolanaAgentKit, owner: PublicKey, amount: number, ): Promise { - const ixs: TransactionInstruction[] = []; - const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); - const ataInfo = await agent.connection - .getTokenAccountBalance(ata) - .catch(() => {}); + try { + const ixs: TransactionInstruction[] = []; + const amountInLamports = amount * LAMPORTS_PER_SOL; + + const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); + const ataInfo = await agent.connection + .getTokenAccountBalance(ata) + .catch(() => null); + const userBalanceInLamports = await agent.connection.getBalance(owner); - if (ataInfo) { - if (Number(ataInfo?.value.amount) >= amount) { + const currentWSOLBalance = ataInfo ? Number(ataInfo.value.amount) : 0; + + if (currentWSOLBalance >= amountInLamports) { return ixs; } - } + // if the amount of WSOL already in the wallet is more than the amount we want to wrap then we return + // an empty array of instructions + if (!ataInfo) { + ixs.push( + createAssociatedTokenAccountInstruction(owner, ata, owner, TOKENS.wSOL), + ); + } - if (!ataInfo) { - ixs.push( - createAssociatedTokenAccountInstruction(owner, ata, owner, TOKENS.wSOL), - ); - } - if (amount > 0) { - ixs.push( - SystemProgram.transfer({ - fromPubkey: owner, - toPubkey: ata, - lamports: amount - Number(ataInfo?.value.amount || 0), - }), - createSyncNativeInstruction(ata), + const requiredLamports = amountInLamports - currentWSOLBalance; + if (requiredLamports > 0) { + if (requiredLamports > userBalanceInLamports) { + throw new Error( + "Insufficient SOL balance to wrap the requested amount.", + ); + } + + // Add transfer and sync instructions + ixs.push( + SystemProgram.transfer({ + fromPubkey: owner, + toPubkey: ata, + lamports: requiredLamports, + }), + createSyncNativeInstruction(ata), + ); + } + return ixs; + } catch (error: any) { + throw new Error( + `Failed to generate wrap SOL instructions: ${error.message}`, ); } - - return ixs; } export function getUnwrapSOLInstruction( @@ -59,10 +79,10 @@ export function getUnwrapSOLInstruction( /** * Wraps SOL to wSOL for the specified amount * @param agent SolanaAgentKit instance - * @param amount Amount of SOL to wrap (in lamports) + * @param amount Amount of SOL to wrap (in SOL) * @returns Transaction signature */ -export async function wrapSOL( +export async function fluxbeamWrapSOL( agent: SolanaAgentKit, amount: number, ): Promise { @@ -77,12 +97,13 @@ export async function wrapSOL( throw new Error("No wrap instructions needed"); } - return await makeAndSendAndConfirmTransaction( - agent.connection, - instructions, - [agent.wallet], - agent.wallet, - ); + const transaction = new Transaction().add(...instructions); + + const txn = await signTransaction(agent, transaction); + + const response = await sendTransaction(agent, txn); + + return response.signature; } catch (error: any) { throw new Error(`SOL wrapping failed: ${error.message}`); } @@ -93,16 +114,19 @@ export async function wrapSOL( * @param agent SolanaAgentKit instance * @returns Transaction signature */ -export async function unwrapSOL(agent: SolanaAgentKit): Promise { +export async function fluxbeamUnwrapSOL( + agent: SolanaAgentKit, +): Promise { try { const instruction = getUnwrapSOLInstruction(agent.wallet_address); - return await makeAndSendAndConfirmTransaction( - agent.connection, - [instruction], - [agent.wallet], - agent.wallet, - ); + const transaction = new Transaction().add(instruction); + + const txn = await signTransaction(agent, transaction); + + const response = await sendTransaction(agent, txn); + + return response.signature; } catch (error: any) { throw new Error(`SOL unwrapping failed: ${error.message}`); } diff --git a/src/tools/index.ts b/src/tools/index.ts index e354bfcf..5e9928a4 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -31,3 +31,15 @@ export * from "./mayan"; export * from "./allora"; export * from "./solutiofi"; export * from "./switchboard"; +export * from "./fluxbeam_burn_token"; +export * from "./fluxbeam_create_pool"; +export * from "./fluxbeam_fee_management"; +// export * from "./fluxbeam_liquidity_management"; +// export * from "./fluxbeam_lock_token"; +export * from "./fluxbeam_metadata_management"; +export * from "./fluxbeam_v2_token_creation"; +export * from "./fluxbeam_token_swap"; +export * from "./fluxbeam_transfer"; +export * from "./fluxbeam_v1_token_creation"; +export * from "./fluxbeam_withheld_amounts_tracking"; +export * from "./fluxbeam_wrap_and_unwrap_sol"; diff --git a/src/types/index.ts b/src/types/index.ts index 6329bbbf..a52fe912 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -301,3 +301,21 @@ export interface SwitchboardSimulateFeedResponse { message?: string; code?: string; } + +export interface FluxbeamServerResponse { + signature: string; +} + +export interface Quote { + amountIn: number; + inputMint: string; + minimumOut: number; + outAmount: number; + outputMint: string; + pool: string; + program: string; +} + +export interface TransformedResponse { + quote: Quote; +} diff --git a/src/utils/FluxbeamClient.ts b/src/utils/FluxbeamClient.ts new file mode 100644 index 00000000..cecf5b34 --- /dev/null +++ b/src/utils/FluxbeamClient.ts @@ -0,0 +1,117 @@ +import { + getAssociatedTokenAddressSync, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; +import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; +import { SolanaAgentKit } from "../agent"; +import { FLUXBEAM_BASE_URI } from "../constants"; +import { base64 } from "@coral-xyz/anchor/dist/cjs/utils/bytes"; +import { FluxbeamServerResponse } from "../types"; +import fs from "fs/promises"; +import path from "path"; +import { createGenericFile, Umi } from "@metaplex-foundation/umi"; + +/** + * Returns the token mints account for a given user + * @param owner + * @param mint + * @param program + * @param allowOwnerOffCurve + */ +export async function getAssociatedTokenPDA( + mint: PublicKey, + owner: PublicKey, + program = TOKEN_2022_PROGRAM_ID, + allowOwnerOffCurve = false, +) { + return getAssociatedTokenAddressSync( + mint, + owner, + allowOwnerOffCurve, + program, + ); +} + +export async function accountExists(agent: SolanaAgentKit, account: PublicKey) { + const acc = await agent.connection + .getAccountInfo(account, "confirmed") + .catch((e) => {}); + return !!acc; +} + +// Function to sign the transaction +export async function signTransaction( + agent: SolanaAgentKit, + transaction: Transaction, + additional_signers: Keypair[] = [], +) { + transaction.feePayer = agent.wallet_address; + transaction.recentBlockhash = ( + await agent.connection.getLatestBlockhash() + ).blockhash; + + transaction.sign(agent.wallet, ...additional_signers); // Sign the transaction + + // Serialize the transaction + const serializedTransaction = transaction.serialize(); + + // Encode the serialized transaction to a base64 string + const base64Transaction = base64.encode(serializedTransaction); + + return base64Transaction; +} + +//send the transaction to the fluxbeam endpoint +// bwmkt is a query param meaning "bandwidth market" and is set to true +export async function sendTransaction( + agent: SolanaAgentKit, + transaction: string, +): Promise { + const endpoint = + "https://api.fluxbeam.xyz/v1/solana/sendTransaction?bwmkt=true"; + + try { + const response = await fetch(endpoint, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + wallet: agent.wallet_address, + transaction: transaction, + }), + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const resp = await response.json(); + + console.log(`https://solscan.io/tx/${resp.signature}`); + + return resp; + } catch (error) { + throw Error(`Error sending transaction: ${error}`); + } +} + +// export async function signAndSendTransaction() {} + +export async function uploadImage(umi: Umi, filePath: string): Promise { + // Resolve the absolute path to the file relative to the current working directory + const absoluteFilePath = path.resolve(process.cwd(), filePath); + // Read the file asynchronously + const buffer = await fs.readFile(absoluteFilePath); + + const file = createGenericFile(buffer, path.basename(absoluteFilePath), { + contentType: "image/jpeg", + }); + const [imageUri] = await umi.uploader.upload([file]); + + return imageUri; +} + +export function uri(endpoint: string) { + return `${FLUXBEAM_BASE_URI}/${endpoint}`; +} diff --git a/src/utils/fluxbeam_utils.ts b/src/utils/fluxbeam_utils.ts deleted file mode 100644 index 8caaa4e3..00000000 --- a/src/utils/fluxbeam_utils.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { - getAssociatedTokenAddressSync, - TOKEN_2022_PROGRAM_ID, -} from "@solana/spl-token"; -import { - Connection, - Keypair, - PublicKey, - Signer, - TransactionInstruction, - TransactionMessage, - VersionedTransaction, -} from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent"; -import { confirmTransaction } from "@raydium-io/raydium-sdk-v2"; - -/** - * Returns the token mints account for a given user - * @param owner - * @param mint - * @param program - * @param allowOwnerOffCurve - */ -export async function getAssociatedTokenPDA( - mint: PublicKey, - owner: PublicKey, - program = TOKEN_2022_PROGRAM_ID, - allowOwnerOffCurve = false, -) { - return getAssociatedTokenAddressSync( - mint, - owner, - allowOwnerOffCurve, - program, - ); -} - -export async function accountExists(agent: SolanaAgentKit, account: PublicKey) { - const acc = await agent.connection - .getAccountInfo(account, "confirmed") - .catch((e) => {}); - return !!acc; -} - -// Send a versioned transaction with less boilerplate -// https://www.quicknode.com/guides/solana-development/transactions/how-to-use-versioned-transactions-on-solana -// TODO: maybe we should expose this? To discuss. -export const makeAndSendAndConfirmTransaction = async ( - connection: Connection, - instructions: Array, - signers: Array, - payer: Keypair, -) => { - const latestBlockhash = (await connection.getLatestBlockhash("max")) - .blockhash; - - const messageV0 = new TransactionMessage({ - payerKey: payer.publicKey, - recentBlockhash: latestBlockhash, - instructions, - }).compileToV0Message(); - const transaction = new VersionedTransaction(messageV0); - transaction.sign(signers); - - const signature = await connection.sendTransaction(transaction); - - await confirmTransaction(connection, signature); - - return signature; -}; diff --git a/test/fluxbeam_bridge_tokens.test.ts b/test/fluxbeam_bridge_tokens.test.ts new file mode 100644 index 00000000..9d8edb61 --- /dev/null +++ b/test/fluxbeam_bridge_tokens.test.ts @@ -0,0 +1,31 @@ +import { SolanaAgentKit } from "../src"; +import { TOKENS } from "../src/constants"; +import { Chain, fluxbeamBridgeTokens } from "../src/tools/fluxbeam_bridge_tokens"; + +const testBridgeTokens = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + const destination_wallet_address = + "destination_wallet_address"; + + const fromToken = TOKENS.SOL.toString(); + const toToken = "0x4200000000000000000000000000000000000006"; //WETH + + const signature = await fluxbeamBridgeTokens( + agent, + Chain.Base, + destination_wallet_address, + fromToken, + toToken, + 0.020 + ) + console.log(`this is signature ${signature}`); +}; + +testBridgeTokens() diff --git a/test/fluxbeam_burn_token.test.ts b/test/fluxbeam_burn_token.test.ts new file mode 100644 index 00000000..5cf9b535 --- /dev/null +++ b/test/fluxbeam_burn_token.test.ts @@ -0,0 +1,25 @@ +import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { fluxbeamBurnToken } from "../src/tools"; + + +const testBurnTokenControls = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + const mint = new PublicKey("6DdtiLQc3519D6tyCQQphcszZtRf5ZEhichUFvJjvJc2"); + const signature3 = await fluxbeamBurnToken( + agent, + mint, + 50000000000 + ) + console.log(`this is signature for burn token method txn${signature3}`); +}; + +// createMintToken() +testBurnTokenControls() diff --git a/test/fluxbeam_create_pool.test.ts b/test/fluxbeam_create_pool.test.ts new file mode 100644 index 00000000..eb714f8e --- /dev/null +++ b/test/fluxbeam_create_pool.test.ts @@ -0,0 +1,32 @@ +import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { fluxBeamCreatePool } from "../src/tools"; +import { TOKENS } from "../src/constants"; + +(async () => { + // Initialize SolanaAgentKit instance + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + const tokenA = TOKENS.SOL; // SOL token + const tokenB = TOKENS.USDC; + const tokenAAmount = 0.001; // 1 token A + const tokenBAmount = 0.1; // 100 token B + + // Call the function + const signature = await fluxBeamCreatePool( + solanaAgent, + tokenA, + tokenAAmount, + tokenB, + tokenBAmount, + ); + + // Log the result + console.log("Pool created successfully! Transaction signature:", signature); +})(); diff --git a/test/fluxbeam_create_token_v1.test.ts b/test/fluxbeam_create_token_v1.test.ts new file mode 100644 index 00000000..7cd2dade --- /dev/null +++ b/test/fluxbeam_create_token_v1.test.ts @@ -0,0 +1,40 @@ +import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { fluxbeamCreateMintV1 } from "../src/tools"; +import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; +import { createUmi} from "@metaplex-foundation/umi-bundle-defaults"; +import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; +import { uploadImage } from "../src/utils/FluxbeamClient"; +import { keypairIdentity } from "@metaplex-foundation/umi"; +import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; + +const testCreateTokenV1 = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); + + let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" + + // const uri = await uploadImage(umi, 'test/pic5.jpg'); + + const signature = await fluxbeamCreateMintV1( + agent, + "test flower", + "TSTFLWR", + 9, + undefined, + "/test/pic5.jpg", + uri_string, + ); + console.log(`this is signature for create mint txn ${signature}`); +}; + +// createMintToken() +testCreateTokenV1() + diff --git a/test/fluxbeam_create_token_v2.test.ts b/test/fluxbeam_create_token_v2.test.ts new file mode 100644 index 00000000..9da50d9b --- /dev/null +++ b/test/fluxbeam_create_token_v2.test.ts @@ -0,0 +1,68 @@ +import { Keypair, PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { + CreateMintV2, + fluxbeamBurnToken, + fluxbeamCreateMintV1, + fluxbeamCreateMintV2, +} from "../src/tools"; +import { ExtensionType } from "@solana/spl-token"; + +const testCreateTokenV2 = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + // Generate a new keypair for the mint + const mintKeypair = Keypair.generate(); + + // Pass the public key to the function + // const tokenMint = mintKeypair.publicKey; + + const signature = await fluxbeamCreateMintV2( + agent, + agent.wallet_address, + mintKeypair, // we have to pass in the mint keypair to sign the txn not just the mint public key otherwise it says "Missing signature for public key" + "myV2Flowertoken", + "MVFT", + BigInt(100000000000), + agent.wallet_address, + agent.wallet_address, + 9, + true, + 100_000, + [ + //Also take note that a mint with metadata MUST have the metadata-pointer extension initialized + { + type:ExtensionType.MetadataPointer, + cfg:{} + }, + { + type: ExtensionType.TransferFeeConfig, + cfg: { + feeBasisPoints: 500, // 5% fee + maxFee: BigInt(5_000), // Maximum fee in lamports + transfer_fee_config_authority: agent.wallet_address, + withdraw_withheld_authority: agent.wallet_address, + }, + }, + // No additional configuration needed + { + type: ExtensionType.InterestBearingConfig, + cfg: { + rate: 0.05, // 5% interest rate + }, + }, + ], + "this is the first (okay second) token2022 token i'm making", + undefined, + undefined, + "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw", + ); + console.log(`this is signature for create mint v2 txn ${signature}`); +}; + +testCreateTokenV2(); diff --git a/test/fluxbeam_metadata_management.test.ts b/test/fluxbeam_metadata_management.test.ts new file mode 100644 index 00000000..e2a704b8 --- /dev/null +++ b/test/fluxbeam_metadata_management.test.ts @@ -0,0 +1,68 @@ +import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { fluxbeamCreateMintV1 } from "../src/tools"; +import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; +import { createUmi} from "@metaplex-foundation/umi-bundle-defaults"; +import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; +import { uploadImage } from "../src/utils/FluxbeamClient"; +import { keypairIdentity } from "@metaplex-foundation/umi"; +import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; + +const testUpdateMetadataTokenV1 = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); + + let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" + + // const uri = await uploadImage(umi, 'test/pic5.jpg'); + + const signature = await fluxbeamCreateMintV1( + agent, + "test flower", + "TSTFLWR", + 9, + undefined, + "/test/pic5.jpg", + uri_string, + ); + console.log(`this is signature for create mint txn ${signature}`); +}; + + +const testUpdateMetadataTokenV2 = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; + umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); + + let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" + + // const uri = await uploadImage(umi, 'test/pic5.jpg'); + + const signature = await fluxbeamCreateMintV1( + agent, + "test flower", + "TSTFLWR", + 9, + undefined, + "/test/pic5.jpg", + uri_string, + ); + console.log(`this is signature for create mint txn ${signature}`); +}; + + +testUpdateMetadataTokenV1() +testUpdateMetadataTokenV2() \ No newline at end of file diff --git a/test/fluxbeam_token_minting_controls.test.ts b/test/fluxbeam_token_minting_controls.test.ts new file mode 100644 index 00000000..1e417e07 --- /dev/null +++ b/test/fluxbeam_token_minting_controls.test.ts @@ -0,0 +1,92 @@ +import { Keypair, PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { TOKENS } from "../src/constants"; +import { Chain, fluxbeamBridgeTokens } from "../src/tools/fluxbeam_bridge_tokens"; +import { fluxbeamMintToAccount, fluxbeamRevokeAuthority, fluxbeamSetAuthority } from "../src/tools/fluxbeam_token_minting_controls"; +import { AuthorityType, createMint, TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; + +const createMintToken = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + const mintKeypair = Keypair.generate(); + //create the mint to use for testing + const testV2Mint = await createMint( + agent.connection, + agent.wallet, + agent.wallet_address, + agent.wallet_address, + 0, + mintKeypair, + { + skipPreflight: false, + commitment: "finalized", + preflightCommitment: "finalized", + maxRetries: 3, + }, + TOKEN_2022_PROGRAM_ID, + ); + console.log(testV2Mint) +} + +const testTokenMintingControls = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + // Generate a new authority keypair + // const newAuthority = Keypair.generate(); + + // console.log( `this is the newAuthority's secret key ${newAuthority.secretKey}`); + + const testV2MintAddress = new PublicKey( + "GHUMbWGBSYrRuS7ifkhUk2fEaNwzzSQV9kxPtogVBnpT", + ); + + const signature1 = await fluxbeamMintToAccount( + agent, + agent.wallet_address, + testV2MintAddress, + BigInt(123456789), + ); + console.log(`this is signature for mintTo method ${signature1}`); + + const newAuthority = Keypair.fromSecretKey( + Uint8Array.from([ + 12, 176, 2, 136, 152, 18, 53, 59, 60, 110, 175, 154, 181, 4, 218, 104, + //...... secret key bytes + ]), + ); + + + const signature2 = await fluxbeamSetAuthority( + agent, + agent.wallet_address, + testV2MintAddress, + AuthorityType.MintTokens, + newAuthority.publicKey, + ); + console.log(`this is signature for set authority method ${signature2}`); + + //if it says owner does not match - then you are not signing with the current mint authority, add it in additional signers and make the owner the new authority + const signature3 = await fluxbeamRevokeAuthority( + agent, + newAuthority.publicKey, + testV2MintAddress, + AuthorityType.MintTokens, + true, + 100_000_000, + [newAuthority] + ); + console.log(`this is signature for revoke authority method txn${signature3}`); +}; + +// createMintToken() +testTokenMintingControls() diff --git a/test/fluxbeam_token_swap.test.ts b/test/fluxbeam_token_swap.test.ts new file mode 100644 index 00000000..db09e8f7 --- /dev/null +++ b/test/fluxbeam_token_swap.test.ts @@ -0,0 +1,33 @@ +import { PublicKey, Connection, Keypair } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { fluxBeamSwap } from "../src/tools/fluxbeam_token_swap"; +import { TOKENS } from "../src/constants"; + +(async () => { + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + // Test parameters + const inputMint = new PublicKey("So11111111111111111111111111111111111111112"); + const outputMint = new PublicKey( + "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX", + ); + const inputAmount = 0.003; // Amount in token decimals (e.g., 1 USDC = 1) + const slippageBps = 200; // Slippage tolerance in basis points (2%) + + // Call fluxBeamSwap with test parameters + const result = await fluxBeamSwap( + solanaAgent, + inputMint, + outputMint, + inputAmount, + slippageBps, + ); + + console.log("Swap successful, signature:", result); +})(); diff --git a/test/fluxbeam_transfer.test.ts b/test/fluxbeam_transfer.test.ts new file mode 100644 index 00000000..fb124ef1 --- /dev/null +++ b/test/fluxbeam_transfer.test.ts @@ -0,0 +1,42 @@ + +import { PublicKey } from "@solana/web3.js"; + import { createSolanaTools, SolanaAgentKit } from "../src"; + + import { fluxbeamWrapSOL, fluxbeamUnwrapSOL, fluxbeamTransferSplToken, fluxbeamTransferSol} from "../src/tools"; +import { TOKENS } from "../src/constants"; + + const testWrapandUnwrapSol = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + let v2_mint = new PublicKey("HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC"); //ai16z, token 2022 token + + let mint = TOKENS.BONK + + let dstOwner = new PublicKey("6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE"); + + const signature1 = await fluxbeamTransferSplToken( + agent, + v2_mint, + dstOwner, + 0.02, + ) + + const signature2 = await fluxbeamTransferSol( + agent, + dstOwner, + 0.001 + ) + + console.log(`this is signature one ${signature1}`); + + // console.log(`this is signature two ${signature2}`); + }; + + testWrapandUnwrapSol(); + diff --git a/test/fluxbeam_wrap_and_unwrap_sol.test.ts b/test/fluxbeam_wrap_and_unwrap_sol.test.ts new file mode 100644 index 00000000..ea99770c --- /dev/null +++ b/test/fluxbeam_wrap_and_unwrap_sol.test.ts @@ -0,0 +1,31 @@ + +import { PublicKey } from "@solana/web3.js"; + import { createSolanaTools, SolanaAgentKit } from "../src"; + + import { fluxbeamWrapSOL, fluxbeamUnwrapSOL} from "../src/tools"; + + const testWrapandUnwrapSol = async () => { + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + const signature1 = await fluxbeamWrapSOL( + solanaAgent, + 0.00012 + ); + + const signature2 = await fluxbeamUnwrapSOL( + solanaAgent, + ); + + console.log(`this is signature one ${signature1}`); + + console.log(`this is signature two ${signature2}`); + }; + + testWrapandUnwrapSol(); + diff --git a/test/pic5.jpg b/test/pic5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f271eb16f344cb39d2b377196911fd351de1c6a2 GIT binary patch literal 55568 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

3PP@_jW3+OhyGda<;u6{56lVd^7Qf!9El4 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 J;v=Qc|Jhw$;Ise$ literal 0 HcmV?d00001 From 54a9c9f0a6c24849132b527787bc938514962b37 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Wed, 15 Jan 2025 08:18:26 +0100 Subject: [PATCH 03/11] - Fixed some rebasing errors, added missing package.json deps - refactored fluxbeam into folder - refactored tools - removed unused imports --- package.json | 5 + pnpm-lock.yaml | 1200 ++++++++++------- src/actions/fluxbeam/bridgeToken.ts | 3 +- src/actions/fluxbeam/createV1Token.ts | 12 +- src/actions/fluxbeam/createV2Token.ts | 6 +- src/actions/fluxbeam/revokeMintAuthority.ts | 2 +- src/actions/fluxbeam/setMintAuthority.ts | 2 +- src/actions/fluxbeam/unwrapSol.ts | 2 +- src/agent/index.ts | 30 +- src/langchain/fluxbeam/bridge_token.ts | 2 +- src/langchain/fluxbeam/burn_token.ts | 3 +- .../{create_mint_v1.ts => create_token_v1.ts} | 10 +- .../{create_mint_v2.ts => create_token_v2.ts} | 10 +- src/langchain/fluxbeam/index.ts | 13 + src/langchain/fluxbeam/transfer.ts | 1 - .../fluxbeam/update_v1_token_metadata.ts | 4 +- src/langchain/index.ts | 25 +- .../{ => fluxbeam}/fluxbeam_bridge_tokens.ts | 9 +- .../{ => fluxbeam}/fluxbeam_burn_token.ts | 10 +- .../{ => fluxbeam}/fluxbeam_create_pool.ts | 4 +- .../{ => fluxbeam}/fluxbeam_fee_management.ts | 6 +- .../fluxbeam_liquidity_management.ts | 0 .../{ => fluxbeam}/fluxbeam_lock_token.ts | 0 .../fluxbeam_metadata_management.ts | 2 +- .../{ => fluxbeam}/fluxbeam_token_airdrop.ts | 0 .../fluxbeam_token_minting_controls.ts | 4 +- .../{ => fluxbeam}/fluxbeam_token_swap.ts | 13 +- src/tools/{ => fluxbeam}/fluxbeam_transfer.ts | 4 +- .../fluxbeam_v1_token_creation.ts | 6 +- .../fluxbeam_v2_token_creation.ts | 22 +- .../fluxbeam_withheld_amounts_tracking.ts | 5 +- .../fluxbeam_wrap_and_unwrap_sol.ts | 6 +- src/tools/fluxbeam/index.ts | 15 + src/tools/index.ts | 20 +- src/utils/FluxbeamClient.ts | 5 +- 35 files changed, 829 insertions(+), 632 deletions(-) rename src/langchain/fluxbeam/{create_mint_v1.ts => create_token_v1.ts} (77%) rename src/langchain/fluxbeam/{create_mint_v2.ts => create_token_v2.ts} (86%) create mode 100644 src/langchain/fluxbeam/index.ts rename src/tools/{ => fluxbeam}/fluxbeam_bridge_tokens.ts (95%) rename src/tools/{ => fluxbeam}/fluxbeam_burn_token.ts (89%) rename src/tools/{ => fluxbeam}/fluxbeam_create_pool.ts (95%) rename src/tools/{ => fluxbeam}/fluxbeam_fee_management.ts (94%) rename src/tools/{ => fluxbeam}/fluxbeam_liquidity_management.ts (100%) rename src/tools/{ => fluxbeam}/fluxbeam_lock_token.ts (100%) rename src/tools/{ => fluxbeam}/fluxbeam_metadata_management.ts (98%) rename src/tools/{ => fluxbeam}/fluxbeam_token_airdrop.ts (100%) rename src/tools/{ => fluxbeam}/fluxbeam_token_minting_controls.ts (97%) rename src/tools/{ => fluxbeam}/fluxbeam_token_swap.ts (85%) rename src/tools/{ => fluxbeam}/fluxbeam_transfer.ts (97%) rename src/tools/{ => fluxbeam}/fluxbeam_v1_token_creation.ts (94%) rename src/tools/{ => fluxbeam}/fluxbeam_v2_token_creation.ts (95%) rename src/tools/{ => fluxbeam}/fluxbeam_withheld_amounts_tracking.ts (97%) rename src/tools/{ => fluxbeam}/fluxbeam_wrap_and_unwrap_sol.ts (95%) create mode 100644 src/tools/fluxbeam/index.ts diff --git a/package.json b/package.json index c6216969..7f1888b5 100644 --- a/package.json +++ b/package.json @@ -48,11 +48,14 @@ "@mayanfinance/swap-sdk": "^9.8.0", "@mercurial-finance/dynamic-amm-sdk": "^1.1.19", "@metaplex-foundation/digital-asset-standard-api": "^1.0.4", + "@mayanfinance/swap-sdk": "^9.8.0", "@metaplex-foundation/mpl-core": "^1.1.1", "@metaplex-foundation/mpl-token-metadata": "^3.3.0", "@metaplex-foundation/mpl-toolbox": "^0.9.4", "@metaplex-foundation/umi": "^0.9.2", "@metaplex-foundation/umi-bundle-defaults": "^0.9.2", + "@metaplex-foundation/umi-options": "^1.0.0", + "@metaplex-foundation/umi-uploader-irys": "^1.0.0", "@metaplex-foundation/umi-web3js-adapters": "^0.9.2", "@meteora-ag/alpha-vault": "^1.1.7", "@meteora-ag/dlmm": "^1.3.0", @@ -60,9 +63,11 @@ "@openzeppelin/contracts": "^5.2.0", "@orca-so/common-sdk": "0.6.4", "@orca-so/whirlpools-sdk": "^0.13.12", + "@project-serum/anchor": "^0.26.0", "@pythnetwork/hermes-client": "^1.3.0", "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", + "@solana/spl-token-metadata": "^0.1.6", "@solana/web3.js": "^1.98.0", "@solutiofi/sdk": "^1.0.2", "@sqds/multisig": "^2.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 322335d7..354d4dc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,12 +21,9 @@ importers: specifier: ^3.0.7 version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@bonfida/token-vesting': - specifier: 0.0.9 - version: 0.0.9(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@cks-systems/manifest-sdk': specifier: 0.1.59 + version: 0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@coral-xyz/anchor': specifier: '0.29' @@ -39,18 +36,23 @@ importers: version: 0.3.2(@types/node@22.10.7)(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@langchain/core': specifier: ^0.3.26 + version: 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) version: 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/groq': specifier: ^0.1.2 + version: 0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) version: 0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/langgraph': specifier: ^0.2.36 + version: 0.2.38(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) version: 0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.16 + version: 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) version: 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@lightprotocol/compressed-token': specifier: ^0.17.1 + version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': specifier: ^0.17.1 @@ -80,8 +82,8 @@ importers: specifier: ^0.9.2 version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13) '@metaplex-foundation/umi-options': - specifier: ^0.8.9 - version: 0.8.9 + specifier: ^1.0.0 + version: 1.0.0 '@metaplex-foundation/umi-uploader-irys': specifier: ^1.0.0 version: 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -102,18 +104,28 @@ importers: version: 5.2.0 '@orca-so/common-sdk': specifier: 0.6.4 + version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@orca-so/whirlpools-sdk': specifier: ^0.13.12 + version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@project-serum/anchor': + specifier: ^0.26.0 + version: 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@pythnetwork/hermes-client': specifier: ^1.3.0 version: 1.3.0(axios@1.7.9) '@raydium-io/raydium-sdk-v2': specifier: 0.1.95-alpha + version: 0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': specifier: ^0.4.9 + version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': + specifier: ^0.1.6 + version: 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: ^1.98.0 @@ -123,12 +135,14 @@ importers: version: 1.0.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@sqds/multisig': specifier: ^2.1.3 + version: 2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@switchboard-xyz/common': specifier: ^2.5.15 version: 2.5.15(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tensor-oss/tensorswap-sdk': specifier: ^4.5.0 + version: 4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@tiplink/api': specifier: ^0.3.1 @@ -139,6 +153,7 @@ importers: ai: specifier: ^4.0.22 version: 4.0.22(react@19.0.0)(zod@3.24.1) + version: 4.0.22(react@19.0.0)(zod@3.24.1) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -159,15 +174,18 @@ importers: version: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) flash-sdk: specifier: ^2.24.3 + version: 2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 2.24.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) form-data: specifier: ^4.0.1 version: 4.0.1 langchain: specifier: ^0.3.8 + version: 0.3.9(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(cheerio@0.22.0)(encoding@0.1.13)(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) version: 0.3.9(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))))(axios@1.7.9)(openai@4.77.3(zod@3.24.1)) openai: specifier: ^4.77.0 + version: 4.77.3(encoding@0.1.13)(zod@3.24.1) version: 4.77.3(zod@3.24.1) tiktoken: specifier: ^1.0.18 @@ -175,6 +193,7 @@ importers: typedoc: specifier: ^0.27.6 version: 0.27.6(typescript@5.7.2) + version: 0.27.6(typescript@5.7.2) zod: specifier: ^3.24.1 version: 3.24.1 @@ -191,9 +210,11 @@ importers: '@typescript-eslint/eslint-plugin': specifier: ^8.18.2 version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/parser': specifier: ^8.18.2 version: 8.19.0(eslint@8.57.1)(typescript@5.7.2) + version: 8.19.0(eslint@8.57.1)(typescript@5.7.2) eslint: specifier: ^8.56.0 version: 8.57.1 @@ -218,6 +239,7 @@ importers: typescript: specifier: ^5.7.2 version: 5.7.2 + version: 5.7.2 packages: @@ -233,6 +255,8 @@ packages: peerDependencies: zod: ^3.0.0 + '@ai-sdk/provider-utils@2.0.5': + resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} '@ai-sdk/provider-utils@2.0.5': resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} engines: {node: '>=18'} @@ -242,10 +266,14 @@ packages: zod: optional: true + '@ai-sdk/provider@1.0.3': + resolution: {integrity: sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==} '@ai-sdk/provider@1.0.3': resolution: {integrity: sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==} engines: {node: '>=18'} + '@ai-sdk/react@1.0.7': + resolution: {integrity: sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==} '@ai-sdk/react@1.0.7': resolution: {integrity: sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==} engines: {node: '>=18'} @@ -258,6 +286,8 @@ packages: zod: optional: true + '@ai-sdk/ui-utils@1.0.6': + resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} '@ai-sdk/ui-utils@1.0.6': resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} engines: {node: '>=18'} @@ -547,6 +577,14 @@ packages: resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.19.1': + resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.9.1': + resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -555,6 +593,10 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -571,6 +613,18 @@ packages: resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@9.17.0': + resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.5': + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.4': + resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} @@ -711,9 +765,20 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + '@irys/arweave@0.0.2': resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} + '@irys/bundles@0.0.1': + resolution: {integrity: sha512-yeQNzElERksFbfbNxJQsMkhtkI3+tNqIMZ/Wwxh76NVBmCnCP5huefOv7ET0MOO7TEQL+TqvKSqmFklYSvTyHw==} + '@irys/query@0.0.1': resolution: {integrity: sha512-7TCyR+Qn+F54IQQx5PlERgqNwgIQik8hY55iZl/silTHhCo1MI2pvx5BozqPUVCc8/KqRsc2nZd8Bc29XGUjRQ==} engines: {node: '>=16.10.0'} @@ -722,6 +787,10 @@ packages: resolution: {integrity: sha512-J8zCZDos2vFogSbroCJHZJq5gnPZEal01Iy3duXAotjIMgrI2ElDANiqEbaP1JAImR1jdUo1ChJnZB7MRLN9Hw==} engines: {node: '>=16.10.0'} + '@irys/query@0.0.9': + resolution: {integrity: sha512-uBIy8qeOQupUSBzR+1KU02JJXFp5Ue9l810PIbBF/ylUB8RTreUFkyyABZ7J3FUaOIXFYrT7WVFSJSzXM7P+8w==} + engines: {node: '>=16.10.0'} + '@irys/sdk@0.0.2': resolution: {integrity: sha512-un/e/CmTpgT042gDwCN3AtISrR9OYGMY6V+442pFmSWKrwrsDoIXZ8VlLiYKnrtTm+yquGhjfYy0LDqGWq41pA==} engines: {node: '>=16.10.0'} @@ -734,16 +803,6 @@ packages: deprecated: 'Arweave support is deprecated - We recommend migrating to the Irys datachain: https://migrate-to.irys.xyz/' hasBin: true - '@irys/arweave@0.0.2': - resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} - - '@irys/bundles@0.0.1': - resolution: {integrity: sha512-yeQNzElERksFbfbNxJQsMkhtkI3+tNqIMZ/Wwxh76NVBmCnCP5huefOv7ET0MOO7TEQL+TqvKSqmFklYSvTyHw==} - - '@irys/query@0.0.9': - resolution: {integrity: sha512-uBIy8qeOQupUSBzR+1KU02JJXFp5Ue9l810PIbBF/ylUB8RTreUFkyyABZ7J3FUaOIXFYrT7WVFSJSzXM7P+8w==} - engines: {node: '>=16.10.0'} - '@irys/upload-core@0.0.9': resolution: {integrity: sha512-Ha4pX8jgYBA3dg5KHDPk+Am0QO+SmvnmgCwKa6uiDXZKuVr0neSx4V1OAHoP+As+j7yYgfChdsdrvsNzZGGehA==} @@ -773,6 +832,8 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@langchain/core@0.3.27': + resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -783,6 +844,8 @@ packages: resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} engines: {node: '>=18'} + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} '@langchain/groq@0.1.2': resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} engines: {node: '>=18'} @@ -795,20 +858,27 @@ packages: peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' + '@langchain/langgraph-sdk@0.0.33': + resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} '@langchain/langgraph-sdk@0.0.33': resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} + '@langchain/langgraph@0.2.38': + resolution: {integrity: sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==} '@langchain/langgraph@0.2.38': resolution: {integrity: sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' + '@langchain/openai@0.3.16': + resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} '@langchain/openai@0.3.16': resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.26 <0.4.0' + '@langchain/core': '>=0.2.26 <0.4.0' '@langchain/textsplitters@0.1.0': resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} @@ -976,6 +1046,9 @@ packages: '@metaplex-foundation/umi-options@0.8.9': resolution: {integrity: sha512-jSQ61sZMPSAk/TXn8v8fPqtz3x8d0/blVZXLLbpVbo2/T5XobiI6/MfmlUosAjAUaQl6bHRF8aIIqZEFkJiy4A==} + '@metaplex-foundation/umi-options@1.0.0': + resolution: {integrity: sha512-DhfwrXTsvOrDwPGT5FpzC7VooLGMRjUSBV8W9xkp+WMxkzbNXeUV+bFmoTNx+0ynLhINp6Ij76W/Rl+4dIwU0w==} + '@metaplex-foundation/umi-program-repository@0.9.2': resolution: {integrity: sha512-g3+FPqXEmYsBa8eETtUE2gb2Oe3mqac0z3/Ur1TvAg5TtIy3mzRzOy/nza+sgzejnfcxcVg835rmpBaxpBnjDA==} peerDependencies: @@ -1118,6 +1191,10 @@ packages: '@noble/ed25519@1.7.3': resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + '@noble/hashes@1.1.3': resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} @@ -1592,6 +1669,8 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} + '@tensor-hq/tensor-common@8.3.1': + resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} '@tensor-hq/tensor-common@8.3.1': resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} @@ -1647,6 +1726,9 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -1683,9 +1765,13 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@18.19.69': + resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} '@types/node@18.19.69': resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} + '@types/node@20.17.13': + resolution: {integrity: sha512-RNf+4dEeV69PIvyp++4IKM2vnLXtmp/JovfeQm5P5+qpKb6wHoH7INywLdZ7z+gVX46kgBP/fwJJvZYaHxtdyw==} '@types/node@20.17.11': resolution: {integrity: sha512-Ept5glCK35R8yeyIeYlRIZtX6SLRyqMhOFTgj5SOkMpLTdw3SEHI9fHx60xaUZ+V1aJxQJODE+7/j5ocZydYTg==} @@ -1737,6 +1823,8 @@ packages: '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + '@typescript-eslint/eslint-plugin@8.19.0': + resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} '@typescript-eslint/eslint-plugin@8.19.0': resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1745,6 +1833,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/parser@8.19.0': + resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} '@typescript-eslint/parser@8.19.0': resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1752,10 +1842,14 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/scope-manager@8.19.0': + resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} '@typescript-eslint/scope-manager@8.19.0': resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/type-utils@8.19.0': + resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} '@typescript-eslint/type-utils@8.19.0': resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1763,16 +1857,22 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/types@8.19.0': + resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} '@typescript-eslint/types@8.19.0': resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.19.0': + resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} '@typescript-eslint/typescript-estree@8.19.0': resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/utils@8.19.0': + resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} '@typescript-eslint/utils@8.19.0': resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1780,6 +1880,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/visitor-keys@8.19.0': + resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} '@typescript-eslint/visitor-keys@8.19.0': resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1843,6 +1945,8 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} + ai@4.0.22: + resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} ai@4.0.22: resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} engines: {node: '>=18'} @@ -1886,18 +1990,6 @@ packages: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} engines: {node: '>=18'} - algo-msgpack-with-bigint@2.1.1: - resolution: {integrity: sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==} - engines: {node: '>= 10'} - - algosdk@1.24.1: - resolution: {integrity: sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==} - engines: {node: '>=14.0.0'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1935,9 +2027,6 @@ packages: arconnect@0.4.2: resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} - arconnect@0.4.2: - resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} - arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -2104,9 +2193,6 @@ packages: bs58@6.0.0: resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} - bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - buffer-layout@1.2.2: resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} engines: {node: '>=4.5'} @@ -2215,26 +2301,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - cipher-base@1.0.6: - resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} - engines: {node: '>= 0.10'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -2359,15 +2425,27 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + css-select@1.2.0: + resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} + + css-what@2.1.3: + resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} + csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + csv-parse@5.6.0: + resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} + csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + csv-stringify@6.5.2: + resolution: {integrity: sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==} + csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} @@ -2379,18 +2457,6 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - css-select@1.2.0: - resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} - - css-what@2.1.3: - resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} - - csv-parse@5.6.0: - resolution: {integrity: sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==} - - csv-stringify@6.5.2: - resolution: {integrity: sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==} - dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -2560,12 +2626,6 @@ packages: elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - elliptic@6.6.1: - resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} - emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -2586,12 +2646,12 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} @@ -2646,10 +2706,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2682,6 +2738,10 @@ packages: resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2710,6 +2770,20 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@9.17.0: + resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2791,10 +2865,6 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - express-prom-bundle@7.0.2: resolution: {integrity: sha512-ffFV4HGHvCKnkNJFqm42sYztRJE5mLgOj8MpGey1HOatuFhtcwXoBD2m5gca7ZbcyjkIf7lOH5ZdrhlrBf0sGw==} engines: {node: '>=18'} @@ -2819,6 +2889,8 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -2838,10 +2910,6 @@ packages: fastq@1.18.0: resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -2858,6 +2926,10 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2869,6 +2941,8 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + find-process@1.4.8: + resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} find-process@1.4.8: resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} hasBin: true @@ -2891,6 +2965,10 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} @@ -3027,6 +3105,11 @@ packages: engines: {node: 20 || >=22} hasBin: true + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -3039,6 +3122,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3085,10 +3172,6 @@ packages: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -3143,14 +3226,6 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -3160,6 +3235,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3196,10 +3275,6 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} @@ -3254,10 +3329,6 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -3333,6 +3404,10 @@ packages: resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} engines: {node: 20 || >=22} + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + jayson@4.1.3: resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} engines: {node: '>=8'} @@ -3359,9 +3434,6 @@ packages: js-sha512@0.8.0: resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} - js-sha512@0.8.0: - resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} - js-tiktoken@1.0.16: resolution: {integrity: sha512-nUVdO5k/M9llWpiaZlBBDdtmr6qWXwSD6fgaDu2zM8UP+OXxx9V37lFkI6w0/1IuaDx7WffZ37oYd9KvcWKElg==} @@ -3378,9 +3450,6 @@ packages: json-bigint@1.0.0: resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -3431,6 +3500,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + langchain@0.3.9: + resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} langchain@0.3.9: resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} engines: {node: '>=18'} @@ -3480,6 +3551,8 @@ packages: typeorm: optional: true + langsmith@0.2.14: + resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} langsmith@0.2.14: resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} peerDependencies: @@ -3583,10 +3656,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -3623,6 +3692,10 @@ packages: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -3646,9 +3719,6 @@ packages: md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - mdast-util-to-hast@13.2.0: resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} @@ -3707,10 +3777,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -3747,8 +3813,9 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} @@ -3796,9 +3863,6 @@ packages: multistream@4.1.0: resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} - multistream@4.1.0: - resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} - mustache@4.2.0: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true @@ -3806,12 +3870,6 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - nan@2.22.0: - resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3916,6 +3974,9 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + number-to-bn@1.7.0: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -3971,6 +4032,8 @@ packages: oniguruma-to-es@2.1.0: resolution: {integrity: sha512-Iq/949c5IueVC5gQR7OYXs0uHsDIePcgZFlVRIVGfQcWwbKG+nsyWfthswdytShlRdkZADY+bWSi+BRyUL81gA==} + openai@4.77.3: + resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} openai@4.77.3: resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} hasBin: true @@ -3995,14 +4058,6 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} @@ -4096,6 +4151,10 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -4291,10 +4350,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -4338,6 +4393,10 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true rimraf@6.0.1: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} @@ -4362,10 +4421,6 @@ packages: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -4396,16 +4451,6 @@ packages: resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} engines: {node: '>=18.0.0'} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - secp256k1@5.0.1: - resolution: {integrity: sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==} - engines: {node: '>=18.0.0'} - secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} @@ -4434,10 +4479,6 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4749,11 +4790,15 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} ts-api-utils@1.4.3: resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' + typescript: '>=4.2.0' ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -4814,10 +4859,6 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -4839,9 +4880,6 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x - typeforce@1.18.0: - resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} - typescript-collections@1.3.3: resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} @@ -4850,6 +4888,8 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -4880,9 +4920,6 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -5022,9 +5059,6 @@ packages: engines: {node: '>= 8'} hasBin: true - wif@2.0.6: - resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -5033,10 +5067,6 @@ packages: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5064,18 +5094,6 @@ packages: utf-8-validate: optional: true - ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -5166,9 +5184,12 @@ snapshots: '@3land/listings-sdk@0.0.7(@types/node@22.10.7)(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@irys/sdk': 0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@irys/sdk': 0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/beet': 0.7.2 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@project-serum/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -5201,12 +5222,16 @@ snapshots: '@ai-sdk/openai@1.0.11(zod@3.24.1)': dependencies: + '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) zod: 3.24.1 + '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': dependencies: + '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider': 1.0.3 eventsource-parser: 3.0.0 nanoid: 3.3.8 @@ -5214,12 +5239,16 @@ snapshots: optionalDependencies: zod: 3.24.1 + '@ai-sdk/provider@1.0.3': '@ai-sdk/provider@1.0.3': dependencies: json-schema: 0.4.0 + '@ai-sdk/react@1.0.7(react@19.0.0)(zod@3.24.1)': '@ai-sdk/react@1.0.7(react@19.0.0)(zod@3.24.1)': dependencies: + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) + '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) swr: 2.3.0(react@19.0.0) @@ -5228,8 +5257,11 @@ snapshots: react: 19.0.0 zod: 3.24.1 + '@ai-sdk/ui-utils@1.0.6(zod@3.24.1)': '@ai-sdk/ui-utils@1.0.6(zod@3.24.1)': dependencies: + '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) zod-to-json-schema: 3.24.1(zod@3.24.1) @@ -5279,11 +5311,13 @@ snapshots: bs58: 5.0.0 buffer: 6.0.3 + '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@noble/curves': 1.8.0 '@scure/base': 1.2.1 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) @@ -5300,6 +5334,7 @@ snapshots: - typescript - utf-8-validate + '@cfworker/json-schema@4.0.3': {} '@brokerloop/ttlcache@3.2.3': dependencies: '@soncodi/signal': 2.0.7 @@ -5315,6 +5350,7 @@ snapshots: '@cfworker/json-schema@4.1.0': {} + '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@cfworker/json-schema@4.0.3': {} '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': @@ -5326,7 +5362,7 @@ snapshots: '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 borsh: 0.7.0 @@ -5339,6 +5375,7 @@ snapshots: prom-client: 15.1.3 rimraf: 5.0.10 typedoc: 0.26.11(typescript@5.7.2) + typedoc: 0.26.11(typescript@5.7.2) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zstddec: 0.0.2 transitivePeerDependencies: @@ -5346,6 +5383,7 @@ snapshots: - encoding - fastestsmallesttextencoderdecoder - jiti + - jiti - supports-color - typescript - utf-8-validate @@ -5375,16 +5413,16 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.27.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -5470,18 +5508,19 @@ snapshots: bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -5490,13 +5529,13 @@ snapshots: '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 @@ -5727,8 +5766,25 @@ snapshots: eslint: 9.17.0 eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0)': + dependencies: + eslint: 9.17.0 + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.1': {} + '@eslint/config-array@0.19.1': + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.9.1': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/config-array@0.19.1': dependencies: '@eslint/object-schema': 2.1.5 @@ -5769,12 +5825,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/js@8.57.1': {} '@eslint/js@9.17.0': {} '@eslint/object-schema@2.1.5': {} + '@eslint/plugin-kit@0.2.4': + dependencies: + levn: 0.4.1 + + '@eslint/js@9.17.0': {} + + '@eslint/object-schema@2.1.5': {} + '@eslint/plugin-kit@0.2.4': dependencies: levn: 0.4.1 @@ -5787,47 +5865,6 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - '@ethersproject/abstract-provider@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - - '@ethersproject/abstract-signer@5.7.0': - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/address@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - - '@ethersproject/base64@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - - '@ethersproject/basex@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/bignumber@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - '@ethersproject/abi@5.7.0': dependencies: '@ethersproject/address': 5.7.0 @@ -6074,6 +6111,13 @@ snapshots: '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + '@grpc/grpc-js@1.12.5': dependencies: '@grpc/proto-loader': 0.7.13 @@ -6135,6 +6179,33 @@ snapshots: transitivePeerDependencies: - debug + '@irys/bundles@0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@irys/arweave': 0.0.2 + '@noble/ed25519': 1.7.3 + base64url: 3.0.1 + bs58: 4.0.1 + keccak: 3.0.4 + secp256k1: 5.0.1 + optionalDependencies: + '@randlabs/myalgo-connect': 1.4.2 + algosdk: 1.24.1(encoding@0.1.13) + arweave-stream-tx: 1.2.2(arweave@1.15.5) + multistream: 4.1.0 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + '@irys/query@0.0.1(debug@4.4.0)': dependencies: async-retry: 1.3.3 @@ -6149,6 +6220,14 @@ snapshots: transitivePeerDependencies: - debug + '@irys/query@0.0.9': + dependencies: + async-retry: 1.3.3 + axios: 1.7.9 + transitivePeerDependencies: + - debug + + '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': '@irys/sdk@0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/bignumber': 5.7.0 @@ -6193,12 +6272,12 @@ snapshots: '@irys/query': 0.0.8 '@near-js/crypto': 0.0.3 '@near-js/keystores-browser': 0.0.3 - '@near-js/providers': 0.0.4 + '@near-js/providers': 0.0.4(encoding@0.1.13) '@near-js/transactions': 0.1.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@supercharge/promise-pool': 3.2.0 - algosdk: 1.24.1 - arbundles: 0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + algosdk: 1.24.1(encoding@0.1.13) + arbundles: 0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) async-retry: 1.3.3 axios: 1.7.9 base64url: 3.0.1 @@ -6218,50 +6297,6 @@ snapshots: - encoding - utf-8-validate - '@irys/arweave@0.0.2': - dependencies: - asn1.js: 5.4.1 - async-retry: 1.3.3 - axios: 1.7.9 - base64-js: 1.5.1 - bignumber.js: 9.1.2 - transitivePeerDependencies: - - debug - - '@irys/bundles@0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@irys/arweave': 0.0.2 - '@noble/ed25519': 1.7.3 - base64url: 3.0.1 - bs58: 4.0.1 - keccak: 3.0.4 - secp256k1: 5.0.1 - optionalDependencies: - '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1(encoding@0.1.13) - arweave-stream-tx: 1.2.2(arweave@1.15.5) - multistream: 4.1.0 - tmp-promise: 3.0.3 - transitivePeerDependencies: - - arweave - - bufferutil - - debug - - encoding - - utf-8-validate - - '@irys/query@0.0.9': - dependencies: - async-retry: 1.3.3 - axios: 1.7.9 - transitivePeerDependencies: - - debug - '@irys/upload-core@0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -6371,6 +6406,7 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))': '@js-sdsl/ordered-map@4.4.2': {} '@jup-ag/api@6.0.38': {} @@ -6378,11 +6414,13 @@ snapshots: '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': dependencies: + '@cfworker/json-schema': 4.0.3 '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.16 + langsmith: 0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) langsmith: 0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) mustache: 4.2.0 @@ -6394,9 +6432,12 @@ snapshots: transitivePeerDependencies: - openai + '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': '@langchain/groq@0.1.3(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': dependencies: + '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) groq-sdk: 0.5.0 @@ -6408,13 +6449,16 @@ snapshots: transitivePeerDependencies: - encoding + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: + '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) uuid: 10.0.0 + '@langchain/langgraph-sdk@0.0.33': '@langchain/langgraph-sdk@0.0.33': dependencies: '@types/json-schema': 7.0.15 @@ -6422,9 +6466,13 @@ snapshots: p-retry: 4.6.2 uuid: 9.0.1 + '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': '@langchain/langgraph@0.2.39(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: + '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.33 '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/langgraph-sdk': 0.0.33 @@ -6434,12 +6482,15 @@ snapshots: uuid: 10.0.0 zod: 3.24.1 + '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': '@langchain/openai@0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': dependencies: + '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) js-tiktoken: 1.0.16 + openai: 4.77.3(encoding@0.1.13)(zod@3.24.1) openai: 4.77.3(zod@3.24.1) openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) zod: 3.24.1 @@ -6447,13 +6498,16 @@ snapshots: transitivePeerDependencies: - encoding + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': '@langchain/textsplitters@0.1.0(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: + '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) js-tiktoken: 1.0.16 + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@ledgerhq/devices@6.27.1': dependencies: '@ledgerhq/errors': 6.19.1 @@ -6526,7 +6580,7 @@ snapshots: '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 tweetnacl: 1.0.3 @@ -6758,6 +6812,7 @@ snapshots: '@metaplex-foundation/beet': 0.6.1 '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) @@ -6771,6 +6826,7 @@ snapshots: - typescript - utf-8-validate + '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 @@ -6793,6 +6849,7 @@ snapshots: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -6876,11 +6933,14 @@ snapshots: '@msgpack/msgpack': 3.0.0-beta2 '@noble/hashes': 1.7.0 + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 @@ -6944,6 +7004,7 @@ snapshots: - bufferutil - encoding - jiti + - jiti - supports-color - utf-8-validate @@ -6982,6 +7043,8 @@ snapshots: '@metaplex-foundation/umi-options@0.8.9': {} + '@metaplex-foundation/umi-options@1.0.0': {} + '@metaplex-foundation/umi-program-repository@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: '@metaplex-foundation/umi': 0.9.2 @@ -7195,7 +7258,7 @@ snapshots: '@near-js/crypto': 0.0.4 '@near-js/types': 0.0.4 - '@near-js/providers@0.0.4': + '@near-js/providers@0.0.4(encoding@0.1.13)': dependencies: '@near-js/transactions': 0.1.0 '@near-js/types': 0.0.3 @@ -7204,7 +7267,7 @@ snapshots: borsh: 0.7.0 http-errors: 1.8.1 optionalDependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -7349,6 +7412,7 @@ snapshots: '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) @@ -7356,6 +7420,7 @@ snapshots: decimal.js: 10.4.3 tiny-invariant: 1.3.3 + '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: @@ -7364,8 +7429,8 @@ snapshots: '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 @@ -7375,6 +7440,7 @@ snapshots: '@pkgr/core@0.1.1': {} + '@project-serum/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': '@project-serum/anchor@0.11.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@project-serum/borsh': 0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) @@ -7439,6 +7505,7 @@ snapshots: - encoding - utf-8-validate + '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': '@project-serum/borsh@0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7482,9 +7549,9 @@ snapshots: '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7509,28 +7576,6 @@ snapshots: transitivePeerDependencies: - axios - '@project-serum/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - utf-8-validate - '@pythnetwork/price-service-client@1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@pythnetwork/price-service-sdk': 1.8.0 @@ -7584,6 +7629,7 @@ snapshots: '@randlabs/communication-bridge': 1.0.1 optional: true + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@randlabs/communication-bridge@1.0.1': optional: true @@ -7596,6 +7642,7 @@ snapshots: '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) axios: 1.7.9 @@ -7741,18 +7788,24 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 + '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': dependencies: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': dependencies: '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 @@ -7767,12 +7820,17 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 + '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7781,8 +7839,13 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) @@ -7800,11 +7863,15 @@ snapshots: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 + '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7812,8 +7879,12 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.6.3)': dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 @@ -7831,13 +7902,18 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 + '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.7.2 + typescript: 5.7.2 '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: @@ -7847,12 +7923,17 @@ snapshots: fastestsmallesttextencoderdecoder: 1.0.22 typescript: 4.9.5 + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.7.2 typescript: 5.6.3 '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': @@ -7873,6 +7954,7 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) @@ -7881,6 +7963,12 @@ snapshots: '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7895,8 +7983,15 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) @@ -7922,11 +8017,13 @@ snapshots: chalk: 5.4.1 commander: 12.1.0 + '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': dependencies: chalk: 5.4.1 commander: 12.1.0 typescript: 5.7.2 + typescript: 5.7.2 '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7934,10 +8031,12 @@ snapshots: commander: 12.1.0 typescript: 4.9.5 + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 + typescript: 5.7.2 typescript: 5.6.3 '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': @@ -7951,6 +8050,7 @@ snapshots: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 + '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) @@ -7959,6 +8059,12 @@ snapshots: '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7973,8 +8079,15 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) @@ -8018,9 +8131,11 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-type-length-value': 0.1.0 '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -8028,9 +8143,11 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) @@ -8039,9 +8156,11 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -8074,8 +8193,11 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -8090,9 +8212,11 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -8141,6 +8265,9 @@ snapshots: '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -8194,6 +8321,7 @@ snapshots: - typescript - utf-8-validate + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: @@ -8202,7 +8330,7 @@ snapshots: '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -8212,6 +8340,7 @@ snapshots: - typescript - utf-8-validate + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 @@ -8247,7 +8376,7 @@ snapshots: '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -8257,6 +8386,7 @@ snapshots: - typescript - utf-8-validate + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: @@ -8266,8 +8396,8 @@ snapshots: '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -8277,6 +8407,7 @@ snapshots: - typescript - utf-8-validate + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: @@ -8301,8 +8432,8 @@ snapshots: '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -8405,7 +8536,7 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@noble/curves': 1.8.0 @@ -8419,7 +8550,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 9.0.4 superstruct: 2.0.2 transitivePeerDependencies: @@ -8486,8 +8617,10 @@ snapshots: '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 @@ -8551,6 +8684,7 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@tensor-hq/tensor-common@8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: @@ -8561,10 +8695,10 @@ snapshots: '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) axios: 0.28.1 big.js: 6.2.2 @@ -8583,6 +8717,7 @@ snapshots: - typescript - utf-8-validate + '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: @@ -8593,9 +8728,9 @@ snapshots: '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@tensor-hq/tensor-common': 8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 big.js: 6.2.2 bn.js: 5.2.1 @@ -8684,6 +8819,8 @@ snapshots: '@types/estree@1.0.6': {} + '@types/estree@1.0.6': {} + '@types/express-serve-static-core@4.19.6': dependencies: '@types/node': 22.10.7 @@ -8723,16 +8860,16 @@ snapshots: '@types/node': 22.10.7 form-data: 4.0.1 - '@types/node@10.12.18': {} - '@types/node@11.11.6': {} '@types/node@12.20.55': {} + '@types/node@18.19.69': '@types/node@18.19.69': dependencies: undici-types: 5.26.5 + '@types/node@20.17.13': '@types/node@20.17.11': dependencies: undici-types: 6.19.8 @@ -8788,6 +8925,7 @@ snapshots: dependencies: '@types/node': 22.10.7 + '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -8796,17 +8934,29 @@ snapshots: '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/parser': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.0 '@typescript-eslint/scope-manager': 8.19.0 '@typescript-eslint/types': 8.19.0 '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) @@ -8814,54 +8964,77 @@ snapshots: debug: 4.4.0 eslint: 8.57.1 typescript: 5.7.2 + typescript: 5.7.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@8.19.0': '@typescript-eslint/scope-manager@8.19.0': dependencies: '@typescript-eslint/types': 8.19.0 '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) debug: 4.4.0 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.19.0': {} + '@typescript-eslint/types@8.19.0': {} + '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': dependencies: + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 '@typescript-eslint/types': 8.19.0 '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0 fast-glob: 3.3.2 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@typescript-eslint/scope-manager': 8.19.0 '@typescript-eslint/types': 8.19.0 '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) eslint: 8.57.1 typescript: 5.7.2 + typescript: 5.7.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/visitor-keys@8.19.0': '@typescript-eslint/visitor-keys@8.19.0': dependencies: + '@typescript-eslint/types': 8.19.0 '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 @@ -8926,8 +9099,13 @@ snapshots: dependencies: humanize-ms: 1.2.1 + ai@4.0.22(react@19.0.0)(zod@3.24.1): ai@4.0.22(react@19.0.0)(zod@3.24.1): dependencies: + '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) + '@ai-sdk/react': 1.0.7(react@19.0.0)(zod@3.24.1) + '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/react': 1.0.7(react@19.0.0)(zod@3.24.1) @@ -8946,8 +9124,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - algo-msgpack-with-bigint@2.1.1: - optional: true + algo-msgpack-with-bigint@2.1.1: {} algosdk@1.24.1(encoding@0.1.13): dependencies: @@ -9031,6 +9208,7 @@ snapshots: ansicolors@0.3.2: {} + arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): aptos@1.8.5(debug@4.4.0): dependencies: '@noble/hashes': 1.1.3 @@ -9089,7 +9267,7 @@ snapshots: secp256k1: 5.0.1 optionalDependencies: '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1 + algosdk: 1.24.1(encoding@0.1.13) arweave-stream-tx: 1.2.2(arweave@1.15.5) multistream: 4.1.0 tmp-promise: 3.0.3 @@ -9111,27 +9289,6 @@ snapshots: argparse@2.0.1: {} - arweave-stream-tx@1.2.2(arweave@1.15.5): - dependencies: - arweave: 1.15.5 - exponential-backoff: 3.1.1 - optional: true - - arweave@1.15.5: - dependencies: - arconnect: 0.4.2 - asn1.js: 5.4.1 - base64-js: 1.5.1 - bignumber.js: 9.1.2 - optional: true - - asn1.js@5.4.1: - dependencies: - bn.js: 4.12.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 - array-flatten@1.1.1: {} arweave-stream-tx@1.2.2(arweave@1.15.5): @@ -9165,10 +9322,6 @@ snapshots: assertion-error@2.0.1: {} - async-retry@1.3.3: - dependencies: - retry: 0.13.1 - async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -9246,10 +9399,6 @@ snapshots: bech32@1.1.4: {} - base64url@3.0.1: {} - - bech32@1.1.4: {} - big-integer@1.6.52: {} big.js@6.2.2: {} @@ -9268,22 +9417,6 @@ snapshots: bip32-path@0.4.2: {} - bip32@2.0.6: - dependencies: - '@types/node': 10.12.18 - bs58check: 2.1.2 - create-hash: 1.2.0 - create-hmac: 1.1.7 - tiny-secp256k1: 1.1.7 - typeforce: 1.18.0 - wif: 2.0.6 - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - bip39-light@1.0.7: dependencies: create-hash: 1.2.0 @@ -9312,13 +9445,8 @@ snapshots: bn.js@4.12.1: {} - bn.js@4.12.1: {} - bn.js@5.2.1: {} - boolbase@1.0.0: - optional: true - bn@1.0.5: {} body-parser@1.20.3: @@ -9338,6 +9466,9 @@ snapshots: transitivePeerDependencies: - supports-color + boolbase@1.0.0: + optional: true + borsh@0.7.0: dependencies: bn.js: 5.2.1 @@ -9363,8 +9494,6 @@ snapshots: brorand@1.1.0: {} - brorand@1.1.0: {} - bs58@4.0.1: dependencies: base-x: 3.0.10 @@ -9377,12 +9506,6 @@ snapshots: dependencies: base-x: 5.0.0 - bs58check@2.1.2: - dependencies: - bs58: 4.0.1 - create-hash: 1.2.0 - safe-buffer: 5.2.1 - buffer-layout@1.2.2: {} buffer-reverse@1.0.1: {} @@ -9466,8 +9589,6 @@ snapshots: chardet@0.7.0: {} - chardet@0.7.0: {} - check-error@2.1.1: {} check-more-types@2.24.0: {} @@ -9494,21 +9615,6 @@ snapshots: lodash.some: 4.6.0 optional: true - cipher-base@1.0.6: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.9.2: {} - - cli-width@3.0.0: {} - - clone@1.0.4: {} - cipher-base@1.0.6: dependencies: inherits: 2.0.4 @@ -9573,23 +9679,6 @@ snapshots: concat-map@0.0.1: {} - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.6 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.6 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -9658,16 +9747,16 @@ snapshots: css-what@2.1.3: optional: true - csv-parse@5.6.0: {} - - csv-stringify@6.5.2: {} - csv-generate@3.4.3: {} csv-parse@4.16.3: {} + csv-parse@5.6.0: {} + csv-stringify@5.6.5: {} + csv-stringify@6.5.2: {} + csv@5.5.3: dependencies: csv-generate: 3.4.3 @@ -9860,22 +9949,22 @@ snapshots: emoji-regex@9.2.2: {} + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 optional: true - entities@1.1.2: - optional: true - - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - end-of-stream@1.4.4: dependencies: once: 1.4.0 + entities@1.1.2: + optional: true + entities@4.5.0: {} environment@1.1.0: {} @@ -9904,8 +9993,6 @@ snapshots: dependencies: es6-promise: 4.2.8 - escape-string-regexp@1.0.5: {} - esbuild@0.23.1: optionalDependencies: '@esbuild/aix-ppc64': 0.23.1 @@ -9964,6 +10051,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.0: {} @@ -10056,6 +10148,51 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 4.2.0 + eslint@9.17.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.1 + '@eslint/core': 0.9.1 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.17.0 + '@eslint/plugin-kit': 0.2.4 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + espree@9.6.1: dependencies: acorn: 8.14.0 @@ -10160,12 +10297,6 @@ snapshots: exponential-backoff@3.1.1: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - express-prom-bundle@7.0.2(prom-client@15.1.3): dependencies: '@types/express': 4.17.21 @@ -10224,6 +10355,7 @@ snapshots: fast-diff@1.3.0: {} + fast-glob@3.3.2: fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10261,6 +10393,10 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-uri-to-path@1.0.0: {} fill-range@7.1.1: @@ -10279,33 +10415,46 @@ snapshots: transitivePeerDependencies: - supports-color + find-process@1.4.8: find-process@1.4.8: dependencies: + chalk: 5.4.1 chalk: 5.4.1 commander: 12.1.0 debug: 4.4.0 eslint: 9.17.0 glob: 11.0.0 + debug: 4.4.0 + eslint: 9.17.0 + glob: 11.0.0 loglevel: 1.9.2 rimraf: 6.0.1 transitivePeerDependencies: - jiti - supports-color + rimraf: 6.0.1 + transitivePeerDependencies: + - jiti + - supports-color find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + flash-sdk@2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): find@0.3.0: dependencies: traverse-chain: 0.1.0 flash-sdk@2.24.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): dependencies: - '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@types/node': 20.17.13 '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/node': 20.17.11 @@ -10317,6 +10466,7 @@ snapshots: jsbi: 4.3.0 node-fetch: 3.3.2 rimraf: 5.0.10 + ts-node: 10.9.2(@types/node@20.17.13)(typescript@5.7.2) ts-node: 10.9.2(@types/node@20.17.11)(typescript@5.7.2) tweetnacl: 1.0.3 transitivePeerDependencies: @@ -10340,6 +10490,11 @@ snapshots: flatted: 3.3.2 keyv: 4.5.4 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + flatted@3.3.2: {} follow-redirects@1.15.9: {} @@ -10494,6 +10649,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -10509,6 +10673,8 @@ snapshots: globals@14.0.0: {} + globals@14.0.0: {} + gopd@1.2.0: {} got@11.8.6: @@ -10557,6 +10723,7 @@ snapshots: groq-sdk@0.5.0(encoding@0.1.13): dependencies: + '@types/node': 18.19.69 '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 @@ -10632,6 +10799,16 @@ snapshots: html-void-elements@3.0.0: {} + htmlparser2@3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + http-cache-semantics@4.1.1: {} http-errors@1.8.1: @@ -10669,6 +10846,11 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -10819,6 +11001,10 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -10932,14 +11118,19 @@ snapshots: dependencies: json-buffer: 3.0.1 + langchain@0.3.9(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(cheerio@0.22.0)(encoding@0.1.13)(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)): langchain@0.3.9(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))))(axios@1.7.9)(openai@4.77.3(zod@3.24.1)): dependencies: + '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) js-tiktoken: 1.0.16 js-yaml: 4.1.0 jsonpointer: 5.0.1 + langsmith: 0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) openapi-types: 12.1.3 p-retry: 4.6.2 @@ -10948,12 +11139,14 @@ snapshots: zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: + '@langchain/groq': 0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) '@langchain/groq': 0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) axios: 1.7.9 transitivePeerDependencies: - encoding - openai + langsmith@0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)): langsmith@0.2.14(openai@4.77.3(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 @@ -10963,6 +11156,7 @@ snapshots: semver: 7.6.3 uuid: 10.0.0 optionalDependencies: + openai: 4.77.3(encoding@0.1.13)(zod@3.24.1) openai: 4.77.3(zod@3.24.1) lazy-ass@1.6.0: {} @@ -11100,6 +11294,8 @@ snapshots: lru-cache@11.0.2: {} + lru-cache@11.0.2: {} + lunr@2.3.9: {} make-error@1.3.6: {} @@ -11205,6 +11401,10 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 @@ -11298,6 +11498,8 @@ snapshots: node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 node-fetch@3.3.2: dependencies: @@ -11334,6 +11536,11 @@ snapshots: dependencies: path-key: 4.0.0 + nth-check@1.0.2: + dependencies: + boolbase: 1.0.0 + optional: true + number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 @@ -11399,8 +11606,10 @@ snapshots: regex: 5.1.1 regex-recursion: 5.1.1 + openai@4.77.3(encoding@0.1.13)(zod@3.24.1): openai@4.77.3(zod@3.24.1): dependencies: + '@types/node': 18.19.69 '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 @@ -11440,20 +11649,6 @@ snapshots: p-cancelable@2.1.1: {} - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - os-tmpdir@1.0.2: {} - p-finally@1.0.0: {} p-limit@3.1.0: @@ -11538,6 +11733,11 @@ snapshots: lru-cache: 11.0.2 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} pathval@2.0.0: {} @@ -11742,11 +11942,6 @@ snapshots: resolve-from@4.0.0: {} - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - resolve-pkg-maps@1.0.0: {} resolve@1.22.10: @@ -11785,6 +11980,7 @@ snapshots: dependencies: glob: 10.4.5 + rimraf@6.0.1: rimraf@6.0.1: dependencies: glob: 11.0.0 @@ -11792,8 +11988,8 @@ snapshots: ripemd160@2.0.2: dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 + glob: 11.0.0 + package-json-from-dist: 1.0.1 ripemd160@2.0.2: dependencies: @@ -11834,8 +12030,6 @@ snapshots: run-async@2.4.1: {} - run-async@2.4.1: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -11862,16 +12056,6 @@ snapshots: scrypt-js@3.0.1: {} - secp256k1@5.0.1: - dependencies: - elliptic: 6.6.1 - node-addon-api: 5.1.0 - node-gyp-build: 4.8.4 - - safer-buffer@2.1.2: {} - - scrypt-js@3.0.1: {} - secp256k1@5.0.1: dependencies: elliptic: 6.6.1 @@ -11922,11 +12106,6 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - setprototypeof@1.2.0: {} sha.js@2.4.11: @@ -11951,8 +12130,6 @@ snapshots: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 - signal-exit@3.0.7: {} - side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -12257,9 +12434,11 @@ snapshots: trim-lines@3.0.1: {} + ts-api-utils@1.4.3(typescript@5.7.2): ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 + typescript: 5.7.2 ts-log@2.2.7: {} @@ -12275,6 +12454,7 @@ snapshots: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.13 '@types/node': 20.17.11 acorn: 8.14.0 acorn-walk: 8.3.4 @@ -12283,6 +12463,7 @@ snapshots: diff: 4.0.2 make-error: 1.3.6 typescript: 5.7.2 + typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -12300,6 +12481,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 + typescript: 5.7.2 typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -12357,8 +12539,6 @@ snapshots: type-fest@0.21.3: {} - type-fest@0.21.3: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -12368,6 +12548,7 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typedoc@0.26.11(typescript@5.7.2): typedoc@0.26.11(typescript@5.7.2): dependencies: lunr: 2.3.9 @@ -12377,6 +12558,7 @@ snapshots: typescript: 5.7.2 yaml: 2.7.0 + typedoc@0.27.6(typescript@5.7.2): typedoc@0.27.6(typescript@5.7.2): dependencies: '@gerrit0/mini-shiki': 1.27.2 @@ -12384,14 +12566,14 @@ snapshots: markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.7.2 + typescript: 5.7.2 yaml: 2.7.0 - typeforce@1.18.0: {} - typescript-collections@1.3.3: {} typescript@4.9.5: {} + typescript@5.7.2: {} typescript@5.6.3: {} typescript@5.7.2: {} @@ -12413,8 +12595,6 @@ snapshots: undici-types@6.19.8: {} - undici-types@6.19.8: {} - undici-types@6.20.0: {} unicode-trie@2.0.0: @@ -12575,18 +12755,8 @@ snapshots: dependencies: isexe: 2.0.0 - wif@2.0.6: - dependencies: - bs58check: 2.1.2 - word-wrap@1.2.5: {} - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 diff --git a/src/actions/fluxbeam/bridgeToken.ts b/src/actions/fluxbeam/bridgeToken.ts index 4325f6c5..9513b3ef 100644 --- a/src/actions/fluxbeam/bridgeToken.ts +++ b/src/actions/fluxbeam/bridgeToken.ts @@ -1,11 +1,10 @@ -import { PublicKey } from "@solana/web3.js"; import { Action } from "../../types/action"; import { SolanaAgentKit } from "../../agent"; import { z } from "zod"; import { Chain, fluxbeamBridgeTokens, -} from "../../tools/fluxbeam_bridge_tokens"; +} from "../../tools/fluxbeam/fluxbeam_bridge_tokens"; const bridgeTokensAction: Action = { name: "BRIDGE_TOKENS_ACTION", diff --git a/src/actions/fluxbeam/createV1Token.ts b/src/actions/fluxbeam/createV1Token.ts index 9dd21b23..b7049991 100644 --- a/src/actions/fluxbeam/createV1Token.ts +++ b/src/actions/fluxbeam/createV1Token.ts @@ -1,11 +1,11 @@ import { z } from "zod"; import { SolanaAgentKit } from "../../agent"; -import { fluxbeamCreateMintV1 } from "../../tools"; +import { fluxbeamCreateTokenV1 } from "../../tools"; import { Action } from "../../types"; -// Create Mint V1 Action -const createMintV1Action: Action = { - name: "CREATE_MINT_V1_ACTION", +// Create Token V1 Action +const createTokenV1Action: Action = { + name: "CREATE_TOKEN_V1_ACTION", similes: ["create token v1", "mint new token v1", "initialize token v1"], description: "Creates a new SPL token with metadata (v1)", examples: [ @@ -35,7 +35,7 @@ const createMintV1Action: Action = { uri: z.string().optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamCreateMintV1( + const signature = await fluxbeamCreateTokenV1( agent, input.name, input.symbol, @@ -51,4 +51,4 @@ const createMintV1Action: Action = { }, }; -export default createMintV1Action; +export default createTokenV1Action; diff --git a/src/actions/fluxbeam/createV2Token.ts b/src/actions/fluxbeam/createV2Token.ts index cd3a797c..e45b8638 100644 --- a/src/actions/fluxbeam/createV2Token.ts +++ b/src/actions/fluxbeam/createV2Token.ts @@ -1,7 +1,7 @@ import { Keypair, PublicKey } from "@solana/web3.js"; import { z } from "zod"; import { SolanaAgentKit } from "../../agent"; -import { ExtensionConfig, fluxbeamCreateMintV2 } from "../../tools"; +import { ExtensionConfig, fluxbeamCreateTokenV2 } from "../../tools"; import { Action } from "../../types"; // Create Mint V2 Action (continued) @@ -30,7 +30,7 @@ const createMintV2Action: Action = { status: "success", signature: "bYx4...", }, - explanation: "Create new token-2022 with extensions", + explanation: "Create new token-2022 token with extensions", }, ], ], @@ -52,7 +52,7 @@ const createMintV2Action: Action = { imageUri: z.string().optional(), }), handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamCreateMintV2( + const signature = await fluxbeamCreateTokenV2( agent, new PublicKey(input.owner), input.tokenMint, diff --git a/src/actions/fluxbeam/revokeMintAuthority.ts b/src/actions/fluxbeam/revokeMintAuthority.ts index 27f54817..f8ab680f 100644 --- a/src/actions/fluxbeam/revokeMintAuthority.ts +++ b/src/actions/fluxbeam/revokeMintAuthority.ts @@ -2,7 +2,7 @@ import { AuthorityType } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import { z } from "zod"; import { SolanaAgentKit } from "../../agent"; -import { fluxbeamRevokeAuthority } from "../../tools/fluxbeam_token_minting_controls"; +import { fluxbeamRevokeAuthority } from "../../tools/fluxbeam/fluxbeam_token_minting_controls"; import { Action } from "../../types"; // Revoke Authority Action diff --git a/src/actions/fluxbeam/setMintAuthority.ts b/src/actions/fluxbeam/setMintAuthority.ts index 1b047604..37cf9360 100644 --- a/src/actions/fluxbeam/setMintAuthority.ts +++ b/src/actions/fluxbeam/setMintAuthority.ts @@ -2,7 +2,7 @@ import { AuthorityType } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import { z } from "zod"; import { SolanaAgentKit } from "../../agent"; -import { fluxbeamSetAuthority } from "../../tools/fluxbeam_token_minting_controls"; +import { fluxbeamSetAuthority } from "../../tools/fluxbeam/fluxbeam_token_minting_controls"; import { Action } from "../../types"; // Set Authority Action diff --git a/src/actions/fluxbeam/unwrapSol.ts b/src/actions/fluxbeam/unwrapSol.ts index 4ba3d017..bc8d9be8 100644 --- a/src/actions/fluxbeam/unwrapSol.ts +++ b/src/actions/fluxbeam/unwrapSol.ts @@ -21,7 +21,7 @@ const unwrapSolAction: Action = { ], ], schema: z.object({}), - handler: async (agent: SolanaAgentKit, input: Record) => { + handler: async (agent: SolanaAgentKit) => { const signature = await fluxbeamUnwrapSOL(agent); return { status: "success", diff --git a/src/agent/index.ts b/src/agent/index.ts index 73a8596f..061ecfaf 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -1,4 +1,4 @@ -import { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js"; +import { Connection, Keypair, PublicKey } from "@solana/web3.js"; import { BN } from "@coral-xyz/anchor"; import bs58 from "bs58"; import Decimal from "decimal.js"; @@ -7,9 +7,7 @@ import { CreateSingleOptions, StoreInitOptions, } from "@3land/listings-sdk/dist/types/implementation/implementationTypes"; -import { DEFAULT_OPTIONS } from "../constants"; import { DEFAULT_OPTIONS, TOKENS } from "../constants"; -import { Config, FluxbeamServerResponse, TokenCheck } from "../types"; import { deploy_collection, deploy_token, @@ -142,8 +140,8 @@ import { fluxbeamGetClaimWithheldTokensToMint, fluxbeamGetClaimWitheldTokensFromMint, fluxbeamGetClaimWitheldTokens, - fluxbeamCreateMintV2, - fluxbeamCreateMintV1, + fluxbeamCreateTokenV2, + fluxbeamCreateTokenV1, fluxbeamTransferSol, fluxbeamTransferSplToken, fluxbeamUnwrapSOL, @@ -174,18 +172,16 @@ import { SearchAssetsRpcInput, } from "@metaplex-foundation/digital-asset-standard-api"; import { AlloraInference, AlloraTopic } from "@alloralabs/allora-sdk"; -import { - AuthorityType, - ExtensionType, - TOKEN_2022_PROGRAM_ID, -} from "@solana/spl-token"; +import { AuthorityType } from "@solana/spl-token"; import { fluxbeamMintToAccount, fluxbeamRevokeAuthority, fluxbeamSetAuthority, -} from "../tools/fluxbeam_token_minting_controls"; -import { KeypairSigner } from "@metaplex-foundation/umi"; -import { Chain, fluxbeamBridgeTokens } from "../tools/fluxbeam_bridge_tokens"; +} from "../tools/fluxbeam/fluxbeam_token_minting_controls"; +import { + Chain, + fluxbeamBridgeTokens, +} from "../tools/fluxbeam/fluxbeam_bridge_tokens"; /** * Main class for interacting with Solana blockchain @@ -1298,7 +1294,7 @@ export class SolanaAgentKit { return fluxbeamTransferSol(agent, dstOwner, amount); } - async fluxbeamCreateMintV1( + async fluxbeamCreateTokenV1( agent: SolanaAgentKit, name: string, symbol: string, @@ -1307,7 +1303,7 @@ export class SolanaAgentKit { imagePath?: string, initialSupply?: number, ): Promise { - return fluxbeamCreateMintV1( + return fluxbeamCreateTokenV1( agent, name, symbol, @@ -1318,7 +1314,7 @@ export class SolanaAgentKit { ); } - async fluxbeamCreateMintV2( + async fluxbeamCreateTokenV2( agent: SolanaAgentKit, owner: PublicKey, tokenMintKeypair: Keypair, @@ -1336,7 +1332,7 @@ export class SolanaAgentKit { imagePath?: string, imageUri?: string, ): Promise { - return fluxbeamCreateMintV2( + return fluxbeamCreateTokenV2( agent, owner, tokenMintKeypair, diff --git a/src/langchain/fluxbeam/bridge_token.ts b/src/langchain/fluxbeam/bridge_token.ts index c283cf76..6976829e 100644 --- a/src/langchain/fluxbeam/bridge_token.ts +++ b/src/langchain/fluxbeam/bridge_token.ts @@ -1,6 +1,6 @@ import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -import { Chain } from "../../tools/fluxbeam_bridge_tokens"; +import { Chain } from "../../tools/fluxbeam/fluxbeam_bridge_tokens"; export class SolanaFluxbeamBridgeTokensTool extends Tool { name = "solana_bridge_tokens"; diff --git a/src/langchain/fluxbeam/burn_token.ts b/src/langchain/fluxbeam/burn_token.ts index a49dae86..bd94cddf 100644 --- a/src/langchain/fluxbeam/burn_token.ts +++ b/src/langchain/fluxbeam/burn_token.ts @@ -1,4 +1,3 @@ -import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; @@ -44,4 +43,4 @@ export class SolanaFluxbeamBurnTokenTool extends Tool { }); } } -} \ No newline at end of file +} diff --git a/src/langchain/fluxbeam/create_mint_v1.ts b/src/langchain/fluxbeam/create_token_v1.ts similarity index 77% rename from src/langchain/fluxbeam/create_mint_v1.ts rename to src/langchain/fluxbeam/create_token_v1.ts index b1816e0e..1fa904ab 100644 --- a/src/langchain/fluxbeam/create_mint_v1.ts +++ b/src/langchain/fluxbeam/create_token_v1.ts @@ -1,9 +1,9 @@ import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -export class SolanaFluxbeamCreateMintV1Tool extends Tool { - name = "solana_create_mint_v1"; - description = `This tool creates a mint on the Solana blockchain. +export class SolanaFluxbeamCreateTokenV1Tool extends Tool { + name = "solana_create_token_v1"; + description = `This tool creates a legacy SPL token on the Solana blockchain. Inputs (input is a JSON string): name: string, token name (required) @@ -22,7 +22,7 @@ export class SolanaFluxbeamCreateMintV1Tool extends Tool { try { const parsedInput = JSON.parse(input); - const signature = await this.solanaKit.fluxbeamCreateMintV1( + const signature = await this.solanaKit.fluxbeamCreateTokenV1( this.solanaKit, parsedInput.name, parsedInput.symbol, @@ -34,7 +34,7 @@ export class SolanaFluxbeamCreateMintV1Tool extends Tool { return JSON.stringify({ status: "success", - message: "Mint created successfully", + message: "Token created successfully", transaction: signature, }); } catch (error: any) { diff --git a/src/langchain/fluxbeam/create_mint_v2.ts b/src/langchain/fluxbeam/create_token_v2.ts similarity index 86% rename from src/langchain/fluxbeam/create_mint_v2.ts rename to src/langchain/fluxbeam/create_token_v2.ts index 48cbb6b1..3eed9b40 100644 --- a/src/langchain/fluxbeam/create_mint_v2.ts +++ b/src/langchain/fluxbeam/create_token_v2.ts @@ -2,9 +2,9 @@ import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -export class SolanaFluxbeamCreateMintV2Tool extends Tool { - name = "solana_create_mint_v2"; - description = `This tool creates a mint on the Solana blockchain (version 2). +export class SolanaFluxbeamCreateTokenV2Tool extends Tool { + name = "solana_create_token_v2"; + description = `This tool creates a token2022 token on the Solana blockchain. Inputs (input is a JSON string): owner: string, e.g., "OwnerPublicKey" (required) @@ -32,7 +32,7 @@ export class SolanaFluxbeamCreateMintV2Tool extends Tool { try { const parsedInput = JSON.parse(input); - const signature = await this.solanaKit.fluxbeamCreateMintV2( + const signature = await this.solanaKit.fluxbeamCreateTokenV2( this.solanaKit, new PublicKey(parsedInput.owner), parsedInput.tokenMintKeypair, @@ -52,7 +52,7 @@ export class SolanaFluxbeamCreateMintV2Tool extends Tool { return JSON.stringify({ status: "success", - message: "Mint created successfully", + message: "Token created successfully", transaction: signature, }); } catch (error: any) { diff --git a/src/langchain/fluxbeam/index.ts b/src/langchain/fluxbeam/index.ts new file mode 100644 index 00000000..3c585d7c --- /dev/null +++ b/src/langchain/fluxbeam/index.ts @@ -0,0 +1,13 @@ +export * from "./bridge_token"; +export * from "./burn_token"; +export * from "./create_token_v1"; +export * from "./create_token_v2"; +export * from "./create_pool"; +export * from "./fee_management"; +export * from "./swap"; +export * from "./token_minting_controls"; +export * from "./transfer"; +export * from "./update_v1_token_metadata"; +export * from "./update_v2_token_metadata"; +export * from "./withheld_amounts_tracking"; +export * from "./wrap_and_unwrap_sol"; diff --git a/src/langchain/fluxbeam/transfer.ts b/src/langchain/fluxbeam/transfer.ts index 35395cfe..41806784 100644 --- a/src/langchain/fluxbeam/transfer.ts +++ b/src/langchain/fluxbeam/transfer.ts @@ -1,4 +1,3 @@ -import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; diff --git a/src/langchain/fluxbeam/update_v1_token_metadata.ts b/src/langchain/fluxbeam/update_v1_token_metadata.ts index 21de81bf..185313d8 100644 --- a/src/langchain/fluxbeam/update_v1_token_metadata.ts +++ b/src/langchain/fluxbeam/update_v1_token_metadata.ts @@ -2,9 +2,9 @@ import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -export class SolanaFluxbeamUpdateMetadataTool extends Tool { +export class SolanaFluxbeamUpdateV1MetadataTool extends Tool { name = "solana_update_metadata"; - description = `This tool updates metadata for a token account. + description = `This tool updates metadata for a v1 (legacy) token account. Inputs (input is a JSON string): mint: string, e.g., "TokenMintPublicKey" (required) diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 90e33af6..c7992025 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -32,7 +32,7 @@ export * from "./mayan"; export * from "./allora"; export * from "./solutiofi"; export * from "./switchboard"; -export * from "./fluxbeam" +export * from "./fluxbeam"; import type { SolanaAgentKit } from "../agent"; import { SolanaBalanceTool, @@ -147,6 +147,23 @@ import { SolanaMergeTokensTool, SolanaSpreadTokenTool, SolanaSwitchboardSimulateFeed, + SolanaFluxbeamBridgeTokensTool, + SolanaFluxbeamBurnTokenTool, + SolanaFluxbeamCreatePoolTool, + SolanaFluxbeamSubmitFeeClaimTool, + SolanaFluxbeamSubmitFeePaymentTool, + SolanaFluxbeamUpdateV1MetadataTool, + SolanaFluxbeamUpdateV2MetadataTool, + SolanaFluxbeamMintToAccountTool, + SolanaFluxbeamSetAuthorityTool, + SolanaFluxbeamRevokeAuthorityTool, + SolanaFluxbeamCreateTokenV1Tool, + SolanaFluxbeamCreateTokenV2Tool, + SolanaFluxbeamGetClaimWithheldTokensFromMintTool, + SolanaFluxbeamGetClaimWithheldTokensToMintTool, + SolanaFluxbeamGetClaimWithheldTokensTool, + SolanaFluxbeamWrapSOLTool, + SolanaFluxbeamUnwrapSOLTool, } from "./index"; export function createSolanaTools(solanaKit: SolanaAgentKit) { @@ -269,13 +286,13 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaFluxbeamCreatePoolTool(solanaKit), new SolanaFluxbeamSubmitFeeClaimTool(solanaKit), new SolanaFluxbeamSubmitFeePaymentTool(solanaKit), - new SolanaFluxbeamUpdateMetadataTool(solanaKit), + new SolanaFluxbeamUpdateV1MetadataTool(solanaKit), new SolanaFluxbeamUpdateV2MetadataTool(solanaKit), new SolanaFluxbeamMintToAccountTool(solanaKit), new SolanaFluxbeamSetAuthorityTool(solanaKit), new SolanaFluxbeamRevokeAuthorityTool(solanaKit), - new SolanaFluxbeamCreateMintV1Tool(solanaKit), - new SolanaFluxbeamCreateMintV2Tool(solanaKit), + new SolanaFluxbeamCreateTokenV1Tool(solanaKit), + new SolanaFluxbeamCreateTokenV2Tool(solanaKit), new SolanaFluxbeamGetClaimWithheldTokensFromMintTool(solanaKit), new SolanaFluxbeamGetClaimWithheldTokensToMintTool(solanaKit), new SolanaFluxbeamGetClaimWithheldTokensTool(solanaKit), diff --git a/src/tools/fluxbeam_bridge_tokens.ts b/src/tools/fluxbeam/fluxbeam_bridge_tokens.ts similarity index 95% rename from src/tools/fluxbeam_bridge_tokens.ts rename to src/tools/fluxbeam/fluxbeam_bridge_tokens.ts index 961e698e..012936e4 100644 --- a/src/tools/fluxbeam_bridge_tokens.ts +++ b/src/tools/fluxbeam/fluxbeam_bridge_tokens.ts @@ -1,11 +1,6 @@ /* eslint-disable no-console */ -import { - fetchQuote, - swapFromSolana, - Quote, - SolanaTransactionSigner, -} from "@mayanfinance/swap-sdk"; -import { SolanaAgentKit } from "../agent"; +import { fetchQuote, swapFromSolana } from "@mayanfinance/swap-sdk"; +import { SolanaAgentKit } from "../../agent"; import { Transaction, VersionedTransaction } from "@solana/web3.js"; export enum Chain { diff --git a/src/tools/fluxbeam_burn_token.ts b/src/tools/fluxbeam/fluxbeam_burn_token.ts similarity index 89% rename from src/tools/fluxbeam_burn_token.ts rename to src/tools/fluxbeam/fluxbeam_burn_token.ts index 06f693a7..0580531a 100644 --- a/src/tools/fluxbeam_burn_token.ts +++ b/src/tools/fluxbeam/fluxbeam_burn_token.ts @@ -1,20 +1,16 @@ -import { - PublicKey, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; +import { PublicKey, Transaction } from "@solana/web3.js"; import { getAssociatedTokenPDA, sendTransaction, signTransaction, -} from "../utils/FluxbeamClient"; +} from "../../utils/FluxbeamClient"; import { createBurnCheckedInstruction, getMint, TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, } from "@solana/spl-token"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; /** * Burns a specified amount of tokens diff --git a/src/tools/fluxbeam_create_pool.ts b/src/tools/fluxbeam/fluxbeam_create_pool.ts similarity index 95% rename from src/tools/fluxbeam_create_pool.ts rename to src/tools/fluxbeam/fluxbeam_create_pool.ts index f532c3ff..f7270c2f 100644 --- a/src/tools/fluxbeam_create_pool.ts +++ b/src/tools/fluxbeam/fluxbeam_create_pool.ts @@ -1,6 +1,6 @@ import { VersionedTransaction, PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../index"; -import { FLUXBEAM_BASE_URI, TOKENS } from "../constants"; +import { SolanaAgentKit } from "../../index"; +import { FLUXBEAM_BASE_URI, TOKENS } from "../../constants"; import { getMint } from "@solana/spl-token"; /** diff --git a/src/tools/fluxbeam_fee_management.ts b/src/tools/fluxbeam/fluxbeam_fee_management.ts similarity index 94% rename from src/tools/fluxbeam_fee_management.ts rename to src/tools/fluxbeam/fluxbeam_fee_management.ts index 27dba9c1..d919ee4a 100644 --- a/src/tools/fluxbeam_fee_management.ts +++ b/src/tools/fluxbeam/fluxbeam_fee_management.ts @@ -10,9 +10,9 @@ import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token"; -import { SolanaAgentKit } from "../agent"; -import { MEMO_PROGRAM_ID } from "../constants"; -import { signTransaction, sendTransaction } from "../utils/FluxbeamClient"; +import { SolanaAgentKit } from "../../agent"; +import { MEMO_PROGRAM_ID } from "../../constants"; +import { signTransaction, sendTransaction } from "../../utils/FluxbeamClient"; const FEE_ACCOUNT = new PublicKey( "FEE1M4bRtos7Yi8cni9s6zpxDfZTSsARwrhqMJMLLKhv", diff --git a/src/tools/fluxbeam_liquidity_management.ts b/src/tools/fluxbeam/fluxbeam_liquidity_management.ts similarity index 100% rename from src/tools/fluxbeam_liquidity_management.ts rename to src/tools/fluxbeam/fluxbeam_liquidity_management.ts diff --git a/src/tools/fluxbeam_lock_token.ts b/src/tools/fluxbeam/fluxbeam_lock_token.ts similarity index 100% rename from src/tools/fluxbeam_lock_token.ts rename to src/tools/fluxbeam/fluxbeam_lock_token.ts diff --git a/src/tools/fluxbeam_metadata_management.ts b/src/tools/fluxbeam/fluxbeam_metadata_management.ts similarity index 98% rename from src/tools/fluxbeam_metadata_management.ts rename to src/tools/fluxbeam/fluxbeam_metadata_management.ts index 66ca321e..2d9b0873 100644 --- a/src/tools/fluxbeam_metadata_management.ts +++ b/src/tools/fluxbeam/fluxbeam_metadata_management.ts @@ -2,7 +2,7 @@ import { fetchMetadataFromSeeds, updateV1, } from "@metaplex-foundation/mpl-token-metadata"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; import { diff --git a/src/tools/fluxbeam_token_airdrop.ts b/src/tools/fluxbeam/fluxbeam_token_airdrop.ts similarity index 100% rename from src/tools/fluxbeam_token_airdrop.ts rename to src/tools/fluxbeam/fluxbeam_token_airdrop.ts diff --git a/src/tools/fluxbeam_token_minting_controls.ts b/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts similarity index 97% rename from src/tools/fluxbeam_token_minting_controls.ts rename to src/tools/fluxbeam/fluxbeam_token_minting_controls.ts index c119ea18..824e6736 100644 --- a/src/tools/fluxbeam_token_minting_controls.ts +++ b/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts @@ -13,8 +13,8 @@ import { Transaction, Keypair, } from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent"; -import { sendTransaction, signTransaction } from "../utils/FluxbeamClient"; +import { SolanaAgentKit } from "../../agent"; +import { sendTransaction, signTransaction } from "../../utils/FluxbeamClient"; /** * Mints tokens to the associated token account of a given owner. diff --git a/src/tools/fluxbeam_token_swap.ts b/src/tools/fluxbeam/fluxbeam_token_swap.ts similarity index 85% rename from src/tools/fluxbeam_token_swap.ts rename to src/tools/fluxbeam/fluxbeam_token_swap.ts index 66ebf043..55044f98 100644 --- a/src/tools/fluxbeam_token_swap.ts +++ b/src/tools/fluxbeam/fluxbeam_token_swap.ts @@ -1,9 +1,7 @@ import { VersionedTransaction, PublicKey } from "@solana/web3.js"; -import { Quote, SolanaAgentKit, TransformedResponse } from "../index"; -import { TOKENS, DEFAULT_OPTIONS } from "../constants"; +import { Quote, SolanaAgentKit } from "../../index"; +import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; import { getMint } from "@solana/spl-token"; -import { Console } from "console"; -import { sendTransaction, signTransaction } from "../utils/FluxbeamClient"; function transformResponse(response: { quote: Quote }): Quote { // Destructure the input object to get the quote object @@ -84,12 +82,10 @@ export async function fluxBeamSwap( }), }) ).json(); - console.log(`this is the transaction response ${response.transaction}`); // Deserialize transaction const swapTransactionBuf = Buffer.from(response.transaction, "base64"); const transaction = VersionedTransaction.deserialize(swapTransactionBuf); - console.log("Transaction", transaction); // Sign and send transaction transaction.sign([agent.wallet]); @@ -100,11 +96,6 @@ export async function fluxBeamSwap( skipPreflight: true, }, ); - // const txn = await signTransaction(agent, response.transaction); - - // const resp = await sendTransaction(txn); - - // return response.signature; return signature; } catch (error: any) { diff --git a/src/tools/fluxbeam_transfer.ts b/src/tools/fluxbeam/fluxbeam_transfer.ts similarity index 97% rename from src/tools/fluxbeam_transfer.ts rename to src/tools/fluxbeam/fluxbeam_transfer.ts index 9d79122e..2a96cc5b 100644 --- a/src/tools/fluxbeam_transfer.ts +++ b/src/tools/fluxbeam/fluxbeam_transfer.ts @@ -1,4 +1,4 @@ -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; import { TOKEN_2022_PROGRAM_ID, TOKEN_PROGRAM_ID, @@ -10,7 +10,7 @@ import { getAssociatedTokenPDA, sendTransaction, signTransaction, -} from "../utils/FluxbeamClient"; +} from "../../utils/FluxbeamClient"; import { LAMPORTS_PER_SOL, PublicKey, diff --git a/src/tools/fluxbeam_v1_token_creation.ts b/src/tools/fluxbeam/fluxbeam_v1_token_creation.ts similarity index 94% rename from src/tools/fluxbeam_v1_token_creation.ts rename to src/tools/fluxbeam/fluxbeam_v1_token_creation.ts index 1cee9cda..6b64d294 100644 --- a/src/tools/fluxbeam_v1_token_creation.ts +++ b/src/tools/fluxbeam/fluxbeam_v1_token_creation.ts @@ -3,7 +3,7 @@ import { mintV1, TokenStandard, } from "@metaplex-foundation/mpl-token-metadata"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; import { fromWeb3JsKeypair, fromWeb3JsPublicKey, @@ -13,7 +13,7 @@ import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; import * as bs58 from "bs58"; -import { uploadImage } from "../utils/FluxbeamClient"; +import { uploadImage } from "../../utils/FluxbeamClient"; /** * Create a new SPL V1 token * @param agent SolanaAgentKit instance @@ -25,7 +25,7 @@ import { uploadImage } from "../utils/FluxbeamClient"; * @param uri URI for the image (optional) * @returns transaction signature */ -export async function fluxbeamCreateMintV1( +export async function fluxbeamCreateTokenV1( agent: SolanaAgentKit, name: string, symbol: string, diff --git a/src/tools/fluxbeam_v2_token_creation.ts b/src/tools/fluxbeam/fluxbeam_v2_token_creation.ts similarity index 95% rename from src/tools/fluxbeam_v2_token_creation.ts rename to src/tools/fluxbeam/fluxbeam_v2_token_creation.ts index 55b7d80a..e673cf1e 100644 --- a/src/tools/fluxbeam_v2_token_creation.ts +++ b/src/tools/fluxbeam/fluxbeam_v2_token_creation.ts @@ -27,15 +27,15 @@ import { Transaction, TransactionInstruction, } from "@solana/web3.js"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; import { pack } from "@solana/spl-token-metadata"; import { DataV2 } from "@metaplex-foundation/mpl-token-metadata"; -import { FEE_ACCOUNT } from "../constants"; +import { FEE_ACCOUNT } from "../../constants"; import { sendTransaction, signTransaction, uploadImage, -} from "../utils/FluxbeamClient"; +} from "../../utils/FluxbeamClient"; import { none } from "@metaplex-foundation/umi-options"; import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; import { keypairIdentity } from "@metaplex-foundation/umi"; @@ -96,7 +96,7 @@ export class CreateMintV1 { export class CreateMintV2 extends CreateMintV1 { extensions: ExtensionType[] = []; - extensionConfig = {}; + extensionConfig: object = {}; metadata: any; @@ -121,7 +121,7 @@ export class CreateMintV2 extends CreateMintV1 { addExtension(ext: ExtensionType, config: object = {}) { this.extensions.push(ext); - //@ts-ignore + // @ts-expect-error: TypeScript doesn't recognize 'ExtensionType' as a valid index for 'extensionConfig' this.extensionConfig[ext] = config; } } @@ -134,8 +134,8 @@ async function getCreateToken2022MintTransaction( priorityFee: number, ) { const mintLen = getMintLen(config.extensions); - console.log(`this is the mintLen ${mintLen}`); - console.log(`this is the metadataLength ${config.metadataLength()}`); + // console.log(`this is the mintLen ${mintLen}`); + // console.log(`this is the metadataLength ${config.metadataLength()}`); const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( mintLen + config.metadataLength(), ); @@ -180,10 +180,10 @@ async function getCreateToken2022MintTransaction( ); let isDefaultFrozen = false; config.extensions.forEach((ext: string | number) => { - //@ts-ignore + // @ts-expect-error: TypeScript doesn't recognize 'ExtensionType' as a valid index for 'extensionConfig' const cfg = config.extensionConfig[ext]; // eslint-disable-next-line no-console - console.log(`${ext}`, cfg); + // console.log(`${ext}`, cfg); switch (ext) { case ExtensionType.TransferFeeConfig: @@ -358,7 +358,7 @@ async function getCreateToken2022MintTransaction( return transaction; } -export async function fluxbeamCreateMintV2( +export async function fluxbeamCreateTokenV2( agent: SolanaAgentKit, owner: PublicKey, tokenMint: Keypair, @@ -454,7 +454,7 @@ export async function fluxbeamCreateMintV2( if (description || metadataUri) { config.setMetadata({ name, - mint: new PublicKey("11111111111111111111111111111111"), + mint: new PublicKey("11111111111111111111111111111111"), //default public key symbol, uri: metadataUri, additionalMetadata: description ? [] : [], // { key: "description", value: description } will fix description diff --git a/src/tools/fluxbeam_withheld_amounts_tracking.ts b/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts similarity index 97% rename from src/tools/fluxbeam_withheld_amounts_tracking.ts rename to src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts index f43cbd2d..21ce32a4 100644 --- a/src/tools/fluxbeam_withheld_amounts_tracking.ts +++ b/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts @@ -1,5 +1,4 @@ -import { web3 } from "@coral-xyz/anchor"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; import { createAssociatedTokenAccountInstruction, createHarvestWithheldTokensToMintInstruction, @@ -13,7 +12,7 @@ import { getAssociatedTokenPDA, sendTransaction, signTransaction, -} from "../utils/FluxbeamClient"; +} from "../../utils/FluxbeamClient"; import { PublicKey, Transaction } from "@solana/web3.js"; /** diff --git a/src/tools/fluxbeam_wrap_and_unwrap_sol.ts b/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts similarity index 95% rename from src/tools/fluxbeam_wrap_and_unwrap_sol.ts rename to src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts index 4150575c..b5f01838 100644 --- a/src/tools/fluxbeam_wrap_and_unwrap_sol.ts +++ b/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts @@ -4,7 +4,7 @@ import { createSyncNativeInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token"; -import { SolanaAgentKit } from "../agent"; +import { SolanaAgentKit } from "../../agent"; import { LAMPORTS_PER_SOL, PublicKey, @@ -12,8 +12,8 @@ import { Transaction, TransactionInstruction, } from "@solana/web3.js"; -import { TOKENS } from "../constants"; -import { sendTransaction, signTransaction } from "../utils/FluxbeamClient"; +import { TOKENS } from "../../constants"; +import { sendTransaction, signTransaction } from "../../utils/FluxbeamClient"; export async function getWrapSOLInstructions( agent: SolanaAgentKit, diff --git a/src/tools/fluxbeam/index.ts b/src/tools/fluxbeam/index.ts new file mode 100644 index 00000000..a0637663 --- /dev/null +++ b/src/tools/fluxbeam/index.ts @@ -0,0 +1,15 @@ +export * from "./fluxbeam_bridge_tokens"; +export * from "./fluxbeam_burn_token"; +export * from "./fluxbeam_create_pool"; +export * from "./fluxbeam_fee_management"; +// export * from "./fluxbeam_liquidity_management"; +// export * from "./fluxbeam_lock_token"; +export * from "./fluxbeam_metadata_management"; +// export * from "./fluxbeam_token_airdrop"; +export * from "./fluxbeam_token_minting_controls"; +export * from "./fluxbeam_token_swap"; +export * from "./fluxbeam_transfer"; +export * from "./fluxbeam_v1_token_creation"; +export * from "./fluxbeam_v2_token_creation"; +export * from "./fluxbeam_withheld_amounts_tracking"; +export * from "./fluxbeam_wrap_and_unwrap_sol"; diff --git a/src/tools/index.ts b/src/tools/index.ts index 5e9928a4..48d4fde2 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -31,15 +31,15 @@ export * from "./mayan"; export * from "./allora"; export * from "./solutiofi"; export * from "./switchboard"; -export * from "./fluxbeam_burn_token"; -export * from "./fluxbeam_create_pool"; -export * from "./fluxbeam_fee_management"; +export * from "./fluxbeam/fluxbeam_burn_token"; +export * from "./fluxbeam/fluxbeam_create_pool"; +export * from "./fluxbeam/fluxbeam_fee_management"; // export * from "./fluxbeam_liquidity_management"; // export * from "./fluxbeam_lock_token"; -export * from "./fluxbeam_metadata_management"; -export * from "./fluxbeam_v2_token_creation"; -export * from "./fluxbeam_token_swap"; -export * from "./fluxbeam_transfer"; -export * from "./fluxbeam_v1_token_creation"; -export * from "./fluxbeam_withheld_amounts_tracking"; -export * from "./fluxbeam_wrap_and_unwrap_sol"; +export * from "./fluxbeam/fluxbeam_metadata_management"; +export * from "./fluxbeam/fluxbeam_v2_token_creation"; +export * from "./fluxbeam/fluxbeam_token_swap"; +export * from "./fluxbeam/fluxbeam_transfer"; +export * from "./fluxbeam/fluxbeam_v1_token_creation"; +export * from "./fluxbeam/fluxbeam_withheld_amounts_tracking"; +export * from "./fluxbeam/fluxbeam_wrap_and_unwrap_sol"; diff --git a/src/utils/FluxbeamClient.ts b/src/utils/FluxbeamClient.ts index cecf5b34..ab7a9a71 100644 --- a/src/utils/FluxbeamClient.ts +++ b/src/utils/FluxbeamClient.ts @@ -35,7 +35,9 @@ export async function getAssociatedTokenPDA( export async function accountExists(agent: SolanaAgentKit, account: PublicKey) { const acc = await agent.connection .getAccountInfo(account, "confirmed") - .catch((e) => {}); + .catch((e) => { + throw Error(`an error occurred: ${e}`); + }); return !!acc; } @@ -88,6 +90,7 @@ export async function sendTransaction( const resp = await response.json(); + // eslint-disable-next-line no-console console.log(`https://solscan.io/tx/${resp.signature}`); return resp; From 1f887cd1f24b49559e055c7263fd1d8846892f94 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Tue, 21 Jan 2025 12:00:40 +0100 Subject: [PATCH 04/11] feat:update langchain classes and actions --- pnpm-lock.yaml | 1093 ++++------------- src/actions/fluxbeam/bridgeToken.ts | 6 +- src/actions/fluxbeam/burnToken.ts | 6 +- src/actions/fluxbeam/createPool.ts | 6 +- src/actions/fluxbeam/createV1Token.ts | 6 +- src/actions/fluxbeam/createV2Token.ts | 8 +- .../fluxbeam/fluxbeamSubmitFeeClaim.ts | 8 +- .../fluxbeam/fluxbeamSubmitFeePayment.ts | 87 -- src/actions/fluxbeam/fluxbeamTransfer.ts | 6 +- src/actions/fluxbeam/mintToken.ts | 99 ++ src/actions/fluxbeam/revokeMintAuthority.ts | 6 +- src/actions/fluxbeam/setMintAuthority.ts | 6 +- src/actions/fluxbeam/unwrapSol.ts | 20 +- src/actions/fluxbeam/updateV1TokenMetadata.ts | 56 + src/actions/fluxbeam/updateV2TokenMetadata.ts | 78 ++ src/actions/fluxbeam/wrapSol.ts | 13 +- src/actions/index.ts | 28 + src/agent/index.ts | 98 +- src/constants/index.ts | 1 + src/idls/fluxbeam.ts | 0 src/langchain/fluxbeam/airdrop_tokens.ts | 0 src/langchain/fluxbeam/bridge_token.ts | 1 - src/langchain/fluxbeam/burn_token.ts | 1 - src/langchain/fluxbeam/create_pool.ts | 1 - src/langchain/fluxbeam/create_token_v1.ts | 1 - src/langchain/fluxbeam/create_token_v2.ts | 1 - src/langchain/fluxbeam/fee_management.ts | 38 - src/langchain/fluxbeam/swap.ts | 1 - .../fluxbeam/token_minting_controls.ts | 3 - src/langchain/fluxbeam/transfer.ts | 2 - .../fluxbeam/update_v1_token_metadata.ts | 14 +- .../fluxbeam/update_v2_token_metadata.ts | 20 +- .../fluxbeam/withheld_amounts_tracking.ts | 3 - src/langchain/fluxbeam/wrap_and_unwrap_sol.ts | 36 +- src/langchain/index.ts | 10 +- src/langchain/solana/balance.ts | 1 + src/langchain/solana/balance_other.ts | 2 +- src/tools/fluxbeam/fluxbeam_fee_management.ts | 57 +- .../fluxbeam/fluxbeam_metadata_management.ts | 195 ++- src/tools/fluxbeam/fluxbeam_token_airdrop.ts | 342 ++++++ .../fluxbeam_token_minting_controls.ts | 2 +- .../fluxbeam_withheld_amounts_tracking.ts | 2 +- .../fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts | 53 +- src/tools/fluxbeam/index.ts | 3 +- src/utils/FluxbeamClient.ts | 22 + test/addresses.csv | 3 + test/fluxbeam_bridge_tokens.test.ts | 2 +- test/fluxbeam_create_token_v1.test.ts | 6 +- test/fluxbeam_create_token_v2.test.ts | 6 +- test/fluxbeam_fee_management.test.ts | 28 + test/fluxbeam_metadata_management.test.ts | 42 +- test/fluxbeam_token_airdrop.test.ts | 47 + test/fluxbeam_token_minting_controls.test.ts | 3 +- test/fluxbeam_token_swap.test.ts | 2 +- ...fluxbeam_withheld_amounts_tracking.test.ts | 45 + test/fluxbeam_wrap_and_unwrap_sol.test.ts | 5 +- 56 files changed, 1357 insertions(+), 1274 deletions(-) delete mode 100644 src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts create mode 100644 src/idls/fluxbeam.ts create mode 100644 src/langchain/fluxbeam/airdrop_tokens.ts create mode 100644 test/addresses.csv create mode 100644 test/fluxbeam_fee_management.test.ts create mode 100644 test/fluxbeam_token_airdrop.test.ts create mode 100644 test/fluxbeam_withheld_amounts_tracking.test.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 354d4dc5..985eba51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,15 +19,13 @@ importers: version: 0.1.0 '@bonfida/spl-name-service': specifier: ^3.0.7 - version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@cks-systems/manifest-sdk': specifier: 0.1.59 version: 0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - version: 0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@coral-xyz/anchor': specifier: '0.29' - version: 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + version: 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@drift-labs/sdk': specifier: 2.108.0-beta.4 version: 2.108.0-beta.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -37,23 +35,18 @@ importers: '@langchain/core': specifier: ^0.3.26 version: 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - version: 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/groq': specifier: ^0.1.2 version: 0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - version: 0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/langgraph': specifier: ^0.2.36 version: 0.2.38(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) - version: 0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.16 version: 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - version: 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@lightprotocol/compressed-token': specifier: ^0.17.1 version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': specifier: ^0.17.1 version: 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -105,28 +98,24 @@ importers: '@orca-so/common-sdk': specifier: 0.6.4 version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@orca-so/whirlpools-sdk': specifier: ^0.13.12 version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@project-serum/anchor': specifier: ^0.26.0 version: 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@pythnetwork/hermes-client': specifier: ^1.3.0 version: 1.3.0(axios@1.7.9) '@raydium-io/raydium-sdk-v2': specifier: 0.1.95-alpha version: 0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - version: 0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': specifier: ^0.4.9 version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token-metadata': specifier: ^0.1.6 version: 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': specifier: ^1.98.0 version: 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -143,7 +132,6 @@ importers: '@tensor-oss/tensorswap-sdk': specifier: ^4.5.0 version: 4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - version: 4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@tiplink/api': specifier: ^0.3.1 version: 0.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) @@ -153,7 +141,6 @@ importers: ai: specifier: ^4.0.22 version: 4.0.22(react@19.0.0)(zod@3.24.1) - version: 4.0.22(react@19.0.0)(zod@3.24.1) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -175,14 +162,12 @@ importers: flash-sdk: specifier: ^2.24.3 version: 2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - version: 2.24.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) form-data: specifier: ^4.0.1 version: 4.0.1 langchain: specifier: ^0.3.8 version: 0.3.9(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(cheerio@0.22.0)(encoding@0.1.13)(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - version: 0.3.9(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))))(axios@1.7.9)(openai@4.77.3(zod@3.24.1)) openai: specifier: ^4.77.0 version: 4.77.3(encoding@0.1.13)(zod@3.24.1) @@ -193,7 +178,6 @@ importers: typedoc: specifier: ^0.27.6 version: 0.27.6(typescript@5.7.2) - version: 0.27.6(typescript@5.7.2) zod: specifier: ^3.24.1 version: 3.24.1 @@ -210,11 +194,9 @@ importers: '@typescript-eslint/eslint-plugin': specifier: ^8.18.2 version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) - version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/parser': specifier: ^8.18.2 version: 8.19.0(eslint@8.57.1)(typescript@5.7.2) - version: 8.19.0(eslint@8.57.1)(typescript@5.7.2) eslint: specifier: ^8.56.0 version: 8.57.1 @@ -239,7 +221,6 @@ importers: typescript: specifier: ^5.7.2 version: 5.7.2 - version: 5.7.2 packages: @@ -255,8 +236,6 @@ packages: peerDependencies: zod: ^3.0.0 - '@ai-sdk/provider-utils@2.0.5': - resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} '@ai-sdk/provider-utils@2.0.5': resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} engines: {node: '>=18'} @@ -266,14 +245,10 @@ packages: zod: optional: true - '@ai-sdk/provider@1.0.3': - resolution: {integrity: sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==} '@ai-sdk/provider@1.0.3': resolution: {integrity: sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==} engines: {node: '>=18'} - '@ai-sdk/react@1.0.7': - resolution: {integrity: sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==} '@ai-sdk/react@1.0.7': resolution: {integrity: sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==} engines: {node: '>=18'} @@ -286,8 +261,6 @@ packages: zod: optional: true - '@ai-sdk/ui-utils@1.0.6': - resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} '@ai-sdk/ui-utils@1.0.6': resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} engines: {node: '>=18'} @@ -330,16 +303,6 @@ packages: '@brokerloop/ttlcache@3.2.3': resolution: {integrity: sha512-kZWoyJGBYTv1cL5oHBYEixlJysJBf2RVnub3gbclD+dwaW9aKubbHzbZ9q1q6bONosxaOqMsoBorOrZKzBDiqg==} - '@cfworker/json-schema@4.0.3': - resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} - '@cfworker/json-schema@4.1.0': - resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} - '@bonfida/token-vesting@0.0.9': - resolution: {integrity: sha512-EzTRdsbiK4ugEybe6Av3iNTjG1rZOvFD2cSa0jBO+czfw45Pxscu0JPKaVOkII9pIImfPNZTh0U9k67jgbd3GQ==} - peerDependencies: - '@solana/spl-token': 0.3.7 - '@solana/web3.js': ^1.73.2 - '@cfworker/json-schema@4.0.3': resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} @@ -577,14 +540,6 @@ packages: resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-array@0.19.1': - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.9.1': - resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -593,10 +548,6 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -613,18 +564,6 @@ packages: resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.5': - resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.4': - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} @@ -765,14 +704,6 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} - engines: {node: '>=18.18'} - '@irys/arweave@0.0.2': resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} @@ -832,8 +763,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@langchain/core@0.3.27': - resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} @@ -844,8 +773,6 @@ packages: resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} engines: {node: '>=18'} - '@langchain/groq@0.1.2': - resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} '@langchain/groq@0.1.2': resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} engines: {node: '>=18'} @@ -858,27 +785,20 @@ packages: peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' - '@langchain/langgraph-sdk@0.0.33': - resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} '@langchain/langgraph-sdk@0.0.33': resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} - '@langchain/langgraph@0.2.38': - resolution: {integrity: sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==} '@langchain/langgraph@0.2.38': resolution: {integrity: sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' - '@langchain/openai@0.3.16': - resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} '@langchain/openai@0.3.16': resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.26 <0.4.0' - '@langchain/core': '>=0.2.26 <0.4.0' '@langchain/textsplitters@0.1.0': resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} @@ -1191,6 +1111,9 @@ packages: '@noble/ed25519@1.7.3': resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + '@noble/hashes@1.1.3': + resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} + '@noble/hashes@1.3.2': resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} @@ -1669,8 +1592,6 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@tensor-hq/tensor-common@8.3.1': - resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} '@tensor-hq/tensor-common@8.3.1': resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} @@ -1726,9 +1647,6 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -1765,8 +1683,6 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.69': - resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} '@types/node@18.19.69': resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} @@ -1823,8 +1739,6 @@ packages: '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - '@typescript-eslint/eslint-plugin@8.19.0': - resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} '@typescript-eslint/eslint-plugin@8.19.0': resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1833,8 +1747,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.19.0': - resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} '@typescript-eslint/parser@8.19.0': resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1842,14 +1754,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.19.0': - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} '@typescript-eslint/scope-manager@8.19.0': resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.0': - resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} '@typescript-eslint/type-utils@8.19.0': resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1857,22 +1765,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.19.0': - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} '@typescript-eslint/types@8.19.0': resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.0': - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} '@typescript-eslint/typescript-estree@8.19.0': resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.19.0': - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} '@typescript-eslint/utils@8.19.0': resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1880,8 +1782,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.19.0': - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} '@typescript-eslint/visitor-keys@8.19.0': resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1945,8 +1845,6 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - ai@4.0.22: - resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} ai@4.0.22: resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} engines: {node: '>=18'} @@ -2293,6 +2191,9 @@ packages: resolution: {integrity: sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==} engines: {node: '>= 0.6'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + cipher-base@1.0.6: resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} engines: {node: '>= 0.10'} @@ -2738,10 +2639,6 @@ packages: resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2770,20 +2667,6 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2889,8 +2772,6 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -2926,10 +2807,6 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2941,8 +2818,6 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-process@1.4.8: - resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} find-process@1.4.8: resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} hasBin: true @@ -2954,8 +2829,8 @@ packages: find@0.3.0: resolution: {integrity: sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==} - flash-sdk@2.24.3: - resolution: {integrity: sha512-3JdmHZksBgcRlCXVVFZEV64NGKxVHURHoHAMc3+Ev1BdN0Re2S44wxTaQmO6EIvwPYscVG0BPbp6GibpEuMdsw==} + flash-sdk@2.25.3: + resolution: {integrity: sha512-0yKh40xgjNKjG/iOnnQqdEiXjLTUdaRVzLTDigcHvyDG5Kc9P5VCqqRdjxZ7XNdEFyZPvlspVD9p7ixS97hOUA==} flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} @@ -2965,10 +2840,6 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} @@ -3105,11 +2976,6 @@ packages: engines: {node: 20 || >=22} hasBin: true - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} - engines: {node: 20 || >=22} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -3122,10 +2988,6 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3404,10 +3266,6 @@ packages: resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} engines: {node: 20 || >=22} - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} - engines: {node: 20 || >=22} - jayson@4.1.3: resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} engines: {node: '>=8'} @@ -3500,8 +3358,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.9: - resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} langchain@0.3.9: resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} engines: {node: '>=18'} @@ -3551,8 +3407,6 @@ packages: typeorm: optional: true - langsmith@0.2.14: - resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} langsmith@0.2.14: resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} peerDependencies: @@ -3604,21 +3458,18 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - lodash.assignin@4.2.0: resolution: {integrity: sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==} lodash.bind@4.2.1: resolution: {integrity: sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -3631,6 +3482,9 @@ packages: lodash.foreach@4.5.0: resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + lodash.map@4.6.0: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} @@ -3692,10 +3546,6 @@ packages: resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} engines: {node: 20 || >=22} - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -3817,10 +3667,6 @@ packages: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3899,8 +3745,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.71.0: - resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} + node-abi@3.72.0: + resolution: {integrity: sha512-a28z9xAQXvDh40lVCknWCP5zYTZt6Av8HZqZ63U5OWxTcP20e3oOIy8yHkYfctQM2adR8ru1GxWCkS0gS+WYKA==} engines: {node: '>=10'} node-addon-api@2.0.2: @@ -3912,9 +3758,6 @@ packages: node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} @@ -4032,8 +3875,6 @@ packages: oniguruma-to-es@2.1.0: resolution: {integrity: sha512-Iq/949c5IueVC5gQR7OYXs0uHsDIePcgZFlVRIVGfQcWwbKG+nsyWfthswdytShlRdkZADY+bWSi+BRyUL81gA==} - openai@4.77.3: - resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} openai@4.77.3: resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} hasBin: true @@ -4151,10 +3992,6 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -4397,13 +4234,6 @@ packages: resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} engines: {node: 20 || >=22} hasBin: true - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -4790,15 +4620,11 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} ts-api-utils@1.4.3: resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' - typescript: '>=4.2.0' ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -4888,8 +4714,6 @@ packages: engines: {node: '>=4.2.0'} hasBin: true - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -5222,16 +5046,12 @@ snapshots: '@ai-sdk/openai@1.0.11(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.3 - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) zod: 3.24.1 - '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider': 1.0.3 eventsource-parser: 3.0.0 nanoid: 3.3.8 @@ -5239,16 +5059,12 @@ snapshots: optionalDependencies: zod: 3.24.1 - '@ai-sdk/provider@1.0.3': '@ai-sdk/provider@1.0.3': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.0.7(react@19.0.0)(zod@3.24.1)': '@ai-sdk/react@1.0.7(react@19.0.0)(zod@3.24.1)': dependencies: - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) swr: 2.3.0(react@19.0.0) @@ -5257,11 +5073,8 @@ snapshots: react: 19.0.0 zod: 3.24.1 - '@ai-sdk/ui-utils@1.0.6(zod@3.24.1)': '@ai-sdk/ui-utils@1.0.6(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.3 - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) zod-to-json-schema: 3.24.1(zod@3.24.1) @@ -5312,15 +5125,11 @@ snapshots: buffer: 6.0.3 '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@noble/curves': 1.8.0 '@scure/base': 1.2.1 '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) borsh: 2.0.0 buffer: 6.0.3 @@ -5334,33 +5143,16 @@ snapshots: - typescript - utf-8-validate - '@cfworker/json-schema@4.0.3': {} '@brokerloop/ttlcache@3.2.3': dependencies: '@soncodi/signal': 2.0.7 - '@bonfida/token-vesting@0.0.9(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - bip32: 2.0.6 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - tweetnacl: 1.0.3 - '@cfworker/json-schema@4.1.0': {} - - '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@cfworker/json-schema@4.0.3': {} - '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -5375,7 +5167,6 @@ snapshots: prom-client: 15.1.3 rimraf: 5.0.10 typedoc: 0.26.11(typescript@5.7.2) - typedoc: 0.26.11(typescript@5.7.2) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zstddec: 0.0.2 transitivePeerDependencies: @@ -5383,14 +5174,12 @@ snapshots: - encoding - fastestsmallesttextencoderdecoder - jiti - - jiti - supports-color - typescript - utf-8-validate '@coral-xyz/anchor-errors@0.30.1': {} - '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) @@ -5435,16 +5224,16 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.28.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -5457,7 +5246,6 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) @@ -5479,17 +5267,17 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor-errors': 0.30.1 - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0 + cross-fetch: 3.2.0(encoding@0.1.13) crypto-hash: 1.3.0 eventemitter3: 4.0.7 pako: 2.1.0 @@ -5501,7 +5289,6 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -5520,14 +5307,13 @@ snapshots: bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': - '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 @@ -5545,24 +5331,24 @@ snapshots: '@drift-labs/sdk@2.108.0-beta.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' - '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)' + '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@grpc/grpc-js': 1.12.5 - '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@pythnetwork/price-service-sdk': 1.7.1 - '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) + '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@triton-one/yellowstone-grpc': 1.3.0 - anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) nanoid: 3.3.4 node-cache: 5.1.2 rpc-websockets: 7.5.1 - solana-bankrun: 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + solana-bankrun: 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) strict-event-emitter-types: 2.0.0 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -5581,24 +5367,24 @@ snapshots: '@drift-labs/sdk@2.108.0-beta.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' - '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)' + '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@grpc/grpc-js': 1.12.5 - '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@pythnetwork/price-service-sdk': 1.7.1 - '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) + '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@triton-one/yellowstone-grpc': 1.3.0 - anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) nanoid: 3.3.4 node-cache: 5.1.2 rpc-websockets: 7.5.1 - solana-bankrun: 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + solana-bankrun: 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) strict-event-emitter-types: 2.0.0 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -5622,9 +5408,9 @@ snapshots: '@ledgerhq/hw-app-solana': 7.2.4 '@ledgerhq/hw-transport': 6.31.4 '@ledgerhq/hw-transport-node-hid': 6.29.5 - '@metaplex-foundation/js': 0.20.1(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/js': 0.20.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) commander: 11.1.0 dotenv: 16.4.5 rpc-websockets: 7.5.1 @@ -5644,12 +5430,12 @@ snapshots: - supports-color - utf-8-validate - '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@types/node': 18.19.69 bn.js: 5.2.1 borsh: 0.7.0 @@ -5664,12 +5450,12 @@ snapshots: - typescript - utf-8-validate - '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@types/node': 18.19.69 bn.js: 5.2.1 borsh: 0.7.0 @@ -5766,11 +5552,6 @@ snapshots: eslint: 9.17.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0)': - dependencies: - eslint: 9.17.0 - eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} '@eslint/config-array@0.19.1': @@ -5785,43 +5566,17 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/config-array@0.19.1': + '@eslint/eslintrc@2.1.4': dependencies: - '@eslint/object-schema': 2.1.5 + ajv: 6.12.6 debug: 4.4.0 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.9.1': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.2.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -5845,14 +5600,6 @@ snapshots: '@eslint/object-schema@2.1.5': {} - '@eslint/plugin-kit@0.2.4': - dependencies: - levn: 0.4.1 - - '@eslint/js@9.17.0': {} - - '@eslint/object-schema@2.1.5': {} - '@eslint/plugin-kit@0.2.4': dependencies: levn: 0.4.1 @@ -6111,13 +5858,6 @@ snapshots: '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - '@grpc/grpc-js@1.12.5': dependencies: '@grpc/proto-loader': 0.7.13 @@ -6187,7 +5927,7 @@ snapshots: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wallet': 5.7.0 - '@irys/arweave': 0.0.2 + '@irys/arweave': 0.0.2(debug@4.4.0) '@noble/ed25519': 1.7.3 base64url: 3.0.1 bs58: 4.0.1 @@ -6223,12 +5963,11 @@ snapshots: '@irys/query@0.0.9': dependencies: async-retry: 1.3.3 - axios: 1.7.9 + axios: 1.7.9(debug@4.4.0) transitivePeerDependencies: - debug - '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - '@irys/sdk@0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10)': + '@irys/sdk@0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/contracts': 5.7.0 @@ -6237,13 +5976,13 @@ snapshots: '@irys/query': 0.0.1(debug@4.4.0) '@near-js/crypto': 0.0.3 '@near-js/keystores-browser': 0.0.3 - '@near-js/providers': 0.0.4 + '@near-js/providers': 0.0.4(encoding@0.1.13) '@near-js/transactions': 0.1.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@supercharge/promise-pool': 3.2.0 - algosdk: 1.24.1 + algosdk: 1.24.1(encoding@0.1.13) aptos: 1.8.5(debug@4.4.0) - arbundles: 0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10) + arbundles: 0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10) async-retry: 1.3.3 axios: 1.7.9(debug@4.4.0) base64url: 3.0.1 @@ -6262,7 +6001,7 @@ snapshots: - encoding - utf-8-validate - '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@aptos-labs/ts-sdk': 1.33.1 '@ethersproject/bignumber': 5.7.0 @@ -6303,7 +6042,7 @@ snapshots: '@irys/query': 0.0.9 '@supercharge/promise-pool': 3.2.0 async-retry: 1.3.3 - axios: 1.7.9 + axios: 1.7.9(debug@4.4.0) base64url: 3.0.1 bignumber.js: 9.1.2 transitivePeerDependencies: @@ -6338,7 +6077,7 @@ snapshots: '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) async-retry: 1.3.3 - axios: 1.7.9 + axios: 1.7.9(debug@4.4.0) base64url: 3.0.1 bignumber.js: 9.1.2 csv-parse: 5.6.0 @@ -6377,7 +6116,7 @@ snapshots: '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) async-retry: 1.3.3 - axios: 1.7.9 + axios: 1.7.9(debug@4.4.0) base64url: 3.0.1 bignumber.js: 9.1.2 mime-types: 2.1.35 @@ -6406,7 +6145,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))': '@js-sdsl/ordered-map@4.4.2': {} '@jup-ag/api@6.0.38': {} @@ -6414,15 +6152,12 @@ snapshots: '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': dependencies: - '@cfworker/json-schema': 4.0.3 '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.16 langsmith: 0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) - langsmith: 0.2.15(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -6433,16 +6168,9 @@ snapshots: - openai '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': - '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': - '@langchain/groq@0.1.3(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) - groq-sdk: 0.5.0 - '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) groq-sdk: 0.5.0(encoding@0.1.13) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) @@ -6450,15 +6178,10 @@ snapshots: - encoding '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': - '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': - '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) - '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) uuid: 10.0.0 - '@langchain/langgraph-sdk@0.0.33': '@langchain/langgraph-sdk@0.0.33': dependencies: '@types/json-schema': 7.0.15 @@ -6467,47 +6190,28 @@ snapshots: uuid: 9.0.1 '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': - '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': - '@langchain/langgraph@0.2.39(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) '@langchain/langgraph-sdk': 0.0.33 - '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) - '@langchain/langgraph-sdk': 0.0.33 - '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))) - '@langchain/langgraph-sdk': 0.0.36 uuid: 10.0.0 zod: 3.24.1 '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': - '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': - '@langchain/openai@0.3.17(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) - '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) js-tiktoken: 1.0.16 openai: 4.77.3(encoding@0.1.13)(zod@3.24.1) - openai: 4.77.3(zod@3.24.1) - openai: 4.78.1(encoding@0.1.13)(zod@3.24.1) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)))': dependencies: '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) - '@langchain/core': 0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1)) js-tiktoken: 1.0.16 - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': '@ledgerhq/devices@6.27.1': dependencies: '@ledgerhq/errors': 6.19.1 @@ -6571,13 +6275,8 @@ snapshots: '@ledgerhq/logs@6.12.0': {} - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -6773,19 +6472,19 @@ snapshots: '@metaplex-foundation/js@0.20.1(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@irys/sdk': 0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10) + '@irys/sdk': 0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.6.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-candy-guard': 0.3.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-candy-machine': 5.1.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-candy-machine-core': 0.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.6.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-candy-guard': 0.3.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-candy-machine': 5.1.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-candy-machine-core': 0.1.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@noble/ed25519': 1.7.3 '@noble/hashes': 1.7.0 - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bignumber.js: 9.1.2 bn.js: 5.2.1 bs58: 5.0.0 @@ -6796,7 +6495,7 @@ snapshots: lodash.isequal: 4.5.0 merkletreejs: 0.3.11 mime: 3.0.0 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - arweave - bufferutil @@ -6806,16 +6505,12 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: @@ -6826,14 +6521,13 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6843,22 +6537,16 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-bubblegum@0.6.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-bubblegum@0.6.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - bn.js: 5.2.1 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + bn.js: 5.2.1 js-sha3: 0.8.0 transitivePeerDependencies: - bufferutil @@ -6868,15 +6556,15 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) js-sha3: 0.8.0 transitivePeerDependencies: - bufferutil @@ -6886,12 +6574,12 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-candy-guard@0.3.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-candy-guard@0.3.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6899,12 +6587,12 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/mpl-candy-machine-core@0.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-candy-machine-core@0.1.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6912,13 +6600,13 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/mpl-candy-machine@5.1.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-candy-machine@5.1.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -6933,16 +6621,13 @@ snapshots: '@msgpack/msgpack': 3.0.0-beta2 '@noble/hashes': 1.7.0 - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: @@ -6953,13 +6638,13 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: @@ -7004,7 +6689,6 @@ snapshots: - bufferutil - encoding - jiti - - jiti - supports-color - utf-8-validate @@ -7339,10 +7023,6 @@ snapshots: '@noble/ed25519@1.7.3': {} - '@noble/hashes@1.3.2': {} - - '@noble/ed25519@1.7.3': {} - '@noble/hashes@1.1.3': {} '@noble/hashes@1.3.2': {} @@ -7379,11 +7059,11 @@ snapshots: - supports-color - utf-8-validate - '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) big.js: 6.2.2 transitivePeerDependencies: - bufferutil @@ -7392,11 +7072,11 @@ snapshots: - typescript - utf-8-validate - '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) big.js: 6.2.2 transitivePeerDependencies: - bufferutil @@ -7413,21 +7093,12 @@ snapshots: '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': - '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': - '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -7440,11 +7111,10 @@ snapshots: '@pkgr/core@0.1.1': {} - '@project-serum/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - '@project-serum/anchor@0.11.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@project-serum/anchor@0.11.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@project-serum/borsh': 0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@project-serum/borsh': 0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 @@ -7505,18 +7175,17 @@ snapshots: - encoding - utf-8-validate - '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': - '@project-serum/borsh@0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@project-serum/borsh@0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@project-serum/serum@0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@project-serum/serum@0.13.65(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@project-serum/anchor': 0.11.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@project-serum/anchor': 0.11.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 transitivePeerDependencies: @@ -7547,7 +7216,7 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) @@ -7558,9 +7227,9 @@ snapshots: - encoding - utf-8-validate - '@pythnetwork/client@2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@pythnetwork/client@2.5.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) assert: 2.1.0 buffer: 6.0.3 transitivePeerDependencies: @@ -7598,24 +7267,24 @@ snapshots: dependencies: bn.js: 5.2.1 - '@pythnetwork/pyth-solana-receiver@0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@pythnetwork/pyth-solana-receiver@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@noble/hashes': 1.7.0 '@pythnetwork/price-service-sdk': 1.8.0 - '@pythnetwork/solana-utils': 0.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@pythnetwork/solana-utils': 0.4.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@pythnetwork/solana-utils@0.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@pythnetwork/solana-utils@0.4.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 5.0.0 - jito-ts: 3.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + jito-ts: 3.0.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -7630,16 +7299,6 @@ snapshots: optional: true '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@randlabs/communication-bridge@1.0.1': - optional: true - - '@randlabs/myalgo-connect@1.4.2': - dependencies: - '@randlabs/communication-bridge': 1.0.1 - optional: true - - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -7788,24 +7447,18 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': dependencies: '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': dependencies: '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': '@solana/codecs-core@2.0.0-rc.1(typescript@5.6.3)': dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 @@ -7820,17 +7473,12 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7839,13 +7487,8 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) @@ -7863,15 +7506,11 @@ snapshots: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7879,12 +7518,8 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@4.9.5) typescript: 4.9.5 - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 @@ -7902,18 +7537,13 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.7.2 - typescript: 5.7.2 '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: @@ -7923,17 +7553,12 @@ snapshots: fastestsmallesttextencoderdecoder: 1.0.22 typescript: 4.9.5 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.2 typescript: 5.6.3 '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': @@ -7954,7 +7579,6 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) @@ -7963,12 +7587,6 @@ snapshots: '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) typescript: 5.7.2 - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7983,15 +7601,8 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) @@ -8017,13 +7628,11 @@ snapshots: chalk: 5.4.1 commander: 12.1.0 - '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': dependencies: chalk: 5.4.1 commander: 12.1.0 typescript: 5.7.2 - typescript: 5.7.2 '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -8031,12 +7640,10 @@ snapshots: commander: 12.1.0 typescript: 4.9.5 - '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': '@solana/errors@2.0.0-rc.1(typescript@5.6.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.2 typescript: 5.6.3 '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': @@ -8050,7 +7657,6 @@ snapshots: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) @@ -8059,12 +7665,6 @@ snapshots: '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) typescript: 5.7.2 - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -8079,15 +7679,8 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 '@solana/codecs-core': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.6.3) '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.6.3) @@ -8132,10 +7725,7 @@ snapshots: - fastestsmallesttextencoderdecoder '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-type-length-value': 0.1.0 '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -8143,63 +7733,50 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript @@ -8212,22 +7789,17 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -8266,11 +7838,8 @@ snapshots: dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -8279,12 +7848,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -8293,12 +7862,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -8321,16 +7890,11 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -8340,13 +7904,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -8355,25 +7918,20 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) @@ -8387,14 +7945,8 @@ snapshots: - utf-8-validate '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) @@ -8407,15 +7959,13 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -8424,13 +7974,9 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) @@ -8447,21 +7993,21 @@ snapshots: dependencies: buffer: 6.0.3 - '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: '@solana/wallet-standard-features': 1.2.0 - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 eventemitter3: 4.0.7 - '@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': dependencies: '@ledgerhq/devices': 6.27.1 '@ledgerhq/hw-transport': 6.27.1 '@ledgerhq/hw-transport-webhid': 6.27.1 - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) buffer: 6.0.3 '@solana/wallet-standard-features@1.2.0': @@ -8469,7 +8015,7 @@ snapshots: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 - '@solana/web3.js@1.77.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.77.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@noble/curves': 1.8.0 @@ -8483,7 +8029,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 7.5.1 superstruct: 0.14.2 transitivePeerDependencies: @@ -8491,7 +8037,7 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 '@noble/curves': 1.8.0 @@ -8505,7 +8051,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) rpc-websockets: 8.0.2 superstruct: 1.0.4 transitivePeerDependencies: @@ -8513,7 +8059,6 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': '@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 @@ -8595,8 +8140,8 @@ snapshots: '@solworks/soltoolkit-sdk@0.0.23(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 @@ -8611,18 +8156,13 @@ snapshots: '@soncodi/signal@2.0.7': {} - '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@supercharge/promise-pool@3.2.0': {} - - '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@sqds/multisig@2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 assert: 2.1.0 bn.js: 5.2.1 @@ -8661,7 +8201,7 @@ snapshots: - encoding - utf-8-validate - '@switchboard-xyz/on-demand@1.2.42(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': + '@switchboard-xyz/on-demand@1.2.42(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': dependencies: '@brokerloop/ttlcache': 3.2.3 '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' @@ -8685,15 +8225,7 @@ snapshots: defer-to-connect: 2.0.1 '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@tensor-hq/tensor-common@8.3.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': - dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + dependencies: '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -8718,15 +8250,9 @@ snapshots: - utf-8-validate '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': - '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@msgpack/msgpack': 2.8.0 - '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1) '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -8819,8 +8345,6 @@ snapshots: '@types/estree@1.0.6': {} - '@types/estree@1.0.6': {} - '@types/express-serve-static-core@4.19.6': dependencies: '@types/node': 22.10.7 @@ -8864,13 +8388,11 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.69': '@types/node@18.19.69': dependencies: undici-types: 5.26.5 '@types/node@20.17.13': - '@types/node@20.17.11': dependencies: undici-types: 6.19.8 @@ -8925,7 +8447,6 @@ snapshots: dependencies: '@types/node': 22.10.7 - '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -8934,29 +8455,17 @@ snapshots: '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.19.0 - '@typescript-eslint/parser': 8.19.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 '@typescript-eslint/scope-manager': 8.19.0 '@typescript-eslint/types': 8.19.0 '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) @@ -8964,77 +8473,54 @@ snapshots: debug: 4.4.0 eslint: 8.57.1 typescript: 5.7.2 - typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.0': '@typescript-eslint/scope-manager@8.19.0': dependencies: '@typescript-eslint/types': 8.19.0 '@typescript-eslint/visitor-keys': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 - '@typescript-eslint/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) debug: 4.4.0 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.19.0': {} - '@typescript-eslint/types@8.19.0': {} - '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 '@typescript-eslint/types': 8.19.0 '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0 fast-glob: 3.3.2 - fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 ts-api-utils: 1.4.3(typescript@5.7.2) typescript: 5.7.2 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': '@typescript-eslint/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@typescript-eslint/scope-manager': 8.19.0 '@typescript-eslint/types': 8.19.0 '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) eslint: 8.57.1 typescript: 5.7.2 - typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.0': '@typescript-eslint/visitor-keys@8.19.0': dependencies: - '@typescript-eslint/types': 8.19.0 '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 @@ -9099,13 +8585,8 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ai@4.0.22(react@19.0.0)(zod@3.24.1): ai@4.0.22(react@19.0.0)(zod@3.24.1): dependencies: - '@ai-sdk/provider': 1.0.3 - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) - '@ai-sdk/react': 1.0.7(react@19.0.0)(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) '@ai-sdk/provider': 1.0.3 '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) '@ai-sdk/react': 1.0.7(react@19.0.0)(zod@3.24.1) @@ -9208,7 +8689,6 @@ snapshots: ansicolors@0.3.2: {} - arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): aptos@1.8.5(debug@4.4.0): dependencies: '@noble/hashes': 1.1.3 @@ -9219,7 +8699,7 @@ snapshots: transitivePeerDependencies: - debug - arbundles@0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10): + arbundles@0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -9235,7 +8715,7 @@ snapshots: secp256k1: 5.0.1 optionalDependencies: '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1 + algosdk: 1.24.1(encoding@0.1.13) arweave-stream-tx: 1.2.2(arweave@1.15.5) multistream: 4.1.0 tmp-promise: 3.0.3 @@ -9246,12 +8726,7 @@ snapshots: - encoding - utf-8-validate - arconnect@0.4.2: - dependencies: - arweave: 1.15.5 - optional: true - - arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10): + arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -9615,6 +9090,8 @@ snapshots: lodash.some: 4.6.0 optional: true + chownr@1.1.4: {} + cipher-base@1.0.6: dependencies: inherits: 2.0.4 @@ -10051,11 +9528,6 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.0: {} @@ -10148,51 +9620,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 4.2.0 - eslint@9.17.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.9.1 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.4 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - espree@9.6.1: dependencies: acorn: 8.14.0 @@ -10355,7 +9782,6 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.2: fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -10393,10 +9819,6 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} fill-range@7.1.1: @@ -10415,39 +9837,29 @@ snapshots: transitivePeerDependencies: - supports-color - find-process@1.4.8: find-process@1.4.8: dependencies: - chalk: 5.4.1 chalk: 5.4.1 commander: 12.1.0 debug: 4.4.0 eslint: 9.17.0 glob: 11.0.0 - debug: 4.4.0 - eslint: 9.17.0 - glob: 11.0.0 loglevel: 1.9.2 rimraf: 6.0.1 transitivePeerDependencies: - jiti - supports-color - rimraf: 6.0.1 - transitivePeerDependencies: - - jiti - - supports-color find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - flash-sdk@2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): find@0.3.0: dependencies: traverse-chain: 0.1.0 - flash-sdk@2.24.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): + flash-sdk@2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): dependencies: '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -10455,9 +9867,6 @@ snapshots: '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) '@types/node': 20.17.13 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@types/node': 20.17.11 bignumber.js: 9.1.2 bs58: 5.0.0 dotenv: 16.4.7 @@ -10467,7 +9876,6 @@ snapshots: node-fetch: 3.3.2 rimraf: 5.0.10 ts-node: 10.9.2(@types/node@20.17.13)(typescript@5.7.2) - ts-node: 10.9.2(@types/node@20.17.11)(typescript@5.7.2) tweetnacl: 1.0.3 transitivePeerDependencies: - '@swc/core' @@ -10490,11 +9898,6 @@ snapshots: flatted: 3.3.2 keyv: 4.5.4 - flat-cache@4.0.1: - dependencies: - flatted: 3.3.2 - keyv: 4.5.4 - flatted@3.3.2: {} follow-redirects@1.15.9: {} @@ -10649,15 +10052,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - glob@11.0.0: - dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.2 - minimatch: 10.0.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -10673,8 +10067,6 @@ snapshots: globals@14.0.0: {} - globals@14.0.0: {} - gopd@1.2.0: {} got@11.8.6: @@ -10723,7 +10115,6 @@ snapshots: groq-sdk@0.5.0(encoding@0.1.13): dependencies: - '@types/node': 18.19.69 '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 @@ -11001,10 +10392,6 @@ snapshots: dependencies: '@isaacs/cliui': 8.0.2 - jackspeak@4.0.2: - dependencies: - '@isaacs/cliui': 8.0.2 - jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -11023,15 +10410,15 @@ snapshots: - bufferutil - utf-8-validate - jito-ts@3.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + jito-ts@3.0.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: '@grpc/grpc-js': 1.12.5 '@noble/ed25519': 1.7.3 - '@solana/web3.js': 1.77.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.77.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) agentkeepalive: 4.6.0 dotenv: 16.4.7 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) superstruct: 1.0.4 transitivePeerDependencies: - bufferutil @@ -11119,19 +10506,14 @@ snapshots: json-buffer: 3.0.1 langchain@0.3.9(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(cheerio@0.22.0)(encoding@0.1.13)(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)): - langchain@0.3.9(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))))(axios@1.7.9)(openai@4.77.3(zod@3.24.1)): dependencies: '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) - '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) js-tiktoken: 1.0.16 js-yaml: 4.1.0 jsonpointer: 5.0.1 langsmith: 0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 @@ -11147,7 +10529,6 @@ snapshots: - openai langsmith@0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)): - langsmith@0.2.14(openai@4.77.3(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 commander: 10.0.1 @@ -11216,18 +10597,16 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.camelcase@4.3.0: {} - - lodash.clonedeep@4.5.0: {} - - lodash.isequal@4.5.0: {} - lodash.assignin@4.2.0: optional: true lodash.bind@4.2.1: optional: true + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + lodash.defaults@4.2.0: optional: true @@ -11240,6 +10619,8 @@ snapshots: lodash.foreach@4.5.0: optional: true + lodash.isequal@4.5.0: {} + lodash.map@4.6.0: optional: true @@ -11294,8 +10675,6 @@ snapshots: lru-cache@11.0.2: {} - lru-cache@11.0.2: {} - lunr@2.3.9: {} make-error@1.3.6: {} @@ -11401,10 +10780,6 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@10.0.1: dependencies: brace-expansion: 2.0.1 @@ -11475,7 +10850,7 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.71.0: + node-abi@3.72.0: dependencies: semver: 7.6.3 @@ -11607,9 +10982,7 @@ snapshots: regex-recursion: 5.1.1 openai@4.77.3(encoding@0.1.13)(zod@3.24.1): - openai@4.77.3(zod@3.24.1): dependencies: - '@types/node': 18.19.69 '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 @@ -11733,11 +11106,6 @@ snapshots: lru-cache: 11.0.2 minipass: 7.1.2 - path-scurry@2.0.0: - dependencies: - lru-cache: 11.0.2 - minipass: 7.1.2 - path-to-regexp@0.1.12: {} pathval@2.0.0: {} @@ -11782,7 +11150,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.71.0 + node-abi: 3.72.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -11980,17 +11348,11 @@ snapshots: dependencies: glob: 10.4.5 - rimraf@6.0.1: rimraf@6.0.1: dependencies: glob: 11.0.0 package-json-from-dist: 1.0.1 - ripemd160@2.0.2: - dependencies: - glob: 11.0.0 - package-json-from-dist: 1.0.1 - ripemd160@2.0.2: dependencies: hash-base: 3.1.0 @@ -12215,9 +11577,9 @@ snapshots: solana-bankrun-linux-x64-musl@0.3.1: optional: true - solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + solana-bankrun@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) bs58: 4.0.1 optionalDependencies: solana-bankrun-darwin-arm64: 0.3.1 @@ -12434,11 +11796,9 @@ snapshots: trim-lines@3.0.1: {} - ts-api-utils@1.4.3(typescript@5.7.2): ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 - typescript: 5.7.2 ts-log@2.2.7: {} @@ -12455,7 +11815,6 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.17.13 - '@types/node': 20.17.11 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -12463,7 +11822,6 @@ snapshots: diff: 4.0.2 make-error: 1.3.6 typescript: 5.7.2 - typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -12481,7 +11839,6 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.2 typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -12548,7 +11905,6 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typedoc@0.26.11(typescript@5.7.2): typedoc@0.26.11(typescript@5.7.2): dependencies: lunr: 2.3.9 @@ -12558,7 +11914,6 @@ snapshots: typescript: 5.7.2 yaml: 2.7.0 - typedoc@0.27.6(typescript@5.7.2): typedoc@0.27.6(typescript@5.7.2): dependencies: '@gerrit0/mini-shiki': 1.27.2 @@ -12566,14 +11921,12 @@ snapshots: markdown-it: 14.1.0 minimatch: 9.0.5 typescript: 5.7.2 - typescript: 5.7.2 yaml: 2.7.0 typescript-collections@1.3.3: {} typescript@4.9.5: {} - typescript@5.7.2: {} typescript@5.6.3: {} typescript@5.7.2: {} diff --git a/src/actions/fluxbeam/bridgeToken.ts b/src/actions/fluxbeam/bridgeToken.ts index 9513b3ef..0a40af12 100644 --- a/src/actions/fluxbeam/bridgeToken.ts +++ b/src/actions/fluxbeam/bridgeToken.ts @@ -6,8 +6,8 @@ import { fluxbeamBridgeTokens, } from "../../tools/fluxbeam/fluxbeam_bridge_tokens"; -const bridgeTokensAction: Action = { - name: "BRIDGE_TOKENS_ACTION", +const fluxbeamBridgeTokenAction: Action = { + name: "FLUXBEAM_BRIDGE_TOKEN_ACTION", similes: [ "bridge tokens", "transfer across chains", @@ -73,4 +73,4 @@ const bridgeTokensAction: Action = { }, }; -export default bridgeTokensAction; +export default fluxbeamBridgeTokenAction; diff --git a/src/actions/fluxbeam/burnToken.ts b/src/actions/fluxbeam/burnToken.ts index a9f75cf0..2fd538f0 100644 --- a/src/actions/fluxbeam/burnToken.ts +++ b/src/actions/fluxbeam/burnToken.ts @@ -4,8 +4,8 @@ import { SolanaAgentKit } from "../../agent"; import { z } from "zod"; import { fluxbeamBurnToken } from "../../tools"; -const burnTokenAction: Action = { - name: "BURN_TOKEN_ACTION", +const fluxbeamBurnTokenAction: Action = { + name: "FLUXBEAM_BURN_TOKEN_ACTION", similes: [ "burn tokens", "destroy tokens", @@ -51,4 +51,4 @@ const burnTokenAction: Action = { }, }; -export default burnTokenAction; +export default fluxbeamBurnTokenAction; diff --git a/src/actions/fluxbeam/createPool.ts b/src/actions/fluxbeam/createPool.ts index 8da3f2b8..bda8161b 100644 --- a/src/actions/fluxbeam/createPool.ts +++ b/src/actions/fluxbeam/createPool.ts @@ -4,8 +4,8 @@ import { SolanaAgentKit } from "../../agent"; import { z } from "zod"; import { fluxBeamCreatePool } from "../../tools"; -const createPoolAction: Action = { - name: "CREATE_POOL_ACTION", +const fluxbeamCreatePoolAction: Action = { + name: "FLUXBEAM_CREATE_POOL_ACTION", similes: [ "create liquidity pool", "start pool", @@ -54,4 +54,4 @@ const createPoolAction: Action = { }, }; -export default createPoolAction; +export default fluxbeamCreatePoolAction; diff --git a/src/actions/fluxbeam/createV1Token.ts b/src/actions/fluxbeam/createV1Token.ts index b7049991..d5cc17e9 100644 --- a/src/actions/fluxbeam/createV1Token.ts +++ b/src/actions/fluxbeam/createV1Token.ts @@ -4,8 +4,8 @@ import { fluxbeamCreateTokenV1 } from "../../tools"; import { Action } from "../../types"; // Create Token V1 Action -const createTokenV1Action: Action = { - name: "CREATE_TOKEN_V1_ACTION", +const fluxbeamCreateV1TokenAction: Action = { + name: "FLUXBEAM_CREATE_TOKEN_V1_ACTION", similes: ["create token v1", "mint new token v1", "initialize token v1"], description: "Creates a new SPL token with metadata (v1)", examples: [ @@ -51,4 +51,4 @@ const createTokenV1Action: Action = { }, }; -export default createTokenV1Action; +export default fluxbeamCreateV1TokenAction; diff --git a/src/actions/fluxbeam/createV2Token.ts b/src/actions/fluxbeam/createV2Token.ts index e45b8638..4f2b080d 100644 --- a/src/actions/fluxbeam/createV2Token.ts +++ b/src/actions/fluxbeam/createV2Token.ts @@ -4,9 +4,9 @@ import { SolanaAgentKit } from "../../agent"; import { ExtensionConfig, fluxbeamCreateTokenV2 } from "../../tools"; import { Action } from "../../types"; -// Create Mint V2 Action (continued) -const createMintV2Action: Action = { - name: "CREATE_MINT_V2_ACTION", +// Create V2 Token Action (continued) +const fluxbeamCreateV2TokenAction: Action = { + name: "FLUXBEAM_CREATE_MINT_V2_ACTION", similes: ["create token v2", "mint new token v2", "initialize token v2"], description: "Creates a new Token-2022 token with extensions", examples: [ @@ -77,4 +77,4 @@ const createMintV2Action: Action = { }, }; -export default createMintV2Action; +export default fluxbeamCreateV2TokenAction; diff --git a/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts b/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts index ba6d3052..33f71b0e 100644 --- a/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts +++ b/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts @@ -5,8 +5,8 @@ import { fluxbeamSubmitFeeClaim } from "../../tools"; import { Action } from "../../types"; // Fee Claim Action -const submitFeeClaimAction: Action = { - name: "SUBMIT_FEE_CLAIM_ACTION", +const fluxbeamSubmitFeeClaimAction: Action = { + name: "FLUXBEAM_SUBMIT_FEE_CLAIM_ACTION", similes: ["claim fees", "collect fees", "withdraw fees"], description: "Claims accumulated token fees", examples: [ @@ -21,7 +21,7 @@ const submitFeeClaimAction: Action = { status: "success", signature: "5mRt8...", }, - explanation: "Claim fees for a token mint", + explanation: "Claim accumulated fees for a token mint", }, ], ], @@ -44,4 +44,4 @@ const submitFeeClaimAction: Action = { }, }; -export default submitFeeClaimAction; +export default fluxbeamSubmitFeeClaimAction; diff --git a/src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts b/src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts deleted file mode 100644 index accdc5ec..00000000 --- a/src/actions/fluxbeam/fluxbeamSubmitFeePayment.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Action } from "../../types/action"; -import { SolanaAgentKit } from "../../agent"; -import { z } from "zod"; -import { fluxbeamSubmitFeePayment, fluxbeamSubmitFeeClaim } from "../../tools"; - -const feePaymentAction: Action = { - name: "FEE_PAYMENT_ACTION", - similes: [ - "pay fees", - "submit fee payment", - "process fees", - "handle transaction fees", - "pay gas", - ], - description: `Submit fee payments for Fluxbeam transactions. - Can be used to pay transaction fees or claim accumulated fees.`, - examples: [ - [ - { - input: { - type: "payment", - quote: { - /* quote object */ - }, - priorityFee: 100000, - }, - output: { - status: "success", - signature: "4wPn3r...", - }, - explanation: "Submit a fee payment for a transaction", - }, - { - input: { - type: "claim", - payer: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - mint: "So11111111111111111111111111111111111111112", - priorityFee: 100000, - }, - output: { - status: "success", - signature: "5tKm4q...", - }, - explanation: "Claim accumulated fees from a token mint", - }, - ], - ], - schema: z.union([ - z.object({ - type: z.literal("payment"), - quote: z.any(), - priorityFee: z.number(), - }), - z.object({ - type: z.literal("claim"), - payer: z.string(), - mint: z.string(), - priorityFee: z.number(), - }), - ]), - handler: async (agent: SolanaAgentKit, input: Record) => { - let signature: string; - - if (input.type === "payment") { - signature = await fluxbeamSubmitFeePayment( - agent, - { quote: input.quote }, - input.priorityFee, - ); - } else { - signature = await fluxbeamSubmitFeeClaim( - agent, - new PublicKey(input.payer), - new PublicKey(input.mint), - input.priorityFee, - ); - } - - return { - status: "success", - signature, - }; - }, -}; - -export default feePaymentAction; diff --git a/src/actions/fluxbeam/fluxbeamTransfer.ts b/src/actions/fluxbeam/fluxbeamTransfer.ts index f9c7abf7..ee480870 100644 --- a/src/actions/fluxbeam/fluxbeamTransfer.ts +++ b/src/actions/fluxbeam/fluxbeamTransfer.ts @@ -4,8 +4,8 @@ import { SolanaAgentKit } from "../../agent"; import { z } from "zod"; import { fluxbeamTransferSplToken, fluxbeamTransferSol } from "../../tools"; -const transferAction: Action = { - name: "TRANSFER_ACTION", +const fluxbeamTransferAction: Action = { + name: "FLUXBEAM_TRANSFER_ACTION", similes: [ "transfer tokens", "send tokens", @@ -85,4 +85,4 @@ const transferAction: Action = { }, }; -export default transferAction; +export default fluxbeamTransferAction; diff --git a/src/actions/fluxbeam/mintToken.ts b/src/actions/fluxbeam/mintToken.ts index e69de29b..fbd82f00 100644 --- a/src/actions/fluxbeam/mintToken.ts +++ b/src/actions/fluxbeam/mintToken.ts @@ -0,0 +1,99 @@ +import { PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamMintToAccount } from "../../tools"; +import { Action } from "../../types"; + +const fluxbeamMintToAccountAction: Action = { + name: "MINT_TO_ACCOUNT_ACTION", + similes: [ + "mint tokens", + "create new tokens", + "issue tokens", + "mint to wallet", + "add tokens to account", + ], + description: `Mints tokens to a specified owner's associated token account. + If the associated token account doesn't exist, it will be created automatically. + Supports both regular SPL tokens and Token-2022 tokens.`, + examples: [ + [ + { + input: { + owner: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + tokenMint: "So11111111111111111111111111111111111111112", + amount: "1000000", + v2: true, + }, + output: { + status: "success", + signature: + "5KtP9KbhJsBzS3rSXWqtqwtSJJNgfQFJxVdNCsM5QrUMBUEHrm28GU7dw7v6vh1CyCygtZhptVHhHgywY34iDtYf", + }, + explanation: + "Mint 1 token (with 6 decimals) to owner's associated token account using Token-2022 program", + }, + { + input: { + owner: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + tokenMint: "So11111111111111111111111111111111111111112", + amount: "1000000", + v2: false, + }, + output: { + status: "success", + signature: + "5KtP9KbhJsBzS3rSXWqtqwtSJJNgfQFJxVdNCsM5QrUMBUEHrm28GU7dw7v6vh1CyCygtZhptVHhHgywY34iDtYf", + }, + explanation: + "Mint 1 token (with 6 decimals) to owner's associated token account using regular SPL Token program", + }, + ], + ], + schema: z.object({ + owner: z.string().refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid owner public key"), + tokenMint: z.string().refine((val) => { + try { + new PublicKey(val); + return true; + } catch { + return false; + } + }, "Invalid token mint public key"), + amount: z + .string() + .or(z.number()) + .transform((val) => BigInt(val)), + v2: z.boolean().optional().default(true), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + try { + const signature = await fluxbeamMintToAccount( + agent, + new PublicKey(input.owner), + new PublicKey(input.tokenMint), + BigInt(input.amount), + input.v2, + ); + + return { + status: "success", + signature, + }; + } catch (error: any) { + return { + status: "error", + error: `Failed to mint tokens: ${error.message}`, + }; + } + }, +}; + +export default fluxbeamMintToAccountAction; diff --git a/src/actions/fluxbeam/revokeMintAuthority.ts b/src/actions/fluxbeam/revokeMintAuthority.ts index f8ab680f..519b6192 100644 --- a/src/actions/fluxbeam/revokeMintAuthority.ts +++ b/src/actions/fluxbeam/revokeMintAuthority.ts @@ -6,8 +6,8 @@ import { fluxbeamRevokeAuthority } from "../../tools/fluxbeam/fluxbeam_token_min import { Action } from "../../types"; // Revoke Authority Action -const revokeAuthorityAction: Action = { - name: "REVOKE_AUTHORITY_ACTION", +const fluxbeamRevokeMintAuthorityAction: Action = { + name: "FLUXBEAM_REVOKE_AUTHORITY_ACTION", similes: [ "remove authority", "revoke token authority", @@ -60,4 +60,4 @@ const revokeAuthorityAction: Action = { }, }; -export default revokeAuthorityAction; +export default fluxbeamRevokeMintAuthorityAction; diff --git a/src/actions/fluxbeam/setMintAuthority.ts b/src/actions/fluxbeam/setMintAuthority.ts index 37cf9360..fd278a73 100644 --- a/src/actions/fluxbeam/setMintAuthority.ts +++ b/src/actions/fluxbeam/setMintAuthority.ts @@ -6,8 +6,8 @@ import { fluxbeamSetAuthority } from "../../tools/fluxbeam/fluxbeam_token_mintin import { Action } from "../../types"; // Set Authority Action -const setAuthorityAction: Action = { - name: "SET_AUTHORITY_ACTION", +const fluxbeamSetMintAuthorityAction: Action = { + name: "FLUXBEAM_SET_AUTHORITY_ACTION", similes: ["change authority", "update authority", "modify authority"], description: "Sets a new authority for a token mint", examples: [ @@ -59,4 +59,4 @@ const setAuthorityAction: Action = { }, }; -export default setAuthorityAction; +export default fluxbeamSetMintAuthorityAction; diff --git a/src/actions/fluxbeam/unwrapSol.ts b/src/actions/fluxbeam/unwrapSol.ts index bc8d9be8..bf540671 100644 --- a/src/actions/fluxbeam/unwrapSol.ts +++ b/src/actions/fluxbeam/unwrapSol.ts @@ -4,25 +4,29 @@ import { fluxbeamUnwrapSOL } from "../../tools"; import { Action } from "../../types"; // Unwrap SOL Action -const unwrapSolAction: Action = { - name: "UNWRAP_SOL_ACTION", +const fluxbeamUnwrapSolAction: Action = { + name: "FLUXBEAM_UNWRAP_SOL_ACTION", similes: ["unwrap SOL", "convert wSOL to SOL", "get native SOL"], description: "Unwraps wSOL back to native SOL", examples: [ [ { - input: {}, + input: { + amount: 1, + }, output: { status: "success", - signature: "dAz6...", + signature: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", }, explanation: "Unwrap all wSOL to native SOL", }, ], ], - schema: z.object({}), - handler: async (agent: SolanaAgentKit) => { - const signature = await fluxbeamUnwrapSOL(agent); + schema: z.object({ + amount: z.number().positive(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamUnwrapSOL(agent, input.amount); return { status: "success", signature, @@ -30,4 +34,4 @@ const unwrapSolAction: Action = { }, }; -export default unwrapSolAction; +export default fluxbeamUnwrapSolAction; diff --git a/src/actions/fluxbeam/updateV1TokenMetadata.ts b/src/actions/fluxbeam/updateV1TokenMetadata.ts index e69de29b..cdf570ec 100644 --- a/src/actions/fluxbeam/updateV1TokenMetadata.ts +++ b/src/actions/fluxbeam/updateV1TokenMetadata.ts @@ -0,0 +1,56 @@ +import { PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamUpdateV1Metadata } from "../../tools"; +import { Action } from "../../types"; + +export const fluxbeamUpdateV1TokenMetadataAction: Action = { + name: "FLUXBEAM_UPDATE_V1_METADATA_ACTION", + similes: [ + "update token metadata", + "change token details", + "modify token v1 metadata", + "edit token information", + "update token v1 details", + ], + description: `Updates the metadata of a token v1 asset, including name, symbol, and URI. + Requires update authority permission.`, + examples: [ + [ + { + input: { + mint: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + newName: "Updated Token Name", + newSymbol: "UTN", + newUri: "https://arweave.net/newmetadata.json", + }, + output: { + status: "success", + signature: "transaction_signature_here", + }, + explanation: "Update all metadata fields for a token v1 asset", + }, + ], + ], + schema: z.object({ + mint: z.string(), + newName: z.string(), + newSymbol: z.string(), + newUri: z.string(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamUpdateV1Metadata( + agent, + new PublicKey(input.mint), + input.newName, + input.newSymbol, + input.newUri, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default fluxbeamUpdateV1TokenMetadataAction; diff --git a/src/actions/fluxbeam/updateV2TokenMetadata.ts b/src/actions/fluxbeam/updateV2TokenMetadata.ts index e69de29b..5619ef88 100644 --- a/src/actions/fluxbeam/updateV2TokenMetadata.ts +++ b/src/actions/fluxbeam/updateV2TokenMetadata.ts @@ -0,0 +1,78 @@ +import { PublicKey } from "@solana/web3.js"; +import { z } from "zod"; +import { SolanaAgentKit } from "../../agent"; +import { fluxbeamUpdateV2Metadata } from "../../tools"; +import { Action } from "../../types"; + +export const fluxbeamUpdateV2TokenMetadataAction: Action = { + name: "FLUXBEAM_UPDATE_V2_METADATA_ACTION", + similes: [ + "update token2022 metadata", + "change token v2 details", + "modify token2022 information", + "edit token v2 metadata", + "update token2022 fields", + ], + description: `Updates the metadata of a token v2 (token2022) token. Can update name, symbol, URI, + and update authority. All fields are optional but requires priority fee. + Requires current update authority permission.`, + examples: [ + [ + { + input: { + mint: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", + priorityFee: 100000, + newName: "New Token Name", + newSymbol: "NTN", + newUri: "https://arweave.net/newmetadata.json", + newUpdateAuthority: "NewAuthorityAddress123", + }, + output: { + status: "success", + signature: "transaction_signature_here", + }, + explanation: + "Update all metadata fields and authority for a token v2 token", + }, + { + input: { + mint: "TokenMintAddress123", + priorityFee: 50000, + newName: "New Token Name", + }, + output: { + status: "success", + signature: "transaction_signature_here", + }, + explanation: "Update only the name field for a token v2 token", + }, + ], + ], + schema: z.object({ + mint: z.string(), + priorityFee: z.number(), + newName: z.string().optional(), + newSymbol: z.string().optional(), + newUri: z.string().optional(), + newUpdateAuthority: z.string().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxbeamUpdateV2Metadata( + agent, + new PublicKey(input.mint), + input.priorityFee, + input.newName, + input.newSymbol, + input.newUri, + input.newUpdateAuthority + ? new PublicKey(input.newUpdateAuthority) + : undefined, + ); + return { + status: "success", + signature, + }; + }, +}; + +export default fluxbeamUpdateV2TokenMetadataAction; diff --git a/src/actions/fluxbeam/wrapSol.ts b/src/actions/fluxbeam/wrapSol.ts index 12777214..9991060d 100644 --- a/src/actions/fluxbeam/wrapSol.ts +++ b/src/actions/fluxbeam/wrapSol.ts @@ -4,10 +4,10 @@ import { fluxbeamWrapSOL } from "../../tools"; import { Action } from "../../types"; // Wrap SOL Action -const wrapSolAction: Action = { - name: "WRAP_SOL_ACTION", +const fluxbeamWrapSolAction: Action = { + name: "FLUXBEAM_WRAP_SOL_ACTION", similes: ["wrap SOL", "convert SOL to wSOL", "get wrapped SOL"], - description: "Wraps native SOL into wrapped SOL (wSOL)", + description: "Wrap native SOL into wrapped SOL (wSOL)", examples: [ [ { @@ -23,15 +23,16 @@ const wrapSolAction: Action = { ], ], schema: z.object({ - amount: z.number().positive(), + amount: z.number().positive().describe("amount of sol to wrap"), }), handler: async (agent: SolanaAgentKit, input: Record) => { + console.log(`this is the input from the action ${JSON.stringify(input)}`); const signature = await fluxbeamWrapSOL(agent, input.amount); return { status: "success", - signature, + signature: signature, }; }, }; -export default wrapSolAction; +export default fluxbeamWrapSolAction; diff --git a/src/actions/index.ts b/src/actions/index.ts index 13496e6e..ec9f1378 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -33,6 +33,20 @@ import launchPumpfunTokenAction from "./pumpfun/launchPumpfunToken"; import getWalletAddressAction from "./agent/getWalletAddress"; import flashOpenTradeAction from "./flash/flashOpenTrade"; import flashCloseTradeAction from "./flash/flashCloseTrade"; +import fluxbeamBridgeTokenAction from "./fluxbeam/bridgeToken"; +import fluxbeamBurnTokenAction from "./fluxbeam/burnToken"; +import fluxbeamCreatePoolAction from "./fluxbeam/createPool"; +import fluxbeamCreateV1TokenAction from "./fluxbeam/createV1Token"; +import fluxbeamCreateV2TokenAction from "./fluxbeam/createV2Token"; +import fluxbeamSubmitFeeClaimAction from "./fluxbeam/fluxbeamSubmitFeeClaim"; +import fluxbeamTransferAction from "./fluxbeam/fluxbeamTransfer"; +import fluxbeamMintToAccountAction from "./fluxbeam/mintToken"; +import fluxbeamRevokeMintAuthorityAction from "./fluxbeam/revokeMintAuthority"; +import fluxbeamSetMintAuthorityAction from "./fluxbeam/setMintAuthority"; +import fluxbeamUnwrapSolAction from "./fluxbeam/unwrapSol"; +import fluxbeamWrapSolAction from "./fluxbeam/wrapSol"; +import fluxbeamUpdateV1TokenMetadataAction from "./fluxbeam/updateV1TokenMetadata"; +import fluxbeamUpdateV2TokenMetadataAction from "./fluxbeam/updateV2TokenMetadata"; import createMultisigAction from "./squads/createMultisig"; import approveMultisigProposalAction from "./squads/approveMultisigProposal"; import createMultisigProposalAction from "./squads/createMultisigProposal"; @@ -135,6 +149,20 @@ export const ACTIONS = { LAUNCH_PUMPFUN_TOKEN_ACTION: launchPumpfunTokenAction, FLASH_OPEN_TRADE_ACTION: flashOpenTradeAction, FLASH_CLOSE_TRADE_ACTION: flashCloseTradeAction, + FLUXBEAM_BRIDGE_TOKEN_ACTION: fluxbeamBridgeTokenAction, + FLUXBEAM_BURN_TOKEN_ACTION: fluxbeamBurnTokenAction, + FLUXBEAM_CREATE_POOL_ACTION: fluxbeamCreatePoolAction, + FLUXBEAM_CREATE_V1_TOKEN_ACTION: fluxbeamCreateV1TokenAction, + FLUXBEAM_CREATE_V2_TOKEN_ACTION: fluxbeamCreateV2TokenAction, + FLUXBEAM_SUBMIT_FEE_CLAIM_ACTION: fluxbeamSubmitFeeClaimAction, + FLUXBEAM_TRANSFER_ACTION: fluxbeamTransferAction, + FLUXBEAM_MINT_TOKEN_ACTION: fluxbeamMintToAccountAction, + FLUXBEAM_REVOKE_MINT_AUTHORITY_ACTION: fluxbeamRevokeMintAuthorityAction, + FLUXBEAM_SET_MINT_AUTHORITY_ACTION: fluxbeamSetMintAuthorityAction, + FLUXBEAM_UNWRAP_SOL_ACTION: fluxbeamUnwrapSolAction, + FLUXBEAM_UPDATE_V1_TOKEN_METADATA_ACTION: fluxbeamUpdateV1TokenMetadataAction, + FLUXBEAM_UPDATE_V2_TOKEN_METADATA_ACTION: fluxbeamUpdateV2TokenMetadataAction, + FLUXBEAM_WRAP_SOL_ACTION: fluxbeamWrapSolAction, CREATE_MULTISIG_ACTION: createMultisigAction, DEPOSIT_TO_MULTISIG_ACTION: depositToMultisigAction, TRANSFER_FROM_MULTISIG_ACTION: transferFromMultisigAction, diff --git a/src/agent/index.ts b/src/agent/index.ts index 061ecfaf..12e3e3fe 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -132,7 +132,6 @@ import { InputAssetStruct, fluxbeamBurnToken, fluxBeamCreatePool, - fluxbeamSubmitFeePayment, fluxbeamSubmitFeeClaim, fluxbeamUpdateV1Metadata, fluxbeamUpdateV2Metadata, @@ -146,6 +145,9 @@ import { fluxbeamTransferSplToken, fluxbeamUnwrapSOL, fluxbeamWrapSOL, + fluxbeamMintToAccount, + fluxbeamRevokeAuthority, + fluxbeamSetAuthority, ExtensionConfig, } from "../tools"; import { @@ -1135,7 +1137,6 @@ export class SolanaAgentKit { return simulate_switchboard_feed(this, feed, crossbarUrl); } async fluxbeamBridgeTokens( - agent: SolanaAgentKit, destination: Chain, amount: number, destinationWalletAddress: string, @@ -1144,7 +1145,7 @@ export class SolanaAgentKit { gasDrop?: number, ) { return fluxbeamBridgeTokens( - agent, + this, destination, destinationWalletAddress, fromToken, @@ -1154,73 +1155,68 @@ export class SolanaAgentKit { ); } async fluxbeamBurnToken( - agent: SolanaAgentKit, mint: PublicKey, amount: number, v2: boolean = true, ): Promise { - return fluxbeamBurnToken(agent, mint, amount, v2); + return fluxbeamBurnToken(this, mint, amount, v2); } async fluxbeamCreatePool( - agent: SolanaAgentKit, token_a: PublicKey, token_a_amount: number, token_b: PublicKey, token_b_amount: number, ): Promise { return fluxBeamCreatePool( - agent, + this, token_a, token_a_amount, token_b, token_b_amount, ); } - async fluxbeamSubmitFeePayment( - agent: SolanaAgentKit, - quoteReq: { quote: any }, - priorityFee: number, - ): Promise { - return fluxbeamSubmitFeePayment(agent, quoteReq, priorityFee); - } - async fluxbeamSubmitFeeClaim( - agent: SolanaAgentKit, payer: PublicKey, mint: PublicKey, priorityFee: number, ): Promise { - return fluxbeamSubmitFeeClaim(agent, payer, mint, priorityFee); + return fluxbeamSubmitFeeClaim(this, payer, mint, priorityFee); } async fluxbeamUpdateV1Metadata( - agent: SolanaAgentKit, mint: PublicKey, - name: string, - symbol: string, - uri: string, + newName: string, + newSymbol: string, + newUri: string, ): Promise { - return fluxbeamUpdateV1Metadata(agent, mint, name, symbol, uri); + return fluxbeamUpdateV1Metadata(this, mint, newName, newSymbol, newUri); } async fluxbeamUpdateV2Metadata( - agent: SolanaAgentKit, mint: PublicKey, - name: string, - symbol: string, - uri: string, + priorityFee: number, + newName?: string, + newSymbol?: string, + newUri?: string, + newUpdateAuthority?: PublicKey, ): Promise { - return fluxbeamUpdateV2Metadata(agent, mint, name, symbol, uri); + return fluxbeamUpdateV2Metadata( + this, + mint, + priorityFee, + newName, + newSymbol, + newUri, + newUpdateAuthority, + ); } async fluxbeamMintToAccount( - agent: SolanaAgentKit, owner: PublicKey, tokenMint: PublicKey, amount: bigint, v2: boolean, ): Promise { - return fluxbeamMintToAccount(agent, owner, tokenMint, amount, v2); + return fluxbeamMintToAccount(this, owner, tokenMint, amount, v2); } async fluxbeamSetAuthority( - agent: SolanaAgentKit, owner: PublicKey, mint: PublicKey, authority: AuthorityType, @@ -1230,7 +1226,7 @@ export class SolanaAgentKit { additional_signers: Keypair[] = [], ): Promise { return fluxbeamSetAuthority( - agent, + this, owner, mint, authority, @@ -1241,16 +1237,15 @@ export class SolanaAgentKit { ); } fluxbeamRevokeAuthority( - agent: SolanaAgentKit, owner: PublicKey, mint: PublicKey, authority: AuthorityType, v2: boolean = true, - priorityFee: number = 100_000_000_000, + priorityFee: number = 100_000_000, additional_signers: Keypair[] = [], ): Promise { return fluxbeamRevokeAuthority( - agent, + this, owner, mint, authority, @@ -1260,16 +1255,14 @@ export class SolanaAgentKit { ); } async fluxBeamSwap( - agent: SolanaAgentKit, inputMint: PublicKey = TOKENS.USDC, outputMint: PublicKey, inputAmount: number, slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, ): Promise { - return fluxBeamSwap(agent, inputMint, outputMint, inputAmount, slippageBps); + return fluxBeamSwap(this, inputMint, outputMint, inputAmount, slippageBps); } async fluxbeamTransferSplToken( - agent: SolanaAgentKit, mint: PublicKey, dstOwner: PublicKey, amount: number, @@ -1277,7 +1270,7 @@ export class SolanaAgentKit { allowOwnerOffCurve = false, ): Promise { return fluxbeamTransferSplToken( - agent, + this, mint, dstOwner, amount, @@ -1287,15 +1280,13 @@ export class SolanaAgentKit { } async fluxbeamTransferSol( - agent: SolanaAgentKit, dstOwner: PublicKey, amount: number, ): Promise { - return fluxbeamTransferSol(agent, dstOwner, amount); + return fluxbeamTransferSol(this, dstOwner, amount); } async fluxbeamCreateTokenV1( - agent: SolanaAgentKit, name: string, symbol: string, decimals: number = 9, @@ -1304,7 +1295,7 @@ export class SolanaAgentKit { initialSupply?: number, ): Promise { return fluxbeamCreateTokenV1( - agent, + this, name, symbol, decimals, @@ -1315,7 +1306,6 @@ export class SolanaAgentKit { } async fluxbeamCreateTokenV2( - agent: SolanaAgentKit, owner: PublicKey, tokenMintKeypair: Keypair, name: string, @@ -1333,7 +1323,7 @@ export class SolanaAgentKit { imageUri?: string, ): Promise { return fluxbeamCreateTokenV2( - agent, + this, owner, tokenMintKeypair, name, @@ -1353,14 +1343,13 @@ export class SolanaAgentKit { } async fluxbeamGetClaimWithheldTokens( - agent: SolanaAgentKit, mint: PublicKey, authority: PublicKey, srcAccounts: PublicKey[], payer?: PublicKey, ): Promise { return fluxbeamGetClaimWitheldTokens( - agent, + this, mint, authority, srcAccounts, @@ -1369,29 +1358,24 @@ export class SolanaAgentKit { } async fluxbeamGetClaimWithheldTokensFromMint( - agent: SolanaAgentKit, mint: PublicKey, payer?: PublicKey, ): Promise { - return fluxbeamGetClaimWitheldTokensFromMint(agent, mint, payer); + return fluxbeamGetClaimWitheldTokensFromMint(this, mint, payer); } async fluxbeamGetClaimWithheldTokensToMint( - agent: SolanaAgentKit, mint: PublicKey, srcAccounts: PublicKey[], ): Promise { - return fluxbeamGetClaimWithheldTokensToMint(agent, mint, srcAccounts); + return fluxbeamGetClaimWithheldTokensToMint(this, mint, srcAccounts); } - async fluxbeamWrapSOL( - agent: SolanaAgentKit, - amount: number, - ): Promise { - return fluxbeamWrapSOL(agent, amount); + async fluxbeamWrapSOL(amount: number): Promise { + return fluxbeamWrapSOL(this, amount); } - async fluxbeamUnwrapSOL(agent: SolanaAgentKit): Promise { - return fluxbeamUnwrapSOL(agent); + async fluxbeamUnwrapSOL(amount: number): Promise { + return fluxbeamUnwrapSOL(this, amount); } } diff --git a/src/constants/index.ts b/src/constants/index.ts index d51ccb97..d980524d 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -57,6 +57,7 @@ export const SWITCHBOARD_DEFAULT_CROSSBAR = "https://crossbar.switchboard.xyz"; /** * Fluxbeam constants */ +// fluxbeam fee account export const FEE_ACCOUNT = new PublicKey( "FLUXR4McuD2iXyP3wpP4XTjSWmB86ppMiyoA52UA9bKb", ); diff --git a/src/idls/fluxbeam.ts b/src/idls/fluxbeam.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/langchain/fluxbeam/airdrop_tokens.ts b/src/langchain/fluxbeam/airdrop_tokens.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/langchain/fluxbeam/bridge_token.ts b/src/langchain/fluxbeam/bridge_token.ts index 6976829e..aec0521f 100644 --- a/src/langchain/fluxbeam/bridge_token.ts +++ b/src/langchain/fluxbeam/bridge_token.ts @@ -28,7 +28,6 @@ export class SolanaFluxbeamBridgeTokensTool extends Tool { // Bridge the tokens const signature = await this.solanaKit.fluxbeamBridgeTokens( - this.solanaKit, parsedInput.destination as Chain, parsedInput.destinationWalletAddress, parsedInput.fromToken, diff --git a/src/langchain/fluxbeam/burn_token.ts b/src/langchain/fluxbeam/burn_token.ts index bd94cddf..b6d3fb52 100644 --- a/src/langchain/fluxbeam/burn_token.ts +++ b/src/langchain/fluxbeam/burn_token.ts @@ -21,7 +21,6 @@ export class SolanaFluxbeamBurnTokenTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamBurnToken( - this.solanaKit, new PublicKey(parsedInput.mint), parsedInput.amount, parsedInput.v2 || true, diff --git a/src/langchain/fluxbeam/create_pool.ts b/src/langchain/fluxbeam/create_pool.ts index 0066159f..aa408b94 100644 --- a/src/langchain/fluxbeam/create_pool.ts +++ b/src/langchain/fluxbeam/create_pool.ts @@ -21,7 +21,6 @@ export class SolanaFluxbeamCreatePoolTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamCreatePool( - this.solanaKit, new PublicKey(parsedInput.token_a), parsedInput.token_a_amount, new PublicKey(parsedInput.token_b), diff --git a/src/langchain/fluxbeam/create_token_v1.ts b/src/langchain/fluxbeam/create_token_v1.ts index 1fa904ab..4a35952d 100644 --- a/src/langchain/fluxbeam/create_token_v1.ts +++ b/src/langchain/fluxbeam/create_token_v1.ts @@ -23,7 +23,6 @@ export class SolanaFluxbeamCreateTokenV1Tool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamCreateTokenV1( - this.solanaKit, parsedInput.name, parsedInput.symbol, parsedInput.decimals, diff --git a/src/langchain/fluxbeam/create_token_v2.ts b/src/langchain/fluxbeam/create_token_v2.ts index 3eed9b40..b5b7c05d 100644 --- a/src/langchain/fluxbeam/create_token_v2.ts +++ b/src/langchain/fluxbeam/create_token_v2.ts @@ -33,7 +33,6 @@ export class SolanaFluxbeamCreateTokenV2Tool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamCreateTokenV2( - this.solanaKit, new PublicKey(parsedInput.owner), parsedInput.tokenMintKeypair, parsedInput.name, diff --git a/src/langchain/fluxbeam/fee_management.ts b/src/langchain/fluxbeam/fee_management.ts index d77c8f7e..344ec150 100644 --- a/src/langchain/fluxbeam/fee_management.ts +++ b/src/langchain/fluxbeam/fee_management.ts @@ -2,43 +2,6 @@ import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -export class SolanaFluxbeamSubmitFeePaymentTool extends Tool { - name = "solana_submit_fee_payment"; - description = `This tool can be used to submit a fee payment transaction. - - Inputs (input is a JSON string): - quoteReq: object, e.g., { "quote": { "payer": "SomePubKeyString", "fee": 1000000 } } (required) - priorityFee: number, e.g., 100000 (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamSubmitFeePayment( - this.solanaKit, - parsedInput.quoteReq, - parsedInput.priorityFee, - ); - - return JSON.stringify({ - status: "success", - message: "Fee payment transaction submitted successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - export class SolanaFluxbeamSubmitFeeClaimTool extends Tool { name = "solana_submit_fee_claim"; description = `This tool can be used to submit a fee claim transaction. @@ -57,7 +20,6 @@ export class SolanaFluxbeamSubmitFeeClaimTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamSubmitFeeClaim( - this.solanaKit, new PublicKey(parsedInput.payer), new PublicKey(parsedInput.mint), parsedInput.priorityFee, diff --git a/src/langchain/fluxbeam/swap.ts b/src/langchain/fluxbeam/swap.ts index d3b8cc8c..f6d9ed70 100644 --- a/src/langchain/fluxbeam/swap.ts +++ b/src/langchain/fluxbeam/swap.ts @@ -22,7 +22,6 @@ export class SolanaFluxBeamSwapTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxBeamSwap( - this.solanaKit, parsedInput.inputMint ? new PublicKey(parsedInput.inputMint) : TOKENS.USDC, diff --git a/src/langchain/fluxbeam/token_minting_controls.ts b/src/langchain/fluxbeam/token_minting_controls.ts index 4f96e23e..a18b1b68 100644 --- a/src/langchain/fluxbeam/token_minting_controls.ts +++ b/src/langchain/fluxbeam/token_minting_controls.ts @@ -22,7 +22,6 @@ export class SolanaFluxbeamMintToAccountTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamMintToAccount( - this.solanaKit, new PublicKey(parsedInput.owner), new PublicKey(parsedInput.tokenMint), BigInt(parsedInput.amount), @@ -68,7 +67,6 @@ export class SolanaFluxbeamSetAuthorityTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamSetAuthority( - this.solanaKit, new PublicKey(parsedInput.owner), new PublicKey(parsedInput.mint), parsedInput.authority as AuthorityType, @@ -116,7 +114,6 @@ export class SolanaFluxbeamRevokeAuthorityTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamRevokeAuthority( - this.solanaKit, new PublicKey(parsedInput.owner), new PublicKey(parsedInput.mint), parsedInput.authority as AuthorityType, diff --git a/src/langchain/fluxbeam/transfer.ts b/src/langchain/fluxbeam/transfer.ts index 41806784..cf849d43 100644 --- a/src/langchain/fluxbeam/transfer.ts +++ b/src/langchain/fluxbeam/transfer.ts @@ -22,7 +22,6 @@ export class SolanaFluxbeamTransferSplTokenTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamTransferSplToken( - this.solanaKit, new PublicKey(parsedInput.mint), new PublicKey(parsedInput.dstOwner), parsedInput.amount, @@ -66,7 +65,6 @@ export class SolanaFluxbeamTransferSolTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamTransferSol( - this.solanaKit, new PublicKey(parsedInput.dstOwner), parsedInput.amount, ); diff --git a/src/langchain/fluxbeam/update_v1_token_metadata.ts b/src/langchain/fluxbeam/update_v1_token_metadata.ts index 185313d8..088d47e0 100644 --- a/src/langchain/fluxbeam/update_v1_token_metadata.ts +++ b/src/langchain/fluxbeam/update_v1_token_metadata.ts @@ -2,15 +2,15 @@ import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -export class SolanaFluxbeamUpdateV1MetadataTool extends Tool { - name = "solana_update_metadata"; - description = `This tool updates metadata for a v1 (legacy) token account. +export class SolanaFluxbeamUpdateV1TokenMetadataTool extends Tool { + name = "solana_update_v1_token_metadata"; + description = `This tool updates metadata for a v1 (legacy) token. Inputs (input is a JSON string): mint: string, e.g., "TokenMintPublicKey" (required) - name: string, token name (required) - symbol: string, token symbol (required) - uri: string, token symbol (required) + newName: string, token name (required) + newSymbol: string, token symbol (required) + newUri: string, token symbol (required) `; constructor(private solanaKit: SolanaAgentKit) { @@ -22,8 +22,6 @@ export class SolanaFluxbeamUpdateV1MetadataTool extends Tool { const parsedInput = JSON.parse(input); const signature = await this.solanaKit.fluxbeamUpdateV1Metadata( - this.solanaKit, - // updateAuthority, new PublicKey(parsedInput.mint), parsedInput.name, parsedInput.symbol, diff --git a/src/langchain/fluxbeam/update_v2_token_metadata.ts b/src/langchain/fluxbeam/update_v2_token_metadata.ts index 87d597ce..98a3902b 100644 --- a/src/langchain/fluxbeam/update_v2_token_metadata.ts +++ b/src/langchain/fluxbeam/update_v2_token_metadata.ts @@ -2,15 +2,17 @@ import { PublicKey } from "@solana/web3.js"; import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; -export class SolanaFluxbeamUpdateV2MetadataTool extends Tool { - name = "solana_update_token2022_metadata"; +export class SolanaFluxbeamUpdateV2TokenMetadataTool extends Tool { + name = "solana_update_v2_token_metadata"; description = `This tool updates metadata for a token using the 2022 standard. Inputs (input is a JSON string): mint: string, e.g., "TokenMintPublicKey" (required) - name: string, token name (required) - symbol: string, token symbol (required) - uri:string token uri (required)`; + priority fee + newName: string, token name (optional) + newSymbol: string, token symbol (optional) + newUri: string token uri (optional) + newUpdateAuthority PublicKey (optional)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -21,11 +23,11 @@ export class SolanaFluxbeamUpdateV2MetadataTool extends Tool { const parsedInput = JSON.parse(input); const signature = this.solanaKit.fluxbeamUpdateV2Metadata( - this.solanaKit, new PublicKey(parsedInput.mint), - parsedInput.name, - parsedInput.symbol, - parsedInput.uri, + parsedInput.newName, + parsedInput.newSymbol, + parsedInput.newUri, + parsedInput.newUpdateAuthority, ); return JSON.stringify({ diff --git a/src/langchain/fluxbeam/withheld_amounts_tracking.ts b/src/langchain/fluxbeam/withheld_amounts_tracking.ts index 60b5fe11..845fda82 100644 --- a/src/langchain/fluxbeam/withheld_amounts_tracking.ts +++ b/src/langchain/fluxbeam/withheld_amounts_tracking.ts @@ -21,7 +21,6 @@ export class SolanaFluxbeamGetClaimWithheldTokensTool extends Tool { const parsedInput = JSON.parse(input); const signatures = await this.solanaKit.fluxbeamGetClaimWithheldTokens( - this.solanaKit, new PublicKey(parsedInput.mint), new PublicKey(parsedInput.authority), parsedInput.srcAccounts.map((acc: string) => new PublicKey(acc)), @@ -60,7 +59,6 @@ export class SolanaFluxbeamGetClaimWithheldTokensFromMintTool extends Tool { const signature = await this.solanaKit.fluxbeamGetClaimWithheldTokensFromMint( - this.solanaKit, new PublicKey(parsedInput.mint), parsedInput.payer ? new PublicKey(parsedInput.payer) : undefined, ); @@ -97,7 +95,6 @@ export class SolanaFluxbeamGetClaimWithheldTokensToMintTool extends Tool { const signatures = await this.solanaKit.fluxbeamGetClaimWithheldTokensToMint( - this.solanaKit, new PublicKey(parsedInput.mint), parsedInput.srcAccounts.map((acc: string) => new PublicKey(acc)), ); diff --git a/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts b/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts index 03c727f0..1e13ebd0 100644 --- a/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts +++ b/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts @@ -3,10 +3,10 @@ import { SolanaAgentKit } from "../../agent"; export class SolanaFluxbeamWrapSOLTool extends Tool { name = "solana_fluxbeam_wrap_sol"; - description = `This tool wraps SOL into wSOL for the specified amount in lamports. + description = `Wraps SOL into wSOL for the specified amount in SOL Inputs (input is a JSON string): - amount: number, eg 1000000 (required)`; + amount: number, eg 0.0012 (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); @@ -14,19 +14,13 @@ export class SolanaFluxbeamWrapSOLTool extends Tool { protected async _call(input: string): Promise { try { + console.log(`this is the input ${input}`); const parsedInput = JSON.parse(input); - - if (!parsedInput.amount || typeof parsedInput.amount !== "number") { - throw new Error( - "Invalid input: 'amount' is required and must be a number.", - ); - } - + // console.log(`this is the input ${input}}`); + console.log(`this is the ${JSON.stringify(parsedInput)}`); const signature = await this.solanaKit.fluxbeamWrapSOL( - this.solanaKit, parsedInput.amount, ); - return JSON.stringify({ status: "success", message: "SOL wrapped successfully", @@ -34,6 +28,13 @@ export class SolanaFluxbeamWrapSOLTool extends Tool { amount: parsedInput.amount, }); } catch (error: any) { + console.log( + `this is the error stringified ${JSON.stringify({ + status: "error", + message: error.message, + code: error.code || "UNKNOWN_ERROR", + })}`, + ); return JSON.stringify({ status: "error", message: error.message, @@ -45,15 +46,22 @@ export class SolanaFluxbeamWrapSOLTool extends Tool { export class SolanaFluxbeamUnwrapSOLTool extends Tool { name = "solana_fluxbeam_unwrap_sol"; - description = `This tool unwraps wSOL back into SOL for the user's wallet. No additional inputs required.`; + description = `This tool unwraps wSOL back into SOL for the user's wallet. + + Inputs (input is a JSON string): + amount: number in SOL, eg 0.0012 (required)`; constructor(private solanaKit: SolanaAgentKit) { super(); } - protected async _call(): Promise { + protected async _call(input: string): Promise { try { - const signature = await this.solanaKit.fluxbeamUnwrapSOL(this.solanaKit); + const parsedInput = JSON.parse(input); + + const signature = await this.solanaKit.fluxbeamUnwrapSOL( + parsedInput.amount, + ); return JSON.stringify({ status: "success", diff --git a/src/langchain/index.ts b/src/langchain/index.ts index c7992025..07904931 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -151,9 +151,8 @@ import { SolanaFluxbeamBurnTokenTool, SolanaFluxbeamCreatePoolTool, SolanaFluxbeamSubmitFeeClaimTool, - SolanaFluxbeamSubmitFeePaymentTool, - SolanaFluxbeamUpdateV1MetadataTool, - SolanaFluxbeamUpdateV2MetadataTool, + SolanaFluxbeamUpdateV1TokenMetadataTool, + SolanaFluxbeamUpdateV2TokenMetadataTool, SolanaFluxbeamMintToAccountTool, SolanaFluxbeamSetAuthorityTool, SolanaFluxbeamRevokeAuthorityTool, @@ -285,9 +284,8 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaFluxbeamCreatePoolTool(solanaKit), new SolanaFluxbeamCreatePoolTool(solanaKit), new SolanaFluxbeamSubmitFeeClaimTool(solanaKit), - new SolanaFluxbeamSubmitFeePaymentTool(solanaKit), - new SolanaFluxbeamUpdateV1MetadataTool(solanaKit), - new SolanaFluxbeamUpdateV2MetadataTool(solanaKit), + new SolanaFluxbeamUpdateV1TokenMetadataTool(solanaKit), + new SolanaFluxbeamUpdateV2TokenMetadataTool(solanaKit), new SolanaFluxbeamMintToAccountTool(solanaKit), new SolanaFluxbeamSetAuthorityTool(solanaKit), new SolanaFluxbeamRevokeAuthorityTool(solanaKit), diff --git a/src/langchain/solana/balance.ts b/src/langchain/solana/balance.ts index fd84b885..3459e9a1 100644 --- a/src/langchain/solana/balance.ts +++ b/src/langchain/solana/balance.ts @@ -18,6 +18,7 @@ export class SolanaBalanceTool extends Tool { protected async _call(input: string): Promise { try { + console.log(`this is the input ${input}`); const tokenAddress = input ? new PublicKey(input) : undefined; const balance = await this.solanaKit.getBalance(tokenAddress); diff --git a/src/langchain/solana/balance_other.ts b/src/langchain/solana/balance_other.ts index c29f7f1a..9433b52c 100644 --- a/src/langchain/solana/balance_other.ts +++ b/src/langchain/solana/balance_other.ts @@ -19,7 +19,7 @@ export class SolanaBalanceOtherTool extends Tool { protected async _call(input: string): Promise { try { const { walletAddress, tokenAddress } = JSON.parse(input); - + console.log(`this is the balance input ${input}}`); const tokenPubKey = tokenAddress ? new PublicKey(tokenAddress) : undefined; diff --git a/src/tools/fluxbeam/fluxbeam_fee_management.ts b/src/tools/fluxbeam/fluxbeam_fee_management.ts index d919ee4a..7da3cd5c 100644 --- a/src/tools/fluxbeam/fluxbeam_fee_management.ts +++ b/src/tools/fluxbeam/fluxbeam_fee_management.ts @@ -1,66 +1,13 @@ -import { - ComputeBudgetProgram, - PublicKey, - SystemProgram, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; +import { ComputeBudgetProgram, PublicKey, Transaction } from "@solana/web3.js"; import { createWithdrawWithheldTokensFromMintInstruction, getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token"; import { SolanaAgentKit } from "../../agent"; -import { MEMO_PROGRAM_ID } from "../../constants"; import { signTransaction, sendTransaction } from "../../utils/FluxbeamClient"; -const FEE_ACCOUNT = new PublicKey( - "FEE1M4bRtos7Yi8cni9s6zpxDfZTSsARwrhqMJMLLKhv", -); - -/** - * Submit fee payment transaction - */ -export async function fluxbeamSubmitFeePayment( - agent: SolanaAgentKit, - quoteReq: { quote: any }, - priorityFee: number, -): Promise { - try { - const quote = quoteReq.quote; - // eslint-disable-next-line no-console - console.log("buildFeeTransaction", { quoteReq, quote, priorityFee }); - const transaction = new Transaction(); - const unit_limit = 160_000; - const unitPrice = Math.floor(priorityFee / unit_limit); - - // Add compute budget instructions - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unit_limit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.transfer({ - fromPubkey: new PublicKey(quote.payer), //agent.wallet_address, - toPubkey: FEE_ACCOUNT, - lamports: quote.fee, - }), - new TransactionInstruction({ - keys: [], - programId: MEMO_PROGRAM_ID, - data: Buffer.from(btoa(JSON.stringify(quoteReq))), - }), - ); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw new Error(`Fee payment failed: ${error.message}`); - } -} - -//Enables tokens to harvest token fees generated by the Transfer Fee extension. +//Enables tokens to harvest token fees generated by the Transfer Fee extension from recipients of the mint . /** * Submit fee claim transaction */ diff --git a/src/tools/fluxbeam/fluxbeam_metadata_management.ts b/src/tools/fluxbeam/fluxbeam_metadata_management.ts index 2d9b0873..f72b3431 100644 --- a/src/tools/fluxbeam/fluxbeam_metadata_management.ts +++ b/src/tools/fluxbeam/fluxbeam_metadata_management.ts @@ -14,14 +14,32 @@ import { keypairIdentity, } from "@metaplex-foundation/umi"; import * as bs58 from "bs58"; -import { PublicKey } from "@solana/web3.js"; +import { + ComputeBudgetProgram, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, +} from "@solana/web3.js"; +import { + createUpdateFieldInstruction, + createUpdateAuthorityInstruction, + pack, +} from "@solana/spl-token-metadata"; +import { FEE_ACCOUNT } from "../../constants"; +import { + sendTransaction, + signTransaction, + getToken22Metadata, +} from "../../utils/FluxbeamClient"; +import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; export async function fluxbeamUpdateV1Metadata( agent: SolanaAgentKit, mint: PublicKey, - name: string, - symbol: string, - uri: string, + newName: string, + newSymbol: string, + newUri: string, ) { try { // Create UMI instance from agent @@ -38,7 +56,12 @@ export async function fluxbeamUpdateV1Metadata( const txId = await updateV1(umi, { mint: fromWeb3JsPublicKey(mint), authority: updateAuthority, - data: { ...initialMetadata, symbol: symbol, name: name, uri: uri }, + data: { + ...initialMetadata, + symbol: newSymbol, + name: newName, + uri: newUri, + }, }).sendAndConfirm(umi); const txSignature = bs58.default.encode(txId.signature); @@ -52,35 +75,155 @@ export async function fluxbeamUpdateV1Metadata( export async function fluxbeamUpdateV2Metadata( agent: SolanaAgentKit, mint: PublicKey, - name: string, - symbol: string, - uri: string, + priorityFee: number, + newName?: string, + newSymbol?: string, + newUri?: string, + newUpdateAuthority?: PublicKey, ) { try { - const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()); + const metadata = await getToken22Metadata(agent, mint); + // Early validation of updateAuthority + if (!metadata.updateAuthority) { + throw new Error("Update authority is not defined for this token"); + } - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - const myKeypair = agent.wallet; - const updateAuthority = createSignerFromKeypair( - umi, - fromWeb3JsKeypair(myKeypair), - ); //signer - const initialMetadata = await fetchMetadataFromSeeds(umi, { - mint: fromWeb3JsPublicKey(mint), - }); + const currentUpdateAuthority = new PublicKey(metadata.updateAuthority); + const transaction = new Transaction(); + const unitLimit = 90_000; + const unitPrice = Math.floor(priorityFee / unitLimit); - const txId = await updateV1(umi, { - authority: updateAuthority, - mint: fromWeb3JsPublicKey(mint), - data: { ...initialMetadata, symbol: symbol, name: name, uri: uri }, - }).sendAndConfirm(umi); + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: FEE_ACCOUNT, + lamports: 100, + }), + ); - const txSignature = bs58.default.encode(txId.signature); + if (newName && newName !== metadata.name) { + console.debug( + "getUpdateToken22MetadataTransaction::name - ", + newName, + metadata.name, + ); + transaction.add( + new TransactionInstruction({ + keys: [], + programId: new PublicKey( + "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", + ), + data: Buffer.from(newName), + }), + ); + transaction.add( + createUpdateFieldInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: mint, + updateAuthority: new PublicKey(currentUpdateAuthority), + field: "name", + value: newName, + }), + ); + } - return txSignature; + if (newSymbol && newSymbol !== metadata.symbol) { + console.debug( + "getUpdateToken22MetadataTransaction::symbol - ", + newSymbol, + metadata.symbol, + ); + transaction.add( + createUpdateFieldInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: mint, + updateAuthority: new PublicKey(currentUpdateAuthority), + field: "symbol", + value: newSymbol, + }), + ); + } + + if (newUri && newUri !== metadata.uri) { + console.debug("getUpdateToken22MetadataTransaction::uri - ", { + data: newUri, + meta: metadata.uri, + }); + transaction.add( + createUpdateFieldInstruction({ + programId: TOKEN_2022_PROGRAM_ID, + metadata: mint, + updateAuthority: new PublicKey(currentUpdateAuthority), + field: "uri", + value: newUri, + }), + ); + } + + console.debug( + "Adjust authority", + newUpdateAuthority, + currentUpdateAuthority, + ); + if ( + newUpdateAuthority && + newUpdateAuthority.toString() !== metadata.updateAuthority.toString() + ) { + console.debug( + "getUpdateToken22MetadataTransaction::authority - ", + currentUpdateAuthority, + newUpdateAuthority, + ); + const args = { + metadata: mint, + newAuthority: newUpdateAuthority, + oldAuthority: new PublicKey(currentUpdateAuthority), + programId: TOKEN_2022_PROGRAM_ID, + }; + + transaction.add(createUpdateAuthorityInstruction(args)); + } + + const oldMetadataLength = + pack({ + additionalMetadata: metadata?.additionalMetadata || [], + mint: PublicKey.default, + symbol: metadata.symbol, + name: metadata.name, + uri: metadata.uri, + }).length + 4; + + const newMetadataLength = + pack({ + additionalMetadata: [], + mint: PublicKey.default, + symbol: newSymbol ?? metadata.symbol, + name: newName ?? metadata.name, + uri: newUri ?? metadata.uri, + }).length + 4; + + const mintLamports = + await agent.connection.getMinimumBalanceForRentExemption( + newMetadataLength - oldMetadataLength, + ); + if (mintLamports > 0) { + transaction.add( + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: new PublicKey(mint), + lamports: mintLamports, + }), + ); + } + const txn = await signTransaction(agent, transaction); + const response = await sendTransaction(agent, txn); + + return response.signature; } catch (error) { throw Error( `failed to update metadata for token v2 (token2022) asset: ${error}`, ); - } // mint: fromWeb3JsPublicKey(mint), + } } diff --git a/src/tools/fluxbeam/fluxbeam_token_airdrop.ts b/src/tools/fluxbeam/fluxbeam_token_airdrop.ts index e69de29b..a45b81b1 100644 --- a/src/tools/fluxbeam/fluxbeam_token_airdrop.ts +++ b/src/tools/fluxbeam/fluxbeam_token_airdrop.ts @@ -0,0 +1,342 @@ +/* eslint-disable no-console */ +import { + ComputeBudgetProgram, + Keypair, + PublicKey, + SystemProgram, + Transaction, +} from "@solana/web3.js"; +import { + TOKEN_PROGRAM_ID, + ASSOCIATED_TOKEN_PROGRAM_ID, + createAssociatedTokenAccountInstruction, + TOKEN_2022_PROGRAM_ID, + createTransferCheckedInstruction, + getMint, +} from "@solana/spl-token"; +import * as fs from "fs"; +import { + getAssociatedTokenPDA, + sendTransaction, + signTransaction, +} from "../../utils/FluxbeamClient"; +import { SolanaAgentKit } from "../../agent"; +import path from "path"; +import { FEE_ACCOUNT } from "../../constants"; + +interface TokenInfo { + sendableAmount: number; + sendableTokenMint: string; + owner: string; +} + +interface AirdropResult { + success: boolean; + txid?: string; + error?: string; + address?: string; +} +class AirdropError extends Error { + constructor( + message: string, + public code: string, + ) { + super(message); + this.name = "AirdropError"; + } +} + +type AmountType = "fixed" | "dynamic"; +type TargetType = "tokenHolders" | "manual" | "csv"; + +/** + * Signs and sends a token transfer transaction + * @param agent SolanaAgentKit instance + * @param dropInfo Token transfer information + * @param sender Sender's keypair + * @param priorityFee + * @returns Transaction signature + */ +async function sendToken( + agent: SolanaAgentKit, + dropInfo: TokenInfo, + sender: Keypair, + priorityFee: number, +): Promise { + if ( + !dropInfo.sendableAmount || + !dropInfo.sendableTokenMint || + !dropInfo.owner + ) { + throw new Error("Invalid drop info provided"); + } + + const mint = new PublicKey(dropInfo.sendableTokenMint); + const owner = new PublicKey(dropInfo.owner); + const decimals = ( + await getMint(agent.connection, mint, "finalized", TOKEN_2022_PROGRAM_ID) + ).decimals; + const transaction = new Transaction(); + // Add compute budget instructions first + const unitLimit = 90_000; + const unitPrice = Math.floor(priorityFee / unitLimit); + + transaction.add( + ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), + ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), + SystemProgram.transfer({ + fromPubkey: agent.wallet_address, + toPubkey: FEE_ACCOUNT, + lamports: 100, + }), + ); + + // Get destination ATA + const destinationAccount = await getAssociatedTokenPDA(mint, owner); + + // Get source ATA + const sourceAccount = await getAssociatedTokenPDA(mint, sender.publicKey); + + // Check if destination ATA exists + const destinationAccountInfo = + await agent.connection.getAccountInfo(destinationAccount); + const destTokenAccountMissing = !destinationAccountInfo; + + if (destTokenAccountMissing) { + console.log("Creating token account..."); + + const createATAinstruction = createAssociatedTokenAccountInstruction( + sender.publicKey, + destinationAccount, + owner, + mint, + TOKEN_2022_PROGRAM_ID, + ASSOCIATED_TOKEN_PROGRAM_ID, + ); + transaction.add(createATAinstruction); + } + + // Add transfer instruction + const transferInstruction = createTransferCheckedInstruction( + sourceAccount, + mint, + destinationAccount, + sender.publicKey, + dropInfo.sendableAmount * Math.pow(10, decimals), + decimals, + [], + TOKEN_2022_PROGRAM_ID, + ); + transaction.add(transferInstruction); + + console.log( + "Sending from", + sourceAccount.toBase58(), + "to", + destinationAccount.toBase58(), + ); + + // Sign and send transaction using the provided logic + const txn = await signTransaction(agent, transaction); + const response = await sendTransaction(agent, txn); + return response.signature; +} + +/** + * Performs a token airdrop on the Solana blockchain + * + * @param agent SolanaAgentKit instance + * @param sender - Keypair of the sender who will fund the airdrop + * @param mintAddress - The mint address of the token to be airdropped + * @param amountType - Type of amount distribution: 'fixed' for same amount to all recipients, 'dynamic' for proportional distribution + * @param amount - Amount of tokens to send (if fixed) or total tokens to distribute (if dynamic) + * @param targetType - Method to determine recipients: 'tokenHolders' for holders of a specific token, 'manual' for direct address list, 'csv' for addresses from file + * @param targetValue - Based on targetType: + * - For 'tokenHolders': mint address of token to check holders (string) + * - For 'manual': array of recipient addresses (string[]) + * - For 'csv': path to CSV file with 'address' column (string) + * @param createAssociatedAccounts - Whether to create Associated Token Accounts for recipients if they don't exist + * @param minBalance - Optional minimum token balance for filtering token holders + * @returns Promise resolving to array of results for each attempted transfer + * + * @throws {AirdropError} When configuration is invalid or airdrop fails + **/ +export async function fluxbeamTokenAirdrop( + agent: SolanaAgentKit, + sender: Keypair, + mintAddress: string, + amountType: AmountType, + amount: number, + targetType: TargetType, + targetValue: string | string[], + createAssociatedAccounts: boolean, + minBalance?: number, +): Promise { + try { + // Validate inputs + if (amount <= 0) { + throw new AirdropError("Amount must be greater than 0", "INVALID_AMOUNT"); + } + + try { + new PublicKey(mintAddress); + } catch { + throw new AirdropError("Invalid mint address", "INVALID_MINT"); + } + + // Get target addresses based on type + let targetAddresses: string[] = []; + switch (targetType) { + case "tokenHolders": { + if (typeof targetValue !== "string") { + throw new AirdropError( + "Token holders target requires a mint address string", + "INVALID_TARGET_VALUE", + ); + } + const mint = new PublicKey(targetValue); + const accounts = await agent.connection.getProgramAccounts( + TOKEN_PROGRAM_ID, + { + filters: [ + { dataSize: 165 }, + { memcmp: { offset: 0, bytes: mint.toBase58() } }, + ], + }, + ); + + for (const acc of accounts) { + try { + if (minBalance) { + const balance = await agent.connection.getTokenAccountBalance( + acc.pubkey, + ); + if (Number(balance.value.amount) >= minBalance) { + targetAddresses.push(acc.pubkey.toBase58()); + } + } else { + targetAddresses.push(acc.pubkey.toBase58()); + } + } catch (error: any) { + console.warn( + `Failed to check balance for ${acc.pubkey.toBase58()}: ${error.message}`, + ); + } + } + break; + } + case "manual": { + if (!Array.isArray(targetValue)) { + throw new AirdropError( + "Manual target requires an array of addresses", + "INVALID_TARGET_VALUE", + ); + } + targetAddresses = targetValue; + break; + } + case "csv": { + if (typeof targetValue !== "string") { + throw new AirdropError( + "CSV target requires a file path string", + "INVALID_TARGET_VALUE", + ); + } + + const currentDir = process.cwd(); + const fullPath = path.join(currentDir, targetValue); + + if (!fs.existsSync(fullPath)) { + throw new AirdropError( + `File not found at ${fullPath}. Current directory: ${currentDir}`, + "FILE_NOT_FOUND", + ); + } + + try { + const fileContent = fs.readFileSync(fullPath, "utf-8"); + targetAddresses = fileContent + .split("\n") + .map((line) => line.trim()) + .filter((line) => line.length > 0); + } catch (error: any) { + throw new AirdropError( + `Failed to read file at ${fullPath}: ${error.message}`, + "FILE_READ_ERROR", + ); + } + break; + } + } + + if (targetAddresses.length === 0) { + throw new AirdropError("No valid target addresses found", "NO_TARGETS"); + } + + // Calculate costs + const rentExemptBalance = + await agent.connection.getMinimumBalanceForRentExemption(165); + const ataCost = createAssociatedAccounts + ? targetAddresses.length * rentExemptBalance + : 0; + const totalTokens = + amountType === "fixed" ? amount * targetAddresses.length : amount; + + // Log cost information + console.log(`ATA Creation Cost: ${ataCost / 1e9} SOL`); + console.log(`Total Tokens to Send: ${totalTokens}`); + console.log(`Number of recipients: ${targetAddresses.length}`); + + // Check sender balance + const senderBalance = await agent.connection.getBalance(sender.publicKey); + if (senderBalance < ataCost) { + throw new AirdropError( + `Insufficient SOL balance for ATA creation. Required: ${ataCost / 1e9} SOL, Found: ${senderBalance / 1e9} SOL`, + "INSUFFICIENT_SOL_BALANCE", + ); + } + + // Process transfers + const results: AirdropResult[] = []; + for (const address of targetAddresses) { + try { + const dropInfo = { + sendableAmount: + amountType === "fixed" ? amount : amount / targetAddresses.length, + sendableTokenMint: mintAddress, + owner: address, + }; + + const txid = await sendToken(agent, dropInfo, sender, 100_000); + + results.push({ + success: true, + txid, + address, + }); + } catch (error: any) { + results.push({ + success: false, + error: error.message, + address, + }); + } + } + + // Log summary + const successful = results.filter((r) => r.success).length; + console.log(`\nAirdrop Complete:`); + console.log(`✓ Successful transfers: ${successful}`); + console.log(`✗ Failed transfers: ${results.length - successful}`); + + return results; + } catch (error: any) { + if (error instanceof AirdropError) { + throw error; + } + throw new AirdropError( + `Airdrop failed: ${error.message}`, + "AIRDROP_FAILED", + ); + } +} diff --git a/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts b/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts index 824e6736..cb8f68e8 100644 --- a/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts +++ b/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts @@ -128,7 +128,7 @@ export function fluxbeamRevokeAuthority( mint: PublicKey, authority: AuthorityType, v2: boolean = true, - priorityFee: number = 100_000_000, + priorityFee: number = 1_000_000, additional_signers: Keypair[] = [], ) { return fluxbeamSetAuthority( diff --git a/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts b/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts index 21ce32a4..910c3bbd 100644 --- a/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts +++ b/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts @@ -115,7 +115,7 @@ export async function fluxbeamGetClaimWitheldTokens( } /** - * Returns transaction to claim withheld tokens from the mint account + * Claims withheld tokens from the mint account * @agent SolanaAgentKit instance * @param mint Token mint address * @param payer diff --git a/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts b/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts index b5f01838..288171aa 100644 --- a/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts +++ b/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts @@ -69,11 +69,47 @@ export async function getWrapSOLInstructions( } } -export function getUnwrapSOLInstruction( +export async function getUnwrapSOLInstructions( + agent: SolanaAgentKit, owner: PublicKey, -): TransactionInstruction { - const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); - return createCloseAccountInstruction(ata, owner, owner); + amount: number, // Amount in SOL (not lamports) +): Promise { + try { + const ixs: TransactionInstruction[] = []; + const amountInLamports = amount * LAMPORTS_PER_SOL; + + const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); + //convert all the WSOL back to sol + const wsolBalance = await agent.connection + .getTokenAccountBalance(TOKENS.wSOL) // prob in lamports + .then((val) => { + if (!val?.value?.uiAmount) { + throw new Error("Failed to fetch wSOL balance"); + } + return val.value.uiAmount; + }); + if (wsolBalance === null || 0) { + throw Error("You have no WSOL to unwrap"); + } + if (amount === wsolBalance) { + ixs.push(createCloseAccountInstruction(ata, owner, owner)); + } else { + ixs.push(createCloseAccountInstruction(ata, owner, owner)); + + const amountToWrap = wsolBalance - amountInLamports; + const instructions = await getWrapSOLInstructions( + agent, + agent.wallet_address, + amountToWrap, + ); + ixs.push(...instructions); + } + return ixs; + } catch (error: any) { + throw new Error( + `Failed to generate unwrap SOL instructions: ${error.message}`, + ); + } } /** @@ -116,11 +152,16 @@ export async function fluxbeamWrapSOL( */ export async function fluxbeamUnwrapSOL( agent: SolanaAgentKit, + amount: number, ): Promise { try { - const instruction = getUnwrapSOLInstruction(agent.wallet_address); + const instructions = await getUnwrapSOLInstructions( + agent, + agent.wallet_address, + amount, + ); - const transaction = new Transaction().add(instruction); + const transaction = new Transaction().add(...instructions); const txn = await signTransaction(agent, transaction); diff --git a/src/tools/fluxbeam/index.ts b/src/tools/fluxbeam/index.ts index a0637663..bf5aba88 100644 --- a/src/tools/fluxbeam/index.ts +++ b/src/tools/fluxbeam/index.ts @@ -5,7 +5,7 @@ export * from "./fluxbeam_fee_management"; // export * from "./fluxbeam_liquidity_management"; // export * from "./fluxbeam_lock_token"; export * from "./fluxbeam_metadata_management"; -// export * from "./fluxbeam_token_airdrop"; +export * from "./fluxbeam_token_airdrop"; export * from "./fluxbeam_token_minting_controls"; export * from "./fluxbeam_token_swap"; export * from "./fluxbeam_transfer"; @@ -13,3 +13,4 @@ export * from "./fluxbeam_v1_token_creation"; export * from "./fluxbeam_v2_token_creation"; export * from "./fluxbeam_withheld_amounts_tracking"; export * from "./fluxbeam_wrap_and_unwrap_sol"; +export * from "./fluxbeam_token_airdrop"; diff --git a/src/utils/FluxbeamClient.ts b/src/utils/FluxbeamClient.ts index ab7a9a71..0da66295 100644 --- a/src/utils/FluxbeamClient.ts +++ b/src/utils/FluxbeamClient.ts @@ -1,5 +1,6 @@ import { getAssociatedTokenAddressSync, + getTokenMetadata, TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token"; import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; @@ -32,6 +33,27 @@ export async function getAssociatedTokenPDA( ); } +export async function getToken22Metadata( + agent: SolanaAgentKit, + mint: PublicKey, +) { + try { + const metadata = await getTokenMetadata( + agent.connection, // Connection instance + mint, // PubKey of the Mint Account + "confirmed", // Commitment, can use undefined to use default + TOKEN_2022_PROGRAM_ID, + ); + if (metadata !== null) { + return metadata; + } else { + throw Error("Token metadata is null"); + } + } catch (error: any) { + throw Error(`failed to get token metadata: ${error}`); + } +} + export async function accountExists(agent: SolanaAgentKit, account: PublicKey) { const acc = await agent.connection .getAccountInfo(account, "confirmed") diff --git a/test/addresses.csv b/test/addresses.csv new file mode 100644 index 00000000..4d776e46 --- /dev/null +++ b/test/addresses.csv @@ -0,0 +1,3 @@ +6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE +4BgGjf2tNzLJ6zG6BPFYcy3F9ArzoyYm8URf96dEsh1L + diff --git a/test/fluxbeam_bridge_tokens.test.ts b/test/fluxbeam_bridge_tokens.test.ts index 9d8edb61..b30a2366 100644 --- a/test/fluxbeam_bridge_tokens.test.ts +++ b/test/fluxbeam_bridge_tokens.test.ts @@ -1,6 +1,6 @@ import { SolanaAgentKit } from "../src"; import { TOKENS } from "../src/constants"; -import { Chain, fluxbeamBridgeTokens } from "../src/tools/fluxbeam_bridge_tokens"; +import { Chain, fluxbeamBridgeTokens } from "../src/tools/fluxbeam/fluxbeam_bridge_tokens"; const testBridgeTokens = async () => { const agent = new SolanaAgentKit( diff --git a/test/fluxbeam_create_token_v1.test.ts b/test/fluxbeam_create_token_v1.test.ts index 7cd2dade..2ef469a7 100644 --- a/test/fluxbeam_create_token_v1.test.ts +++ b/test/fluxbeam_create_token_v1.test.ts @@ -1,6 +1,6 @@ import { PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../src"; -import { fluxbeamCreateMintV1 } from "../src/tools"; +import { fluxbeamCreateTokenV1 } from "../src/tools"; import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; import { createUmi} from "@metaplex-foundation/umi-bundle-defaults"; import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; @@ -23,7 +23,7 @@ const testCreateTokenV1 = async () => { // const uri = await uploadImage(umi, 'test/pic5.jpg'); - const signature = await fluxbeamCreateMintV1( + const signature = await fluxbeamCreateTokenV1( agent, "test flower", "TSTFLWR", @@ -35,6 +35,6 @@ const testCreateTokenV1 = async () => { console.log(`this is signature for create mint txn ${signature}`); }; -// createMintToken() + testCreateTokenV1() diff --git a/test/fluxbeam_create_token_v2.test.ts b/test/fluxbeam_create_token_v2.test.ts index 9da50d9b..e2dc0fff 100644 --- a/test/fluxbeam_create_token_v2.test.ts +++ b/test/fluxbeam_create_token_v2.test.ts @@ -3,8 +3,8 @@ import { SolanaAgentKit } from "../src"; import { CreateMintV2, fluxbeamBurnToken, - fluxbeamCreateMintV1, - fluxbeamCreateMintV2, + fluxbeamCreateTokenV1, + fluxbeamCreateTokenV2, } from "../src/tools"; import { ExtensionType } from "@solana/spl-token"; @@ -22,7 +22,7 @@ const testCreateTokenV2 = async () => { // Pass the public key to the function // const tokenMint = mintKeypair.publicKey; - const signature = await fluxbeamCreateMintV2( + const signature = await fluxbeamCreateTokenV2( agent, agent.wallet_address, mintKeypair, // we have to pass in the mint keypair to sign the txn not just the mint public key otherwise it says "Missing signature for public key" diff --git a/test/fluxbeam_fee_management.test.ts b/test/fluxbeam_fee_management.test.ts new file mode 100644 index 00000000..4a09ee2d --- /dev/null +++ b/test/fluxbeam_fee_management.test.ts @@ -0,0 +1,28 @@ +import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { TOKENS } from "../src/constants"; +import {fluxbeamSubmitFeeClaim, fluxbeamTokenAirdrop} from "../src/tools" + + +const testSubmitFeeClaim = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + let mint = new PublicKey("Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i"); + const signature = await fluxbeamSubmitFeeClaim( + agent, + agent.wallet_address, + mint, + 100_000 + ); +console.log(`this is the signature for submit fee claim ${signature}`); +}; + +testSubmitFeeClaim() + + diff --git a/test/fluxbeam_metadata_management.test.ts b/test/fluxbeam_metadata_management.test.ts index e2a704b8..7c4d4cd3 100644 --- a/test/fluxbeam_metadata_management.test.ts +++ b/test/fluxbeam_metadata_management.test.ts @@ -1,6 +1,6 @@ import { PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../src"; -import { fluxbeamCreateMintV1 } from "../src/tools"; +import { fluxbeamCreateTokenV1, fluxbeamUpdateV1Metadata, fluxbeamUpdateV2Metadata } from "../src/tools"; import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; import { createUmi} from "@metaplex-foundation/umi-bundle-defaults"; import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; @@ -19,20 +19,19 @@ const testUpdateMetadataTokenV1 = async () => { const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" - - // const uri = await uploadImage(umi, 'test/pic5.jpg'); + + let uri_string = + "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw"; - const signature = await fluxbeamCreateMintV1( + let mint = new PublicKey("9PYyTGrSg3JaJdwouRCMvp2zzHuF1E1ieAU8iBXmdQAX"); + const signature = await fluxbeamUpdateV1Metadata( agent, - "test flower", - "TSTFLWR", - 9, - undefined, - "/test/pic5.jpg", + mint, + "FLWRV1", + "FLWR", uri_string, ); - console.log(`this is signature for create mint txn ${signature}`); + console.log(`this is signature for update mint v1 mint txn ${signature}`); }; @@ -44,25 +43,22 @@ const testUpdateMetadataTokenV2 = async () => { OPENAI_API_KEY: process.env.OPENAI_API_KEY!, }, ); - const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" - // const uri = await uploadImage(umi, 'test/pic5.jpg'); + let mint = new PublicKey("Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i"); - const signature = await fluxbeamCreateMintV1( + const signature = await fluxbeamUpdateV2Metadata( agent, - "test flower", - "TSTFLWR", - 9, - undefined, - "/test/pic5.jpg", - uri_string, + mint, + 100_0000, + "UPDATEDFLOWERV2", + "UFLWR", + uri_string ); - console.log(`this is signature for create mint txn ${signature}`); + console.log(`this is signature for updatw mint v2 mint txn ${signature}`); }; -testUpdateMetadataTokenV1() +// testUpdateMetadataTokenV1() testUpdateMetadataTokenV2() \ No newline at end of file diff --git a/test/fluxbeam_token_airdrop.test.ts b/test/fluxbeam_token_airdrop.test.ts new file mode 100644 index 00000000..22633a2f --- /dev/null +++ b/test/fluxbeam_token_airdrop.test.ts @@ -0,0 +1,47 @@ +import { SolanaAgentKit } from "../src"; +import { TOKENS } from "../src/constants"; +import {fluxbeamTokenAirdrop} from "../src/tools" +const testTokenAirdrop = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + // await fluxbeamTokenAirdrop( + // agent, + // agent.wallet, + // "", + + // "fixed", + // 100, + // "manual", + // [ + // "FHmBz4SnZ5r6Rws958S8WJ5ymnrvUdwjgrVQ3BVeBH95", + // "3HyECVGdysActCjqyATwJLngHmXUg8kw64svzh8BeVH9", + // "41KHBtdibhUE1KYbXFFQF9ZTFWTKuwc2WSFjLAJArKSV", + // ], + // true, + // ), + console.log(agent.wallet_address) + await fluxbeamTokenAirdrop( + agent, + agent.wallet, + "Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i", + "fixed", + 10, + "csv", + "/test/addresses.csv", + true, + 0, // minimum balance + ); +}; + +testTokenAirdrop() + + + + // // Example 2: Dynamic amount to token holders + \ No newline at end of file diff --git a/test/fluxbeam_token_minting_controls.test.ts b/test/fluxbeam_token_minting_controls.test.ts index 1e417e07..d1e6a46e 100644 --- a/test/fluxbeam_token_minting_controls.test.ts +++ b/test/fluxbeam_token_minting_controls.test.ts @@ -1,8 +1,7 @@ import { Keypair, PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../src"; import { TOKENS } from "../src/constants"; -import { Chain, fluxbeamBridgeTokens } from "../src/tools/fluxbeam_bridge_tokens"; -import { fluxbeamMintToAccount, fluxbeamRevokeAuthority, fluxbeamSetAuthority } from "../src/tools/fluxbeam_token_minting_controls"; +import { fluxbeamMintToAccount, fluxbeamRevokeAuthority, fluxbeamSetAuthority } from "../src/tools"; import { AuthorityType, createMint, TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; const createMintToken = async () => { diff --git a/test/fluxbeam_token_swap.test.ts b/test/fluxbeam_token_swap.test.ts index db09e8f7..dd6f62d8 100644 --- a/test/fluxbeam_token_swap.test.ts +++ b/test/fluxbeam_token_swap.test.ts @@ -1,6 +1,6 @@ import { PublicKey, Connection, Keypair } from "@solana/web3.js"; import { SolanaAgentKit } from "../src"; -import { fluxBeamSwap } from "../src/tools/fluxbeam_token_swap"; +import { fluxBeamSwap } from "../src/tools"; import { TOKENS } from "../src/constants"; (async () => { diff --git a/test/fluxbeam_withheld_amounts_tracking.test.ts b/test/fluxbeam_withheld_amounts_tracking.test.ts new file mode 100644 index 00000000..a5ebec69 --- /dev/null +++ b/test/fluxbeam_withheld_amounts_tracking.test.ts @@ -0,0 +1,45 @@ +import { PublicKey } from "@solana/web3.js"; +import { SolanaAgentKit } from "../src"; +import { TOKENS } from "../src/constants"; +import { fluxbeamGetClaimWitheldTokens, fluxbeamGetClaimWitheldTokensFromMint, fluxbeamGetClaimWithheldTokensToMint, fluxbeamTokenAirdrop } from "../src/tools"; + + +const testWithheldsAmountTracking = async () => { + const agent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + }, + ); + + let mint = new PublicKey("Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i"); + console.log(agent.wallet_address); + +// await fluxbeamGetClaimWitheldTokensFromMint( +// agent, +// mint, +// agent.wallet_address +// ); + +// await fluxbeamGetClaimWithheldTokensToMint( +// agent, +// mint, +// [new PublicKey("6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE"), +// new PublicKey("4BgGjf2tNzLJ6zG6BPFYcy3F9ArzoyYm8URf96dEsh1L")], +// ) + await fluxbeamGetClaimWitheldTokens( + agent, + mint, + agent.wallet_address, + [ + new PublicKey("6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE"), + new PublicKey("4BgGjf2tNzLJ6zG6BPFYcy3F9ArzoyYm8URf96dEsh1L"), + ], + agent.wallet_address, + ); +}; + +testWithheldsAmountTracking(); + +// // Example 2: Dynamic amount to token holders diff --git a/test/fluxbeam_wrap_and_unwrap_sol.test.ts b/test/fluxbeam_wrap_and_unwrap_sol.test.ts index ea99770c..db835d4e 100644 --- a/test/fluxbeam_wrap_and_unwrap_sol.test.ts +++ b/test/fluxbeam_wrap_and_unwrap_sol.test.ts @@ -1,5 +1,4 @@ -import { PublicKey } from "@solana/web3.js"; import { createSolanaTools, SolanaAgentKit } from "../src"; import { fluxbeamWrapSOL, fluxbeamUnwrapSOL} from "../src/tools"; @@ -18,9 +17,7 @@ import { PublicKey } from "@solana/web3.js"; 0.00012 ); - const signature2 = await fluxbeamUnwrapSOL( - solanaAgent, - ); + const signature2 = await fluxbeamUnwrapSOL(solanaAgent, 0.00012); console.log(`this is signature one ${signature1}`); From 440016cfc1804aa771ca9fd2fcb307041fa3576f Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Tue, 4 Feb 2025 16:43:15 +0100 Subject: [PATCH 05/11] deleted polyfills and irrelevant files --- package.json | 3 +- pnpm-lock.yaml | 2177 ++++++----------- src/actions/fluxbeam/bridgeToken.ts | 76 - src/actions/fluxbeam/burnToken.ts | 54 - src/actions/fluxbeam/createPool.ts | 109 +- src/actions/fluxbeam/createV1Token.ts | 54 - src/actions/fluxbeam/createV2Token.ts | 80 - .../fluxbeam/fluxbeamSubmitFeeClaim.ts | 47 - src/actions/fluxbeam/fluxbeamTransfer.ts | 88 - src/actions/fluxbeam/mintToken.ts | 99 - src/actions/fluxbeam/revokeMintAuthority.ts | 63 - src/actions/fluxbeam/setMintAuthority.ts | 62 - src/actions/fluxbeam/swapToken.ts | 56 + src/actions/fluxbeam/unwrapSol.ts | 37 - src/actions/fluxbeam/updateV1TokenMetadata.ts | 56 - src/actions/fluxbeam/updateV2TokenMetadata.ts | 78 - src/actions/fluxbeam/wrapSol.ts | 38 - src/actions/index.ts | 28 +- src/agent/index.ts | 245 -- src/constants/index.ts | 3 + src/langchain/fluxbeam/airdrop_tokens.ts | 0 src/langchain/fluxbeam/bridge_token.ts | 52 - src/langchain/fluxbeam/burn_token.ts | 45 - src/langchain/fluxbeam/create_token_v1.ts | 47 - src/langchain/fluxbeam/create_token_v2.ts | 65 - src/langchain/fluxbeam/fee_management.ts | 41 - src/langchain/fluxbeam/index.ts | 13 +- .../fluxbeam/{swap.ts => swap_token.ts} | 4 +- .../fluxbeam/token_minting_controls.ts | 138 -- src/langchain/fluxbeam/transfer.ts | 87 - .../fluxbeam/update_v1_token_metadata.ts | 44 - .../fluxbeam/update_v2_token_metadata.ts | 46 - .../fluxbeam/withheld_amounts_tracking.ts | 115 - src/langchain/fluxbeam/wrap_and_unwrap_sol.ts | 79 - src/langchain/index.ts | 33 +- src/langchain/solana/balance.ts | 1 - src/tools/fluxbeam/fluxbeam_bridge_tokens.ts | 115 - src/tools/fluxbeam/fluxbeam_burn_token.ts | 60 - src/tools/fluxbeam/fluxbeam_create_pool.ts | 23 +- src/tools/fluxbeam/fluxbeam_fee_management.ts | 55 - .../fluxbeam/fluxbeam_liquidity_management.ts | 0 src/tools/fluxbeam/fluxbeam_lock_token.ts | 422 ---- .../fluxbeam/fluxbeam_metadata_management.ts | 229 -- ...m_token_swap.ts => fluxbeam_swap_token.ts} | 30 +- src/tools/fluxbeam/fluxbeam_token_airdrop.ts | 342 --- .../fluxbeam_token_minting_controls.ts | 144 -- src/tools/fluxbeam/fluxbeam_transfer.ts | 131 - .../fluxbeam/fluxbeam_v1_token_creation.ts | 89 - .../fluxbeam/fluxbeam_v2_token_creation.ts | 480 ---- .../fluxbeam_withheld_amounts_tracking.ts | 211 -- .../fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts | 174 -- src/tools/fluxbeam/index.ts | 16 +- src/tools/index.ts | 13 +- .../{FluxbeamClient.ts => FluxbeamUtils.ts} | 95 +- test/addresses.csv | 3 - test/fluxbeam_bridge_tokens.test.ts | 31 - test/fluxbeam_burn_token.test.ts | 25 - test/fluxbeam_create_pool.test.ts | 32 - test/fluxbeam_create_token_v1.test.ts | 40 - test/fluxbeam_create_token_v2.test.ts | 68 - test/fluxbeam_fee_management.test.ts | 28 - test/fluxbeam_metadata_management.test.ts | 64 - test/fluxbeam_token_airdrop.test.ts | 47 - test/fluxbeam_token_minting_controls.test.ts | 91 - test/fluxbeam_token_swap.test.ts | 5 +- test/fluxbeam_transfer.test.ts | 42 - ...fluxbeam_withheld_amounts_tracking.test.ts | 45 - test/fluxbeam_wrap_and_unwrap_sol.test.ts | 28 - test/index.ts | 223 -- test/pic5.jpg | Bin 55568 -> 0 bytes 70 files changed, 1030 insertions(+), 6634 deletions(-) delete mode 100644 src/actions/fluxbeam/bridgeToken.ts delete mode 100644 src/actions/fluxbeam/burnToken.ts delete mode 100644 src/actions/fluxbeam/createV1Token.ts delete mode 100644 src/actions/fluxbeam/createV2Token.ts delete mode 100644 src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts delete mode 100644 src/actions/fluxbeam/fluxbeamTransfer.ts delete mode 100644 src/actions/fluxbeam/mintToken.ts delete mode 100644 src/actions/fluxbeam/revokeMintAuthority.ts delete mode 100644 src/actions/fluxbeam/setMintAuthority.ts create mode 100644 src/actions/fluxbeam/swapToken.ts delete mode 100644 src/actions/fluxbeam/unwrapSol.ts delete mode 100644 src/actions/fluxbeam/updateV1TokenMetadata.ts delete mode 100644 src/actions/fluxbeam/updateV2TokenMetadata.ts delete mode 100644 src/actions/fluxbeam/wrapSol.ts delete mode 100644 src/langchain/fluxbeam/airdrop_tokens.ts delete mode 100644 src/langchain/fluxbeam/bridge_token.ts delete mode 100644 src/langchain/fluxbeam/burn_token.ts delete mode 100644 src/langchain/fluxbeam/create_token_v1.ts delete mode 100644 src/langchain/fluxbeam/create_token_v2.ts delete mode 100644 src/langchain/fluxbeam/fee_management.ts rename src/langchain/fluxbeam/{swap.ts => swap_token.ts} (94%) delete mode 100644 src/langchain/fluxbeam/token_minting_controls.ts delete mode 100644 src/langchain/fluxbeam/transfer.ts delete mode 100644 src/langchain/fluxbeam/update_v1_token_metadata.ts delete mode 100644 src/langchain/fluxbeam/update_v2_token_metadata.ts delete mode 100644 src/langchain/fluxbeam/withheld_amounts_tracking.ts delete mode 100644 src/langchain/fluxbeam/wrap_and_unwrap_sol.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_bridge_tokens.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_burn_token.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_fee_management.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_liquidity_management.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_lock_token.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_metadata_management.ts rename src/tools/fluxbeam/{fluxbeam_token_swap.ts => fluxbeam_swap_token.ts} (75%) delete mode 100644 src/tools/fluxbeam/fluxbeam_token_airdrop.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_token_minting_controls.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_transfer.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_v1_token_creation.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_v2_token_creation.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts delete mode 100644 src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts rename src/utils/{FluxbeamClient.ts => FluxbeamUtils.ts} (51%) delete mode 100644 test/addresses.csv delete mode 100644 test/fluxbeam_bridge_tokens.test.ts delete mode 100644 test/fluxbeam_burn_token.test.ts delete mode 100644 test/fluxbeam_create_pool.test.ts delete mode 100644 test/fluxbeam_create_token_v1.test.ts delete mode 100644 test/fluxbeam_create_token_v2.test.ts delete mode 100644 test/fluxbeam_fee_management.test.ts delete mode 100644 test/fluxbeam_metadata_management.test.ts delete mode 100644 test/fluxbeam_token_airdrop.test.ts delete mode 100644 test/fluxbeam_token_minting_controls.test.ts delete mode 100644 test/fluxbeam_transfer.test.ts delete mode 100644 test/fluxbeam_withheld_amounts_tracking.test.ts delete mode 100644 test/fluxbeam_wrap_and_unwrap_sol.test.ts delete mode 100644 test/index.ts delete mode 100644 test/pic5.jpg diff --git a/package.json b/package.json index 7f1888b5..14830364 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "tsc", "docs": "typedoc src --out docs", - "test": "tsx test/index.ts", + "test": "tsx test/fluxbeam_token_swap.test.ts", "test:vercel-ai": "tsx test/agent_sdks/vercel_ai.ts", "generate": "tsx src/utils/keypair.ts", "lint": "eslint . --ext .ts", @@ -48,7 +48,6 @@ "@mayanfinance/swap-sdk": "^9.8.0", "@mercurial-finance/dynamic-amm-sdk": "^1.1.19", "@metaplex-foundation/digital-asset-standard-api": "^1.0.4", - "@mayanfinance/swap-sdk": "^9.8.0", "@metaplex-foundation/mpl-core": "^1.1.1", "@metaplex-foundation/mpl-token-metadata": "^3.3.0", "@metaplex-foundation/mpl-toolbox": "^0.9.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 985eba51..e784006c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,13 +19,13 @@ importers: version: 0.1.0 '@bonfida/spl-name-service': specifier: ^3.0.7 - version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 3.0.8(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@cks-systems/manifest-sdk': specifier: 0.1.59 - version: 0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@coral-xyz/anchor': specifier: '0.29' - version: 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + version: 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@drift-labs/sdk': specifier: 2.108.0-beta.4 version: 2.108.0-beta.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) @@ -34,19 +34,19 @@ importers: version: 0.3.2(@types/node@22.10.7)(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@langchain/core': specifier: ^0.3.26 - version: 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + version: 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) '@langchain/groq': specifier: ^0.1.2 - version: 0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) + version: 0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@langchain/langgraph': specifier: ^0.2.36 - version: 0.2.38(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) + version: 0.2.41(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.16 - version: 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) + version: 0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@lightprotocol/compressed-token': specifier: ^0.17.1 - version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': specifier: ^0.17.1 version: 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -55,13 +55,13 @@ importers: version: 9.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@mercurial-finance/dynamic-amm-sdk': specifier: ^1.1.19 - version: 1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@metaplex-foundation/digital-asset-standard-api': specifier: ^1.0.4 version: 1.0.4(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/mpl-core': specifier: ^1.1.1 - version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.0) + version: 1.2.0(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.1) '@metaplex-foundation/mpl-token-metadata': specifier: ^3.3.0 version: 3.3.0(@metaplex-foundation/umi@0.9.2) @@ -73,22 +73,22 @@ importers: 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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13) + version: 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@metaplex-foundation/umi-options': specifier: ^1.0.0 version: 1.0.0 '@metaplex-foundation/umi-uploader-irys': specifier: ^1.0.0 - version: 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@meteora-ag/alpha-vault': specifier: ^1.1.7 - version: 1.1.7(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 1.1.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@meteora-ag/dlmm': specifier: ^1.3.0 - version: 1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@onsol/tldparser': specifier: ^0.6.7 version: 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -97,25 +97,25 @@ importers: version: 5.2.0 '@orca-so/common-sdk': specifier: 0.6.4 - version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@orca-so/whirlpools-sdk': specifier: ^0.13.12 - version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@project-serum/anchor': specifier: ^0.26.0 - version: 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + version: 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/hermes-client': specifier: ^1.3.0 version: 1.3.0(axios@1.7.9) '@raydium-io/raydium-sdk-v2': specifier: 0.1.95-alpha - version: 0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/spl-token': specifier: ^0.4.9 - version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/spl-token-metadata': specifier: ^0.1.6 - version: 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + version: 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': specifier: ^1.98.0 version: 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -131,16 +131,16 @@ importers: version: 2.5.15(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tensor-oss/tensorswap-sdk': specifier: ^4.5.0 - version: 4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@tiplink/api': specifier: ^0.3.1 version: 0.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) '@voltr/vault-sdk': specifier: ^0.1.1 - version: 0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) ai: specifier: ^4.0.22 - version: 4.0.22(react@19.0.0)(zod@3.24.1) + version: 4.1.0(react@19.0.0)(zod@3.24.1) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -161,13 +161,13 @@ importers: version: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) flash-sdk: specifier: ^2.24.3 - version: 2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + version: 2.26.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) form-data: specifier: ^4.0.1 version: 4.0.1 langchain: specifier: ^0.3.8 - version: 0.3.9(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(cheerio@0.22.0)(encoding@0.1.13)(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + version: 0.3.12(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(axios@1.7.9)(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) openai: specifier: ^4.77.0 version: 4.77.3(encoding@0.1.13)(zod@3.24.1) @@ -177,7 +177,7 @@ importers: version: 1.0.18 typedoc: specifier: ^0.27.6 - version: 0.27.6(typescript@5.7.2) + version: 0.27.6(typescript@5.7.3) zod: specifier: ^3.24.1 version: 3.24.1 @@ -193,10 +193,10 @@ importers: version: 22.10.7 '@typescript-eslint/eslint-plugin': specifier: ^8.18.2 - version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) '@typescript-eslint/parser': specifier: ^8.18.2 - version: 8.19.0(eslint@8.57.1)(typescript@5.7.2) + version: 8.21.0(eslint@8.57.1)(typescript@5.7.3) eslint: specifier: ^8.56.0 version: 8.57.1 @@ -205,7 +205,7 @@ importers: version: 9.1.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.2(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) + version: 5.2.3(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) husky: specifier: ^9.1.7 version: 9.1.7 @@ -220,7 +220,7 @@ importers: version: 4.19.2 typescript: specifier: ^5.7.2 - version: 5.7.2 + version: 5.7.3 packages: @@ -230,14 +230,17 @@ packages: '@adraffy/ens-normalize@1.10.1': resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - '@ai-sdk/openai@1.0.11': - resolution: {integrity: sha512-qI9s7Slma5i5bB4yYVlFdcG3PNDwdqivPT1Dr8adDX92nSSpILjgFIooS5yys9sXjvvcfOi/WXbDvVhLSRRlvg==} + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@ai-sdk/openai@1.1.0': + resolution: {integrity: sha512-D2DaGMK89yYgO32n4Gr7gBJeJGGGS27gdfzYFMRDXlZmKh7VW1WXBp3FXxDwpmt0CgLoVI4qV8lf+gslah+kWw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/provider-utils@2.0.5': - resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} + '@ai-sdk/provider-utils@2.1.0': + resolution: {integrity: sha512-rBUabNoyB25PBUjaiMSk86fHNSCqTngNZVvXxv8+6mvw47JX5OexW+ZHRsEw8XKTE8+hqvNFVzctaOrRZ2i9Zw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -245,12 +248,12 @@ packages: zod: optional: true - '@ai-sdk/provider@1.0.3': - resolution: {integrity: sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==} + '@ai-sdk/provider@1.0.4': + resolution: {integrity: sha512-lJi5zwDosvvZER3e/pB8lj1MN3o3S7zJliQq56BRr4e9V3fcRyFtwP0JRxaRS5vHYX3OJ154VezVoQNrk0eaKw==} engines: {node: '>=18'} - '@ai-sdk/react@1.0.7': - resolution: {integrity: sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==} + '@ai-sdk/react@1.1.0': + resolution: {integrity: sha512-U5lBbLyf1pw79xsk5dgHSkBv9Jta3xzWlOLpxsmHlxh1X94QOH3e1gm+nioQ/JvTuHLm23j2tz3i4MpMdchwXQ==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -261,8 +264,8 @@ packages: zod: optional: true - '@ai-sdk/ui-utils@1.0.6': - resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} + '@ai-sdk/ui-utils@1.1.0': + resolution: {integrity: sha512-ETXwdHaHwzC7NIehbthDFGwsTFk+gNtRL/lm85nR4WDFvvYQptoM/7wTANs0p0H7zumB3Ep5hKzv0Encu8vSRw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -295,16 +298,16 @@ packages: peerDependencies: '@solana/web3.js': ^1.87.3 - '@bonfida/spl-name-service@3.0.7': - resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} + '@bonfida/spl-name-service@3.0.8': + resolution: {integrity: sha512-JsjQWLVYTY7ofVDdu5wNgVmRvqveJsTv0tEHTMGtyztsxlG37hxGJSTywX0P/u54MIzr0uaN5sA26m2cK0N/LA==} peerDependencies: '@solana/web3.js': ^1.87.3 '@brokerloop/ttlcache@3.2.3': resolution: {integrity: sha512-kZWoyJGBYTv1cL5oHBYEixlJysJBf2RVnub3gbclD+dwaW9aKubbHzbZ9q1q6bONosxaOqMsoBorOrZKzBDiqg==} - '@cfworker/json-schema@4.0.3': - resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} + '@cfworker/json-schema@4.1.0': + resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} '@cks-systems/manifest-sdk@0.1.59': resolution: {integrity: sha512-ZYTwwDxrC2u74kF30iWZPZPYXB9MtOydLd4/SQdlMXrb6bj1OooMtZxukSCu/Tlkp+KR26bEr6gYuErFHdUFjg==} @@ -532,38 +535,14 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.19.1': - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.9.1': - resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.5': - resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.4': - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} @@ -675,14 +654,6 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -696,14 +667,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} - engines: {node: '>=18.18'} - '@irys/arweave@0.0.2': resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} @@ -773,8 +736,8 @@ packages: resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} engines: {node: '>=18'} - '@langchain/groq@0.1.2': - resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} + '@langchain/groq@0.1.3': + resolution: {integrity: sha512-dMzvBVaLf/0IQoHdAOAN8W/PbOcwgbvgUMCn02CqvCC90mxZ45LI0Tipzqnoaam0hiKALR5hLc3dNj1oCYV92w==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' @@ -785,20 +748,20 @@ packages: peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' - '@langchain/langgraph-sdk@0.0.33': - resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} + '@langchain/langgraph-sdk@0.0.36': + resolution: {integrity: sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==} - '@langchain/langgraph@0.2.38': - resolution: {integrity: sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==} + '@langchain/langgraph@0.2.41': + resolution: {integrity: sha512-NeNizWP4k9voEwJxuFtfopF02Lx1isuEsdZKYCN3ueJpOnkVg0iGx8woPBsQpYcrWcySkIt3zOkgtUsrNHqo3g==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' - '@langchain/openai@0.3.16': - resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} + '@langchain/openai@0.3.17': + resolution: {integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag==} engines: {node: '>=18'} peerDependencies: - '@langchain/core': '>=0.2.26 <0.4.0' + '@langchain/core': '>=0.3.29 <0.4.0' '@langchain/textsplitters@0.1.0': resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} @@ -915,10 +878,10 @@ packages: '@metaplex-foundation/mpl-candy-machine@5.1.0': resolution: {integrity: sha512-pjHpUpWVOCDxK3l6dXxfmJKNQmbjBqnm5ElOl1mJAygnzO8NIPQvrP89y6xSNyo8qZsJyt4ZMYUyD0TdbtKZXQ==} - '@metaplex-foundation/mpl-core@1.1.1': - resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} + '@metaplex-foundation/mpl-core@1.2.0': + resolution: {integrity: sha512-gFWIJprd69JW4dxC4t1G9Q+GTTWQMS0ydDeegB2j7MNt82RLSvZn9Qw1ffmSMYEDOpLSLFkfPVeEGMzTbJ5Dwg==} peerDependencies: - '@metaplex-foundation/umi': '>=0.8.2 < 1' + '@metaplex-foundation/umi': '>=0.8.2 <= 1.0' '@noble/hashes': ^1.3.1 '@metaplex-foundation/mpl-token-metadata@2.13.0': @@ -1032,8 +995,8 @@ packages: '@metaplex-foundation/umi@0.9.2': resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} - '@meteora-ag/alpha-vault@1.1.7': - resolution: {integrity: sha512-wIfACyzT8XjMUxx/BKNtmb+nrn/jOne03tkVh5oEdTCas0dCCTHSjUZhkC7/X92+KjNNWckMGmHutE6EZzYdIA==} + '@meteora-ag/alpha-vault@1.1.8': + resolution: {integrity: sha512-qfkAKkFa6LghbgGKbNhJS8eIJi16YOMvN/RC3j2L7ukGWONcVVeTW6E4j9Jok7hxc0kzlFhUWemO7XEV6HuV8A==} '@meteora-ag/dlmm@1.3.0': resolution: {integrity: sha512-k3VdtisuNaSavTY+M8vLsB3wqqpC/dyFPujp6MScz85Nj0Beuua6PRg5XSjzhAt8rbuXcnTSKWCTYzc24UMHmA==} @@ -1104,8 +1067,8 @@ packages: '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - '@noble/curves@1.8.0': - resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} + '@noble/curves@1.8.1': + resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} engines: {node: ^14.21.3 || >=16} '@noble/ed25519@1.7.3': @@ -1133,8 +1096,8 @@ packages: resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@1.7.0': - resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} + '@noble/hashes@1.7.1': + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} engines: {node: ^14.21.3 || >=16} '@nodelib/fs.scandir@2.1.5': @@ -1292,14 +1255,14 @@ packages: '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - '@scure/base@1.2.1': - resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} + '@scure/base@1.2.4': + resolution: {integrity: sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==} '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - '@scure/bip32@1.6.1': - resolution: {integrity: sha512-jSO+5Ud1E588Y+LFo8TaB8JVPNAZw/lGGao+1SepHDeTs2dFLurdNIAgUuDlwezqEjRjElkCJajVrtrZaBxvaQ==} + '@scure/bip32@1.6.2': + resolution: {integrity: sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==} '@scure/bip39@1.1.0': resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} @@ -1307,26 +1270,26 @@ packages: '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - '@scure/bip39@1.5.1': - resolution: {integrity: sha512-GnlufVSP9UdAo/H2Patfv22VTtpNTyfi+I3qCKpvuB5l1KWzEYx+l2TNpBy9Ksh4xTs3Rn06tBlpWCi/1Vz8gw==} + '@scure/bip39@1.5.4': + resolution: {integrity: sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==} - '@shikijs/core@1.27.2': - resolution: {integrity: sha512-ns1dokDr0KE1lQ9mWd4rqaBkhSApk0qGCK1+lOqwnkQSkVZ08UGqXj1Ef8dAcTMZNFkN6PSNjkL5TYNX7pyPbQ==} + '@shikijs/core@1.29.1': + resolution: {integrity: sha512-Mo1gGGkuOYjDu5H8YwzmOuly9vNr8KDVkqj9xiKhhhFS8jisAtDSEWB9hzqRHLVQgFdA310e8XRJcW4tYhRB2A==} - '@shikijs/engine-javascript@1.27.2': - resolution: {integrity: sha512-0JB7U5vJc16NShBdxv9hSSJYSKX79+32O7F4oXIxJLdYfomyFvx4B982ackUI9ftO9T3WwagkiiD3nOxOOLiGA==} + '@shikijs/engine-javascript@1.29.1': + resolution: {integrity: sha512-Hpi8k9x77rCQ7F/7zxIOUruNkNidMyBnP5qAGbLFqg4kRrg1HZhkB8btib5EXbQWTtLb5gBHOdBwshk20njD7Q==} - '@shikijs/engine-oniguruma@1.27.2': - resolution: {integrity: sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==} + '@shikijs/engine-oniguruma@1.29.1': + resolution: {integrity: sha512-gSt2WhLNgEeLstcweQOSp+C+MhOpTsgdNXRqr3zP6M+BUBZ8Md9OU2BYwUYsALBxHza7hwaIWtFHjQ/aOOychw==} - '@shikijs/langs@1.27.2': - resolution: {integrity: sha512-MSrknKL0DbeXvhtSigMLIzjPOOQfvK7fsbcRv2NUUB0EvuTTomY8/U+lAkczYrXY2+dygKOapJKk8ScFYbtoNw==} + '@shikijs/langs@1.29.1': + resolution: {integrity: sha512-iERn4HlyuT044/FgrvLOaZgKVKf3PozjKjyV/RZ5GnlyYEAZFcgwHGkYboeBv2IybQG1KVS/e7VGgiAU4JY2Gw==} - '@shikijs/themes@1.27.2': - resolution: {integrity: sha512-Yw/uV7EijjWavIIZLoWneTAohcbBqEKj6XMX1bfMqO3llqTKsyXukPp1evf8qPqzUHY7ibauqEaQchhfi857mg==} + '@shikijs/themes@1.29.1': + resolution: {integrity: sha512-lb11zf72Vc9uxkl+aec2oW1HVTHJ2LtgZgumb4Rr6By3y/96VmlU44bkxEb8WBWH3RUtbqAJEN0jljD9cF7H7g==} - '@shikijs/types@1.27.2': - resolution: {integrity: sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==} + '@shikijs/types@1.29.1': + resolution: {integrity: sha512-aBqAuhYRp5vSir3Pc9+QPu9WESBOjUo03ao0IHLC4TyTioSsp/SkbAZSrIH4ghYYC1T1KTEpRSBa83bas4RnPA==} '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} @@ -1541,8 +1504,8 @@ packages: peerDependencies: '@solana/web3.js': ^1.77.3 - '@solana/wallet-standard-features@1.2.0': - resolution: {integrity: sha512-tUd9srDLkRpe1BYg7we+c4UhRQkq+XQWswsr/L1xfGmoRDF47BPSXf4zE7ZU2GRBGvxtGt7lwJVAufQyQYhxTQ==} + '@solana/wallet-standard-features@1.3.0': + resolution: {integrity: sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==} engines: {node: '>=16'} '@solana/web3.js@1.77.4': @@ -1592,8 +1555,8 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@tensor-hq/tensor-common@8.3.1': - resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} + '@tensor-hq/tensor-common@8.3.2': + resolution: {integrity: sha512-gU+5Qby4vqcHvGzBOPiYHa4okNoTd8NRsNCQCbBQo2VdF2ITwRdqW759tricdmvwhISDmuo7r+mWp0/MDmnrNA==} '@tensor-oss/tensorswap-sdk@4.5.0': resolution: {integrity: sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==} @@ -1644,9 +1607,6 @@ packages: '@types/diff-match-patch@1.0.36': resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -1683,13 +1643,11 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.69': - resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} + '@types/node@18.19.71': + resolution: {integrity: sha512-evXpcgtZm8FY4jqBSN8+DmOTcVkkvTmAayeo4Wf3m1xAruyVGzGuDh/Fb/WWX2yLItUiho42ozyJjB0dw//Tkw==} - '@types/node@20.17.13': - resolution: {integrity: sha512-RNf+4dEeV69PIvyp++4IKM2vnLXtmp/JovfeQm5P5+qpKb6wHoH7INywLdZ7z+gVX46kgBP/fwJJvZYaHxtdyw==} - '@types/node@20.17.11': - resolution: {integrity: sha512-Ept5glCK35R8yeyIeYlRIZtX6SLRyqMhOFTgj5SOkMpLTdw3SEHI9fHx60xaUZ+V1aJxQJODE+7/j5ocZydYTg==} + '@types/node@20.17.14': + resolution: {integrity: sha512-w6qdYetNL5KRBiSClK/KWai+2IMEJuAj+EujKCumalFOwXtvOXaEan9AuwcRID2IcOIAWSIfR495hBtgKlx2zg==} '@types/node@22.10.7': resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} @@ -1739,51 +1697,51 @@ packages: '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - '@typescript-eslint/eslint-plugin@8.19.0': - resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} + '@typescript-eslint/eslint-plugin@8.21.0': + resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.19.0': - resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} + '@typescript-eslint/parser@8.21.0': + resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.19.0': - resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} + '@typescript-eslint/scope-manager@8.21.0': + resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.0': - resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} + '@typescript-eslint/type-utils@8.21.0': + resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.19.0': - resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} + '@typescript-eslint/types@8.21.0': + resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.0': - resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} + '@typescript-eslint/typescript-estree@8.21.0': + resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.19.0': - resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} + '@typescript-eslint/utils@8.21.0': + resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.19.0': - resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} + '@typescript-eslint/visitor-keys@8.21.0': + resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.1': @@ -1845,8 +1803,8 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - ai@4.0.22: - resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} + ai@4.1.0: + resolution: {integrity: sha512-95nI9hBSSAKPrMnpJbaB3yqvh+G8BS4/EtFz3HR0HgEDJpxC0R6JAlB8+B/BXHd/roNGBrS08Z3Zain/6OFSYA==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -2057,9 +2015,6 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -2187,13 +2142,6 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - cheerio@0.22.0: - resolution: {integrity: sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==} - engines: {node: '>= 0.6'} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - cipher-base@1.0.6: resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} engines: {node: '>= 0.10'} @@ -2275,6 +2223,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + console-table-printer@2.12.1: + resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} + content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -2326,12 +2277,6 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - css-select@1.2.0: - resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} - - css-what@2.1.3: - resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} - csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} @@ -2475,21 +2420,6 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - dom-serializer@0.1.1: - resolution: {integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==} - - domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - - domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} - - domutils@1.5.1: - resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} - - domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -2547,15 +2477,9 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2617,8 +2541,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.2.2: - resolution: {integrity: sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==} + eslint-plugin-prettier@5.2.3: + resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -2635,10 +2559,6 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2653,20 +2573,6 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2772,8 +2678,8 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -2803,10 +2709,6 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2818,8 +2720,8 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-process@1.4.8: - resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} + find-process@1.4.10: + resolution: {integrity: sha512-ncYFnWEIwL7PzmrK1yZtaccN8GhethD37RzBHG6iOZoFYB4vSmLLXfeWJjeN5nMvCJMjOtBvBBF8OgxEcikiZg==} hasBin: true find-up@5.0.0: @@ -2829,17 +2731,13 @@ packages: find@0.3.0: resolution: {integrity: sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==} - flash-sdk@2.25.3: - resolution: {integrity: sha512-0yKh40xgjNKjG/iOnnQqdEiXjLTUdaRVzLTDigcHvyDG5Kc9P5VCqqRdjxZ7XNdEFyZPvlspVD9p7ixS97hOUA==} + flash-sdk@2.26.1: + resolution: {integrity: sha512-zBZZFxHeYQYb2c1XWsghTWLim3kQFuBXlAt6Y1QpXn3OQJp6KoxpaB6UzIOXO/5IWB99/r20AOZIIzHfAxiJ3A==} flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} @@ -2941,8 +2839,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} git-package-json@1.4.10: resolution: {integrity: sha512-DRAcvbzd2SxGK7w8OgYfvKqhFliT5keX0lmSmVdgScgf1kkl5tbbo7Pam6uYoCa1liOiipKxQZG8quCtGWl/fA==} @@ -2971,11 +2869,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} - engines: {node: 20 || >=22} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2984,10 +2877,6 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3059,9 +2948,6 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} - http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -3097,10 +2983,6 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3262,10 +3144,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} - engines: {node: 20 || >=22} - jayson@4.1.3: resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} engines: {node: '>=8'} @@ -3358,8 +3236,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.9: - resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} + langchain@0.3.12: + resolution: {integrity: sha512-BjdQ/f/66W05L8nRgX74bf5QvJIphpg+K5ZTmQwGE8Gk3umtzHp8T4YIRFYjvTxU4XQrGXOgWk1Y9rk5uBbjKA==} engines: {node: '>=18'} peerDependencies: '@langchain/anthropic': '*' @@ -3369,6 +3247,7 @@ packages: '@langchain/core': '>=0.2.21 <0.4.0' '@langchain/google-genai': '*' '@langchain/google-vertexai': '*' + '@langchain/google-vertexai-web': '*' '@langchain/groq': '*' '@langchain/mistralai': '*' '@langchain/ollama': '*' @@ -3390,6 +3269,8 @@ packages: optional: true '@langchain/google-vertexai': optional: true + '@langchain/google-vertexai-web': + optional: true '@langchain/groq': optional: true '@langchain/mistralai': @@ -3407,8 +3288,8 @@ packages: typeorm: optional: true - langsmith@0.2.14: - resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} + langsmith@0.3.1: + resolution: {integrity: sha512-4xkKuav39KppGEsIYJ22CtN8WWrei0rUuBiyjTfjR/q9AOs+ybzpKXB5VLXjphJrgAsg8GOfiDXJu6CazuOgVA==} peerDependencies: openai: '*' peerDependenciesMeta: @@ -3458,51 +3339,18 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.assignin@4.2.0: - resolution: {integrity: sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==} - - lodash.bind@4.2.1: - resolution: {integrity: sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==} - lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.filter@4.6.0: - resolution: {integrity: sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==} - - lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - - lodash.foreach@4.5.0: - resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} - lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - lodash.map@4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} - - lodash.reduce@4.6.0: - resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} - - lodash.reject@4.6.0: - resolution: {integrity: sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==} - - lodash.some@4.6.0: - resolution: {integrity: sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==} - lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -3542,10 +3390,6 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -3663,10 +3507,6 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3745,8 +3585,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.72.0: - resolution: {integrity: sha512-a28z9xAQXvDh40lVCknWCP5zYTZt6Av8HZqZ63U5OWxTcP20e3oOIy8yHkYfctQM2adR8ru1GxWCkS0gS+WYKA==} + node-abi@3.73.0: + resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} engines: {node: '>=10'} node-addon-api@2.0.2: @@ -3817,9 +3657,6 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@1.0.2: - resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} - number-to-bn@1.7.0: resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -3872,15 +3709,18 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-to-es@2.1.0: - resolution: {integrity: sha512-Iq/949c5IueVC5gQR7OYXs0uHsDIePcgZFlVRIVGfQcWwbKG+nsyWfthswdytShlRdkZADY+bWSi+BRyUL81gA==} + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} - openai@4.77.3: - resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} + openai@4.79.2: + resolution: {integrity: sha512-hn2CpJGnw2fsZqzM5fuykrdzKzd5LopgvEBtABq6kERNqJe1F20866mcwjceL8lepBlr/t7NbQS/j6jpBb7hmQ==} hasBin: true peerDependencies: + ws: ^8.18.0 zod: ^3.23.8 peerDependenciesMeta: + ws: + optional: true zod: optional: true @@ -3988,10 +3828,6 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -4230,11 +4066,6 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -4324,8 +4155,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.27.2: - resolution: {integrity: sha512-QtA1C41oEVixKog+V8I3ia7jjGls7oCZ8Yul8vdHrVBga5uPoyTtMvFF4lMMXIyAZo5A5QbXq91bot2vA6Q+eQ==} + shiki@1.29.1: + resolution: {integrity: sha512-TghWKV9pJTd/N+IgAIVJtr0qZkB7FfFCUrrEJc0aRmZupo3D1OCVRknQWVRVA7AX/M0Ld7QfoAruPzr3CnUJuw==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -4356,6 +4187,9 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-wcswidth@1.0.1: + resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -4423,8 +4257,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} @@ -4620,11 +4454,11 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -5008,13 +4842,10 @@ snapshots: '@3land/listings-sdk@0.0.7(@types/node@22.10.7)(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@irys/sdk': 0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@irys/sdk': 0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@project-serum/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -5027,7 +4858,7 @@ snapshots: fs: 0.0.1-security irys: 0.0.1 node-fetch: 3.3.2 - ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.7.2) + ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.7.3) tweetnacl: 1.0.3 transitivePeerDependencies: - '@swc/core' @@ -5044,39 +4875,39 @@ snapshots: '@adraffy/ens-normalize@1.10.1': {} - '@ai-sdk/openai@1.0.11(zod@3.24.1)': + '@ai-sdk/openai@1.1.0(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.3 - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) + '@ai-sdk/provider': 1.0.4 + '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) zod: 3.24.1 - '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': + '@ai-sdk/provider-utils@2.1.0(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider': 1.0.4 eventsource-parser: 3.0.0 nanoid: 3.3.8 secure-json-parse: 2.7.0 optionalDependencies: zod: 3.24.1 - '@ai-sdk/provider@1.0.3': + '@ai-sdk/provider@1.0.4': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.0.7(react@19.0.0)(zod@3.24.1)': + '@ai-sdk/react@1.1.0(react@19.0.0)(zod@3.24.1)': dependencies: - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) + '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) + '@ai-sdk/ui-utils': 1.1.0(zod@3.24.1) swr: 2.3.0(react@19.0.0) throttleit: 2.1.0 optionalDependencies: react: 19.0.0 zod: 3.24.1 - '@ai-sdk/ui-utils@1.0.6(zod@3.24.1)': + '@ai-sdk/ui-utils@1.1.0(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.3 - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) + '@ai-sdk/provider': 1.0.4 + '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: zod: 3.24.1 @@ -5101,10 +4932,10 @@ snapshots: dependencies: '@aptos-labs/aptos-cli': 1.0.2 '@aptos-labs/aptos-client': 0.1.1 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@scure/bip32': 1.6.1 - '@scure/bip39': 1.5.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@scure/bip32': 1.6.2 + '@scure/bip39': 1.5.4 eventemitter3: 5.0.1 form-data: 4.0.1 js-base64: 3.7.7 @@ -5117,20 +4948,20 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@bonfida/sns-records@0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) borsh: 1.0.0 bs58: 5.0.0 buffer: 6.0.3 - '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@bonfida/spl-name-service@3.0.8(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.0 - '@scure/base': 1.2.1 - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@noble/curves': 1.8.1 + '@scure/base': 1.2.4 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) borsh: 2.0.0 buffer: 6.0.3 graphemesplit: 2.4.4 @@ -5147,15 +4978,15 @@ snapshots: dependencies: '@soncodi/signal': 2.0.7 - '@cfworker/json-schema@4.0.3': {} + '@cfworker/json-schema@4.1.0': {} - '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 borsh: 0.7.0 bs58: 6.0.0 @@ -5166,30 +4997,29 @@ snapshots: percentile: 1.6.0 prom-client: 15.1.3 rimraf: 5.0.10 - typedoc: 0.26.11(typescript@5.7.2) + typedoc: 0.26.11(typescript@5.7.3) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zstddec: 0.0.2 transitivePeerDependencies: - bufferutil - encoding - fastestsmallesttextencoderdecoder - - jiti - supports-color - typescript - utf-8-validate '@coral-xyz/anchor-errors@0.30.1': {} - '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) + cross-fetch: 3.2.0 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -5202,16 +5032,16 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.27.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) + cross-fetch: 3.2.0 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -5224,16 +5054,16 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.28.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) + cross-fetch: 3.2.0 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -5246,16 +5076,16 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.7.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) + cross-fetch: 3.2.0 crypto-hash: 1.3.0 eventemitter3: 4.0.7 pako: 2.1.0 @@ -5267,17 +5097,17 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor-errors': 0.30.1 - '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.7.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.7.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.2.0(encoding@0.1.13) + cross-fetch: 3.2.0 crypto-hash: 1.3.0 eventemitter3: 4.0.7 pako: 2.1.0 @@ -5289,39 +5119,39 @@ snapshots: - encoding - utf-8-validate - '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.26.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.27.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@coral-xyz/borsh@0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 @@ -5331,24 +5161,24 @@ snapshots: '@drift-labs/sdk@2.108.0-beta.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)' - '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' + '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@grpc/grpc-js': 1.12.5 - '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/price-service-sdk': 1.7.1 - '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) + '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@triton-one/yellowstone-grpc': 1.3.0 - anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) nanoid: 3.3.4 node-cache: 5.1.2 rpc-websockets: 7.5.1 - solana-bankrun: 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + solana-bankrun: 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) strict-event-emitter-types: 2.0.0 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -5360,31 +5190,30 @@ snapshots: - debug - encoding - fastestsmallesttextencoderdecoder - - jiti - supports-color - typescript - utf-8-validate '@drift-labs/sdk@2.108.0-beta.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)' - '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' + '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@grpc/grpc-js': 1.12.5 - '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/price-service-sdk': 1.7.1 - '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) + '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@triton-one/yellowstone-grpc': 1.3.0 - anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) nanoid: 3.3.4 node-cache: 5.1.2 rpc-websockets: 7.5.1 - solana-bankrun: 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + solana-bankrun: 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) strict-event-emitter-types: 2.0.0 tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 @@ -5396,7 +5225,6 @@ snapshots: - debug - encoding - fastestsmallesttextencoderdecoder - - jiti - supports-color - typescript - utf-8-validate @@ -5408,9 +5236,9 @@ snapshots: '@ledgerhq/hw-app-solana': 7.2.4 '@ledgerhq/hw-transport': 6.31.4 '@ledgerhq/hw-transport-node-hid': 6.29.5 - '@metaplex-foundation/js': 0.20.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/js': 0.20.1(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) commander: 11.1.0 dotenv: 16.4.5 rpc-websockets: 7.5.1 @@ -5426,37 +5254,16 @@ snapshots: - debug - encoding - fastestsmallesttextencoderdecoder - - jiti - - supports-color - - utf-8-validate - - '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - dependencies: - '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@types/node': 18.19.69 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 5.0.0 - transitivePeerDependencies: - - '@solana/web3.js' - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - jiti - supports-color - - typescript - utf-8-validate - '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 - '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@types/node': 18.19.69 + '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@types/node': 18.19.71 bn.js: 5.2.1 borsh: 0.7.0 bs58: 5.0.0 @@ -5464,10 +5271,7 @@ snapshots: - '@solana/web3.js' - bufferutil - encoding - - fastestsmallesttextencoderdecoder - - jiti - supports-color - - typescript - utf-8-validate '@esbuild/aix-ppc64@0.23.1': @@ -5547,25 +5351,8 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0)': - dependencies: - eslint: 9.17.0 - eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.19.1': - dependencies: - '@eslint/object-schema': 2.1.5 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.9.1': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -5580,30 +5367,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/eslintrc@3.2.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/js@8.57.1': {} - '@eslint/js@9.17.0': {} - - '@eslint/object-schema@2.1.5': {} - - '@eslint/plugin-kit@0.2.4': - dependencies: - levn: 0.4.1 - '@ethereumjs/rlp@4.0.1': {} '@ethereumjs/util@8.1.0': @@ -5854,8 +5619,8 @@ snapshots: '@gerrit0/mini-shiki@1.27.2': dependencies: - '@shikijs/engine-oniguruma': 1.27.2 - '@shikijs/types': 1.27.2 + '@shikijs/engine-oniguruma': 1.29.1 + '@shikijs/types': 1.29.1 '@shikijs/vscode-textmate': 10.0.1 '@grpc/grpc-js@1.12.5': @@ -5876,13 +5641,6 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -5895,10 +5653,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.1': {} - '@irys/arweave@0.0.2': dependencies: asn1.js: 5.4.1 @@ -5919,7 +5673,7 @@ snapshots: transitivePeerDependencies: - debug - '@irys/bundles@0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@irys/bundles@0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -5927,7 +5681,7 @@ snapshots: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wallet': 5.7.0 - '@irys/arweave': 0.0.2(debug@4.4.0) + '@irys/arweave': 0.0.2 '@noble/ed25519': 1.7.3 base64url: 3.0.1 bs58: 4.0.1 @@ -5935,7 +5689,7 @@ snapshots: secp256k1: 5.0.1 optionalDependencies: '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1(encoding@0.1.13) + algosdk: 1.24.1 arweave-stream-tx: 1.2.2(arweave@1.15.5) multistream: 4.1.0 tmp-promise: 3.0.3 @@ -5963,11 +5717,11 @@ snapshots: '@irys/query@0.0.9': dependencies: async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 transitivePeerDependencies: - debug - '@irys/sdk@0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@irys/sdk@0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/contracts': 5.7.0 @@ -5976,13 +5730,13 @@ snapshots: '@irys/query': 0.0.1(debug@4.4.0) '@near-js/crypto': 0.0.3 '@near-js/keystores-browser': 0.0.3 - '@near-js/providers': 0.0.4(encoding@0.1.13) + '@near-js/providers': 0.0.4 '@near-js/transactions': 0.1.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@supercharge/promise-pool': 3.2.0 - algosdk: 1.24.1(encoding@0.1.13) + algosdk: 1.24.1 aptos: 1.8.5(debug@4.4.0) - arbundles: 0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10) + arbundles: 0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10) async-retry: 1.3.3 axios: 1.7.9(debug@4.4.0) base64url: 3.0.1 @@ -6001,7 +5755,7 @@ snapshots: - encoding - utf-8-validate - '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@irys/sdk@0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@aptos-labs/ts-sdk': 1.33.1 '@ethersproject/bignumber': 5.7.0 @@ -6011,12 +5765,12 @@ snapshots: '@irys/query': 0.0.8 '@near-js/crypto': 0.0.3 '@near-js/keystores-browser': 0.0.3 - '@near-js/providers': 0.0.4(encoding@0.1.13) + '@near-js/providers': 0.0.4 '@near-js/transactions': 0.1.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@supercharge/promise-pool': 3.2.0 - algosdk: 1.24.1(encoding@0.1.13) - arbundles: 0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + algosdk: 1.24.1 + arbundles: 0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 axios: 1.7.9 base64url: 3.0.1 @@ -6036,13 +5790,13 @@ snapshots: - encoding - utf-8-validate - '@irys/upload-core@0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@irys/upload-core@0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@irys/query': 0.0.9 '@supercharge/promise-pool': 3.2.0 async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 base64url: 3.0.1 bignumber.js: 9.1.2 transitivePeerDependencies: @@ -6052,13 +5806,13 @@ snapshots: - encoding - utf-8-validate - '@irys/upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@irys/upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 bignumber.js: 9.1.2 bs58: 5.0.0 @@ -6072,12 +5826,12 @@ snapshots: - typescript - utf-8-validate - '@irys/upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@irys/upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 base64url: 3.0.1 bignumber.js: 9.1.2 csv-parse: 5.6.0 @@ -6091,13 +5845,13 @@ snapshots: - encoding - utf-8-validate - '@irys/web-upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@irys/web-upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 bignumber.js: 9.1.2 bs58: 5.0.0 @@ -6111,12 +5865,12 @@ snapshots: - typescript - utf-8-validate - '@irys/web-upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@irys/web-upload@0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 - axios: 1.7.9(debug@4.4.0) + axios: 1.7.9 base64url: 3.0.1 bignumber.js: 9.1.2 mime-types: 2.1.35 @@ -6152,12 +5906,12 @@ snapshots: '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': dependencies: - '@cfworker/json-schema': 4.0.3 + '@cfworker/json-schema': 4.1.0 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.16 - langsmith: 0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + langsmith: 0.3.1(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -6167,49 +5921,51 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': + '@langchain/groq@0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - groq-sdk: 0.5.0(encoding@0.1.13) + '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + groq-sdk: 0.5.0 zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding + - ws - '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) uuid: 10.0.0 - '@langchain/langgraph-sdk@0.0.33': + '@langchain/langgraph-sdk@0.0.36': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 - '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': + '@langchain/langgraph@0.2.41(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) - '@langchain/langgraph-sdk': 0.0.33 + '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.36 uuid: 10.0.0 zod: 3.24.1 - '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13)': + '@langchain/openai@0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) js-tiktoken: 1.0.16 - openai: 4.77.3(encoding@0.1.13)(zod@3.24.1) + openai: 4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding + - ws - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) js-tiktoken: 1.0.16 '@ledgerhq/devices@6.27.1': @@ -6275,12 +6031,12 @@ snapshots: '@ledgerhq/logs@6.12.0': {} - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 tweetnacl: 1.0.3 transitivePeerDependencies: @@ -6290,11 +6046,11 @@ snapshots: - typescript - utf-8-validate - '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@noble/hashes': 1.5.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 superstruct: 2.0.2 tweetnacl: 1.0.3 @@ -6322,12 +6078,12 @@ snapshots: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@mercurial-finance/token-math': 6.0.0 - '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@meteora-ag/stake-for-fee': 1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@meteora-ag/stake-for-fee': 1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.24.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/spl-token-registry': 0.2.4574 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn-sqrt: 1.0.0 @@ -6343,17 +6099,17 @@ snapshots: - typescript - utf-8-validate - '@mercurial-finance/dynamic-amm-sdk@1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@mercurial-finance/dynamic-amm-sdk@1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@mercurial-finance/token-math': 6.0.0 - '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@meteora-ag/m3m3': 1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@meteora-ag/m3m3': 1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.24.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/spl-token-registry': 0.2.4574 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn-sqrt: 1.0.0 @@ -6376,11 +6132,11 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 - '@mercurial-finance/vault-sdk@2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@mercurial-finance/vault-sdk@2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/spl-token-registry': 0.2.4574 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 @@ -6397,7 +6153,7 @@ snapshots: '@metaplex-foundation/beet-solana@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 5.0.0 debug: 4.4.0 transitivePeerDependencies: @@ -6406,10 +6162,10 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@metaplex-foundation/beet-solana@0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 5.0.0 debug: 4.4.0 transitivePeerDependencies: @@ -6418,10 +6174,10 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@metaplex-foundation/beet-solana@0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 5.0.0 debug: 4.4.0 transitivePeerDependencies: @@ -6472,19 +6228,19 @@ snapshots: '@metaplex-foundation/js@0.20.1(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@irys/sdk': 0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@irys/sdk': 0.0.2(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10) '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.6.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-candy-guard': 0.3.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-candy-machine': 5.1.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-candy-machine-core': 0.1.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.6.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-candy-guard': 0.3.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-candy-machine': 5.1.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-candy-machine-core': 0.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@noble/ed25519': 1.7.3 - '@noble/hashes': 1.7.0 - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@noble/hashes': 1.7.1 + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bignumber.js: 9.1.2 bn.js: 5.2.1 bs58: 5.0.0 @@ -6495,7 +6251,7 @@ snapshots: lodash.isequal: 4.5.0 merkletreejs: 0.3.11 mime: 3.0.0 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 transitivePeerDependencies: - arweave - bufferutil @@ -6505,13 +6261,13 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6521,13 +6277,13 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6537,15 +6293,15 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-bubblegum@0.6.2(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-bubblegum@0.6.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 js-sha3: 0.8.0 transitivePeerDependencies: @@ -6556,15 +6312,15 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) js-sha3: 0.8.0 transitivePeerDependencies: - bufferutil @@ -6574,12 +6330,12 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-candy-guard@0.3.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-candy-guard@0.3.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6587,12 +6343,12 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/mpl-candy-machine-core@0.1.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-candy-machine-core@0.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: - bufferutil @@ -6600,13 +6356,13 @@ snapshots: - supports-color - utf-8-validate - '@metaplex-foundation/mpl-candy-machine@5.1.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-candy-machine@5.1.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -6615,19 +6371,19 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.0)': + '@metaplex-foundation/mpl-core@1.2.0(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.1)': dependencies: '@metaplex-foundation/umi': 0.9.2 '@msgpack/msgpack': 3.0.0-beta2 - '@noble/hashes': 1.7.0 + '@noble/hashes': 1.7.1 - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: @@ -6638,13 +6394,13 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 debug: 4.4.0 transitivePeerDependencies: @@ -6673,12 +6429,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@metaplex-foundation/solita@0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.4.0 - '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/rustbin': 0.3.5 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) camelcase: 6.3.0 debug: 4.4.0 js-sha256: 0.9.0 @@ -6688,22 +6444,21 @@ snapshots: transitivePeerDependencies: - bufferutil - encoding - - jiti - supports-color - utf-8-validate - '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(encoding@0.1.13)': + '@metaplex-foundation/umi-bundle-defaults@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@metaplex-foundation/umi-http-fetch': 0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13) + '@metaplex-foundation/umi-eddsa-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@metaplex-foundation/umi-rpc-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-transaction-factory-web3js': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - encoding @@ -6711,17 +6466,17 @@ snapshots: 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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-eddsa-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@noble/curves': 1.8.1 + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)(encoding@0.1.13)': + '@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(encoding@0.1.13) + node-fetch: 2.7.0 transitivePeerDependencies: - encoding @@ -6741,11 +6496,11 @@ snapshots: 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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-rpc-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/umi-serializer-data-view@0.9.2(@metaplex-foundation/umi@0.9.2)': dependencies: @@ -6769,21 +6524,21 @@ snapshots: '@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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-transaction-factory-web3js@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(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.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/umi-uploader-irys@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@metaplex-foundation/umi-uploader-irys@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@irys/web-upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@irys/web-upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@metaplex-foundation/umi': 0.9.2 - '@metaplex-foundation/umi-web3js-adapters': 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/umi-web3js-adapters': 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@supercharge/promise-pool': 3.2.0 bignumber.js: 9.1.2 buffer: 6.0.3 @@ -6796,16 +6551,16 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-web3js-adapters@0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 - '@metaplex-foundation/umi-web3js-adapters@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@metaplex-foundation/umi-web3js-adapters@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@metaplex-foundation/umi': 0.9.2 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 '@metaplex-foundation/umi@0.9.2': @@ -6814,13 +6569,13 @@ snapshots: '@metaplex-foundation/umi-public-keys': 0.8.9 '@metaplex-foundation/umi-serializers': 0.9.0 - '@meteora-ag/alpha-vault@1.1.7(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@meteora-ag/alpha-vault@1.1.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@mercurial-finance/dynamic-amm-sdk': 1.1.19(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@meteora-ag/dlmm': 1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@mercurial-finance/dynamic-amm-sdk': 1.1.19(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@meteora-ag/dlmm': 1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/node': 22.10.7 decimal.js: 10.4.3 @@ -6835,12 +6590,12 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/dlmm@1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@meteora-ag/dlmm@1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6854,13 +6609,13 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/dlmm@1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@meteora-ag/dlmm@1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6874,12 +6629,12 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/m3m3@1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@meteora-ag/m3m3@1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6890,11 +6645,11 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/stake-for-fee@1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@meteora-ag/stake-for-fee@1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6909,10 +6664,6 @@ snapshots: '@msgpack/msgpack@3.0.0-beta2': {} - '@noble/curves@1.2.0': - dependencies: - '@noble/hashes': 1.3.2 - '@near-js/crypto@0.0.3': dependencies: '@near-js/types': 0.0.3 @@ -6942,7 +6693,7 @@ snapshots: '@near-js/crypto': 0.0.4 '@near-js/types': 0.0.4 - '@near-js/providers@0.0.4(encoding@0.1.13)': + '@near-js/providers@0.0.4': dependencies: '@near-js/transactions': 0.1.0 '@near-js/types': 0.0.3 @@ -6951,7 +6702,7 @@ snapshots: borsh: 0.7.0 http-errors: 1.8.1 optionalDependencies: - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 transitivePeerDependencies: - encoding @@ -7017,9 +6768,9 @@ snapshots: dependencies: '@noble/hashes': 1.4.0 - '@noble/curves@1.8.0': + '@noble/curves@1.8.1': dependencies: - '@noble/hashes': 1.7.0 + '@noble/hashes': 1.7.1 '@noble/ed25519@1.7.3': {} @@ -7031,7 +6782,7 @@ snapshots: '@noble/hashes@1.5.0': {} - '@noble/hashes@1.7.0': {} + '@noble/hashes@1.7.1': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -7045,11 +6796,11 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.18.0 - '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@onsol/tldparser@0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/sha2': 5.7.0 - '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 borsh: 2.0.0 buffer: 6.0.3 @@ -7059,11 +6810,11 @@ snapshots: - supports-color - utf-8-validate - '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) big.js: 6.2.2 transitivePeerDependencies: - bufferutil @@ -7072,11 +6823,11 @@ snapshots: - typescript - utf-8-validate - '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) big.js: 6.2.2 transitivePeerDependencies: - bufferutil @@ -7092,17 +6843,17 @@ snapshots: '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 - '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 @@ -7111,10 +6862,10 @@ snapshots: '@pkgr/core@0.1.1': {} - '@project-serum/anchor@0.11.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@project-serum/anchor@0.11.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@project-serum/borsh': 0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@project-serum/borsh': 0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 @@ -7175,17 +6926,17 @@ snapshots: - encoding - utf-8-validate - '@project-serum/borsh@0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@project-serum/borsh@0.2.5(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 - '@project-serum/serum@0.13.65(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@project-serum/serum@0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@project-serum/anchor': 0.11.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@project-serum/anchor': 0.11.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer-layout: 1.2.2 transitivePeerDependencies: @@ -7216,20 +6967,20 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@pythnetwork/client@2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@pythnetwork/client@2.5.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@pythnetwork/client@2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) assert: 2.1.0 buffer: 6.0.3 transitivePeerDependencies: @@ -7267,24 +7018,24 @@ snapshots: dependencies: bn.js: 5.2.1 - '@pythnetwork/pyth-solana-receiver@0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@pythnetwork/pyth-solana-receiver@0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@noble/hashes': 1.7.0 - '@pythnetwork/price-service-sdk': 1.8.0 - '@pythnetwork/solana-utils': 0.4.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@noble/hashes': 1.7.1 + '@pythnetwork/price-service-sdk': 1.7.1 + '@pythnetwork/solana-utils': 0.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@pythnetwork/solana-utils@0.4.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@pythnetwork/solana-utils@0.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 5.0.0 - jito-ts: 3.0.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + jito-ts: 3.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -7298,11 +7049,10 @@ snapshots: '@randlabs/communication-bridge': 1.0.1 optional: true - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) axios: 1.7.9 big.js: 6.2.2 @@ -7325,11 +7075,11 @@ snapshots: dependencies: tslib: 2.8.1 - '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1)': + '@saberhq/solana-contrib@1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1)': dependencies: '@saberhq/option-utils': 1.15.0 '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/promise-retry': 1.1.6 '@types/retry': 0.12.5 bn.js: 5.2.1 @@ -7340,7 +7090,7 @@ snapshots: '@scure/base@1.1.9': {} - '@scure/base@1.2.1': {} + '@scure/base@1.2.4': {} '@scure/bip32@1.4.0': dependencies: @@ -7348,11 +7098,11 @@ snapshots: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - '@scure/bip32@1.6.1': + '@scure/bip32@1.6.2': dependencies: - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 - '@scure/base': 1.2.1 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 + '@scure/base': 1.2.4 '@scure/bip39@1.1.0': dependencies: @@ -7364,40 +7114,40 @@ snapshots: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - '@scure/bip39@1.5.1': + '@scure/bip39@1.5.4': dependencies: - '@noble/hashes': 1.7.0 - '@scure/base': 1.2.1 + '@noble/hashes': 1.7.1 + '@scure/base': 1.2.4 - '@shikijs/core@1.27.2': + '@shikijs/core@1.29.1': dependencies: - '@shikijs/engine-javascript': 1.27.2 - '@shikijs/engine-oniguruma': 1.27.2 - '@shikijs/types': 1.27.2 + '@shikijs/engine-javascript': 1.29.1 + '@shikijs/engine-oniguruma': 1.29.1 + '@shikijs/types': 1.29.1 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.27.2': + '@shikijs/engine-javascript@1.29.1': dependencies: - '@shikijs/types': 1.27.2 + '@shikijs/types': 1.29.1 '@shikijs/vscode-textmate': 10.0.1 - oniguruma-to-es: 2.1.0 + oniguruma-to-es: 2.3.0 - '@shikijs/engine-oniguruma@1.27.2': + '@shikijs/engine-oniguruma@1.29.1': dependencies: - '@shikijs/types': 1.27.2 + '@shikijs/types': 1.29.1 '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/langs@1.27.2': + '@shikijs/langs@1.29.1': dependencies: - '@shikijs/types': 1.27.2 + '@shikijs/types': 1.29.1 - '@shikijs/themes@1.27.2': + '@shikijs/themes@1.29.1': dependencies: - '@shikijs/types': 1.27.2 + '@shikijs/types': 1.29.1 - '@shikijs/types@1.27.2': + '@shikijs/types@1.29.1': dependencies: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -7414,10 +7164,10 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 6.0.0 dotenv: 16.4.7 @@ -7431,7 +7181,7 @@ snapshots: '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bigint-buffer: 1.1.5 bignumber.js: 9.1.2 transitivePeerDependencies: @@ -7447,10 +7197,10 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': + '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.3)': dependencies: - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7462,10 +7212,10 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.3)': dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-data-structures@2.0.0-preview.2': dependencies: @@ -7473,12 +7223,12 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': + '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7494,23 +7244,23 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-numbers@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': + '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7524,11 +7274,11 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -7537,13 +7287,13 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.2 + typescript: 5.7.3 '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: @@ -7561,13 +7311,13 @@ snapshots: fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.6.3 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.2 + typescript: 5.7.3 '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -7579,14 +7329,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7612,14 +7362,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7628,11 +7378,11 @@ snapshots: chalk: 5.4.1 commander: 12.1.0 - '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': + '@solana/errors@2.0.0-preview.4(typescript@5.7.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.2 + typescript: 5.7.3 '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7646,25 +7396,25 @@ snapshots: commander: 12.1.0 typescript: 5.6.3 - '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': + '@solana/errors@2.0.0-rc.1(typescript@5.7.3)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.2 + typescript: 5.7.3 '@solana/options@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7690,18 +7440,18 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) - typescript: 5.7.2 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/spl-account-compression@0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -7716,91 +7466,75 @@ snapshots: - supports-color - utf-8-validate - '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': + '@solana/spl-token-group@0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22) '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) '@solana/spl-type-length-value': 0.1.0 - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': - dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - fastestsmallesttextencoderdecoder - - typescript - - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': dependencies: '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript @@ -7812,7 +7546,7 @@ snapshots: '@solana/spl-token@0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 buffer: 6.0.3 buffer-layout: 1.2.2 @@ -7834,26 +7568,12 @@ snapshots: - supports-color - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - fastestsmallesttextencoderdecoder - - typescript - - utf-8-validate - - '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7862,12 +7582,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7876,12 +7596,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7890,12 +7610,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7904,38 +7624,35 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - - fastestsmallesttextencoderdecoder - - typescript - utf-8-validate - '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7944,13 +7661,13 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7959,13 +7676,13 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7974,13 +7691,13 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7993,33 +7710,33 @@ snapshots: dependencies: buffer: 6.0.3 - '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-standard-features': 1.2.0 - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/wallet-standard-features': 1.3.0 + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 eventemitter3: 4.0.7 - '@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: '@ledgerhq/devices': 6.27.1 '@ledgerhq/hw-transport': 6.27.1 '@ledgerhq/hw-transport-webhid': 6.27.1 - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 - '@solana/wallet-standard-features@1.2.0': + '@solana/wallet-standard-features@1.3.0': dependencies: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 - '@solana/web3.js@1.77.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.77.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -8029,7 +7746,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 rpc-websockets: 7.5.1 superstruct: 0.14.2 transitivePeerDependencies: @@ -8037,11 +7754,11 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.92.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -8051,7 +7768,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 rpc-websockets: 8.0.2 superstruct: 1.0.4 transitivePeerDependencies: @@ -8059,11 +7776,11 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.95.3(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -8073,7 +7790,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 rpc-websockets: 9.0.4 superstruct: 2.0.2 transitivePeerDependencies: @@ -8081,11 +7798,11 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -8095,7 +7812,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 rpc-websockets: 9.0.4 superstruct: 2.0.2 transitivePeerDependencies: @@ -8103,11 +7820,11 @@ snapshots: - encoding - utf-8-validate - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.0 - '@noble/hashes': 1.7.0 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.7.1 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -8117,7 +7834,7 @@ snapshots: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 rpc-websockets: 9.0.4 superstruct: 2.0.2 transitivePeerDependencies: @@ -8140,10 +7857,10 @@ snapshots: '@solworks/soltoolkit-sdk@0.0.23(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 - '@types/node': 18.19.69 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 bn.js: 5.2.1 decimal.js: 10.4.3 @@ -8151,18 +7868,17 @@ snapshots: transitivePeerDependencies: - bufferutil - encoding - - fastestsmallesttextencoderdecoder - utf-8-validate '@soncodi/signal@2.0.7': {} - '@sqds/multisig@2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 - '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 assert: 2.1.0 bn.js: 5.2.1 @@ -8201,7 +7917,7 @@ snapshots: - encoding - utf-8-validate - '@switchboard-xyz/on-demand@1.2.42(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': + '@switchboard-xyz/on-demand@1.2.42(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@brokerloop/ttlcache': 3.2.3 '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' @@ -8217,21 +7933,20 @@ snapshots: - bufferutil - debug - encoding - - fastestsmallesttextencoderdecoder - utf-8-validate '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 - '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@tensor-hq/tensor-common@8.3.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) axios: 0.28.1 big.js: 6.2.2 bn.js: 5.2.1 @@ -8249,14 +7964,14 @@ snapshots: - typescript - utf-8-validate - '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@msgpack/msgpack': 2.8.0 - '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bn.js@5.2.1) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@tensor-hq/tensor-common': 8.3.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 big.js: 6.2.2 bn.js: 5.2.1 @@ -8274,11 +7989,11 @@ snapshots: - typescript - utf-8-validate - '@tiplink/api@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': + '@tiplink/api@0.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10)': dependencies: - '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 5.0.0 libsodium: 0.7.15 libsodium-wrappers-sumo: 0.7.15 @@ -8300,7 +8015,7 @@ snapshots: '@ts-morph/common@0.19.0': dependencies: - fast-glob: 3.3.2 + fast-glob: 3.3.3 minimatch: 7.4.6 mkdirp: 2.1.6 path-browserify: 1.0.1 @@ -8343,8 +8058,6 @@ snapshots: '@types/diff-match-patch@1.0.36': {} - '@types/estree@1.0.6': {} - '@types/express-serve-static-core@4.19.6': dependencies: '@types/node': 22.10.7 @@ -8388,11 +8101,11 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.69': + '@types/node@18.19.71': dependencies: undici-types: 5.26.5 - '@types/node@20.17.13': + '@types/node@20.17.14': dependencies: undici-types: 6.19.8 @@ -8447,89 +8160,89 @@ snapshots: dependencies: '@types/node': 22.10.7 - '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/type-utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.21.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0 eslint: 8.57.1 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.0': + '@typescript-eslint/scope-manager@8.21.0': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 - '@typescript-eslint/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.21.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) debug: 4.4.0 eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.0': {} + '@typescript-eslint/types@8.21.0': {} - '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/visitor-keys': 8.19.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) - typescript: 5.7.2 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/utils@8.21.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.19.0 - '@typescript-eslint/types': 8.19.0 - '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) eslint: 8.57.1 - typescript: 5.7.2 + typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.0': + '@typescript-eslint/visitor-keys@8.21.0': dependencies: - '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/types': 8.21.0 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.2.1': {} - '@voltr/vault-sdk@0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + '@voltr/vault-sdk@0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -8585,15 +8298,14 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ai@4.0.22(react@19.0.0)(zod@3.24.1): + ai@4.1.0(react@19.0.0)(zod@3.24.1): dependencies: - '@ai-sdk/provider': 1.0.3 - '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) - '@ai-sdk/react': 1.0.7(react@19.0.0)(zod@3.24.1) - '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) + '@ai-sdk/provider': 1.0.4 + '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) + '@ai-sdk/react': 1.1.0(react@19.0.0)(zod@3.24.1) + '@ai-sdk/ui-utils': 1.1.0(zod@3.24.1) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 - zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: react: 19.0.0 zod: 3.24.1 @@ -8607,28 +8319,6 @@ snapshots: algo-msgpack-with-bigint@2.1.1: {} - algosdk@1.24.1(encoding@0.1.13): - dependencies: - algo-msgpack-with-bigint: 2.1.1 - buffer: 6.0.3 - cross-fetch: 3.2.0(encoding@0.1.13) - hi-base32: 0.5.1 - js-sha256: 0.9.0 - js-sha3: 0.8.0 - js-sha512: 0.8.0 - json-bigint: 1.0.0 - tweetnacl: 1.0.3 - vlq: 2.0.4 - transitivePeerDependencies: - - encoding - optional: true - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - algo-msgpack-with-bigint@2.1.1: {} - algosdk@1.24.1: dependencies: algo-msgpack-with-bigint: 2.1.1 @@ -8699,7 +8389,7 @@ snapshots: transitivePeerDependencies: - debug - arbundles@0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(encoding@0.1.13)(utf-8-validate@5.0.10): + arbundles@0.10.1(arweave@1.15.5)(bufferutil@4.0.9)(debug@4.4.0)(utf-8-validate@5.0.10): dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -8715,7 +8405,7 @@ snapshots: secp256k1: 5.0.1 optionalDependencies: '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1(encoding@0.1.13) + algosdk: 1.24.1 arweave-stream-tx: 1.2.2(arweave@1.15.5) multistream: 4.1.0 tmp-promise: 3.0.3 @@ -8726,7 +8416,7 @@ snapshots: - encoding - utf-8-validate - arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): + arbundles@0.11.2(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 @@ -8742,7 +8432,7 @@ snapshots: secp256k1: 5.0.1 optionalDependencies: '@randlabs/myalgo-connect': 1.4.2 - algosdk: 1.24.1(encoding@0.1.13) + algosdk: 1.24.1 arweave-stream-tx: 1.2.2(arweave@1.15.5) multistream: 4.1.0 tmp-promise: 3.0.3 @@ -8941,9 +8631,6 @@ snapshots: transitivePeerDependencies: - supports-color - boolbase@1.0.0: - optional: true - borsh@0.7.0: dependencies: bn.js: 5.2.1 @@ -9070,28 +8757,6 @@ snapshots: chownr@1.1.4: {} - cheerio@0.22.0: - dependencies: - css-select: 1.2.0 - dom-serializer: 0.1.1 - entities: 1.1.2 - htmlparser2: 3.10.1 - lodash.assignin: 4.2.0 - lodash.bind: 4.2.1 - lodash.defaults: 4.2.0 - lodash.filter: 4.6.0 - lodash.flatten: 4.4.0 - lodash.foreach: 4.5.0 - lodash.map: 4.6.0 - lodash.merge: 4.6.2 - lodash.pick: 4.4.0 - lodash.reduce: 4.6.0 - lodash.reject: 4.6.0 - lodash.some: 4.6.0 - optional: true - - chownr@1.1.4: {} - cipher-base@1.0.6: dependencies: inherits: 2.0.4 @@ -9156,6 +8821,10 @@ snapshots: concat-map@0.0.1: {} + console-table-printer@2.12.1: + dependencies: + simple-wcswidth: 1.0.1 + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -9199,7 +8868,7 @@ snapshots: cross-fetch@3.2.0: dependencies: - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 transitivePeerDependencies: - encoding @@ -9213,17 +8882,6 @@ snapshots: crypto-js@4.2.0: {} - css-select@1.2.0: - dependencies: - boolbase: 1.0.0 - css-what: 2.1.3 - domutils: 1.5.1 - nth-check: 1.0.2 - optional: true - - css-what@2.1.3: - optional: true - csv-generate@3.4.3: {} csv-parse@4.16.3: {} @@ -9325,32 +8983,6 @@ snapshots: dependencies: esutils: 2.0.3 - dom-serializer@0.1.1: - dependencies: - domelementtype: 1.3.1 - entities: 1.1.2 - optional: true - - domelementtype@1.3.1: - optional: true - - domhandler@2.4.2: - dependencies: - domelementtype: 1.3.1 - optional: true - - domutils@1.5.1: - dependencies: - dom-serializer: 0.1.1 - domelementtype: 1.3.1 - optional: true - - domutils@1.7.0: - dependencies: - dom-serializer: 0.1.1 - domelementtype: 1.3.1 - optional: true - dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -9376,26 +9008,6 @@ snapshots: eastasianwidth@0.2.0: {} - elliptic@6.5.4: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - elliptic@6.6.1: - dependencies: - bn.js: 4.12.1 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - ee-first@1.1.1: {} elliptic@6.5.4: @@ -9430,18 +9042,10 @@ snapshots: encodeurl@2.0.0: {} - encoding@0.1.13: - dependencies: - iconv-lite: 0.6.3 - optional: true - end-of-stream@1.4.4: dependencies: once: 1.4.0 - entities@1.1.2: - optional: true - entities@4.5.0: {} environment@1.1.0: {} @@ -9509,7 +9113,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-prettier@5.2.2(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): + eslint-plugin-prettier@5.2.3(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): dependencies: eslint: 8.57.1 prettier: 3.4.2 @@ -9523,11 +9127,6 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.0: {} @@ -9575,51 +9174,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.17.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.9.1 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.4 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - espree@9.6.1: dependencies: acorn: 8.14.0 @@ -9642,7 +9196,7 @@ snapshots: ethereum-bloom-filters@1.2.0: dependencies: - '@noble/hashes': 1.7.0 + '@noble/hashes': 1.7.1 ethereum-cryptography@2.2.1: dependencies: @@ -9782,7 +9336,7 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -9815,10 +9369,6 @@ snapshots: dependencies: flat-cache: 3.2.0 - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} fill-range@7.1.1: @@ -9837,18 +9387,11 @@ snapshots: transitivePeerDependencies: - supports-color - find-process@1.4.8: + find-process@1.4.10: dependencies: - chalk: 5.4.1 + chalk: 4.1.2 commander: 12.1.0 - debug: 4.4.0 - eslint: 9.17.0 - glob: 11.0.0 loglevel: 1.9.2 - rimraf: 6.0.1 - transitivePeerDependencies: - - jiti - - supports-color find-up@5.0.0: dependencies: @@ -9859,14 +9402,14 @@ snapshots: dependencies: traverse-chain: 0.1.0 - flash-sdk@2.25.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): + flash-sdk@2.26.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): dependencies: - '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) - '@types/node': 20.17.13 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@types/node': 20.17.14 bignumber.js: 9.1.2 bs58: 5.0.0 dotenv: 16.4.7 @@ -9875,7 +9418,7 @@ snapshots: jsbi: 4.3.0 node-fetch: 3.3.2 rimraf: 5.0.10 - ts-node: 10.9.2(@types/node@20.17.13)(typescript@5.7.2) + ts-node: 10.9.2(@types/node@20.17.14)(typescript@5.7.3) tweetnacl: 1.0.3 transitivePeerDependencies: - '@swc/core' @@ -9893,11 +9436,6 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 - flat-cache@4.0.1: - dependencies: - flatted: 3.3.2 - keyv: 4.5.4 - flatted@3.3.2: {} follow-redirects@1.15.9: {} @@ -9995,7 +9533,7 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.8.1: + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -10043,15 +9581,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.0: - dependencies: - foreground-child: 3.3.0 - jackspeak: 4.0.2 - minimatch: 10.0.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -10065,8 +9594,6 @@ snapshots: dependencies: type-fest: 0.20.2 - globals@14.0.0: {} - gopd@1.2.0: {} got@11.8.6: @@ -10113,15 +9640,15 @@ snapshots: js-base64: 3.7.7 unicode-trie: 2.0.0 - groq-sdk@0.5.0(encoding@0.1.13): + groq-sdk@0.5.0: dependencies: - '@types/node': 18.19.69 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding @@ -10190,16 +9717,6 @@ snapshots: html-void-elements@3.0.0: {} - htmlparser2@3.10.1: - dependencies: - domelementtype: 1.3.1 - domhandler: 2.4.2 - domutils: 1.7.0 - entities: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - http-cache-semantics@4.1.1: {} http-errors@1.8.1: @@ -10229,7 +9746,7 @@ snapshots: humanize-ms@1.2.1: dependencies: - ms: 2.1.2 + ms: 2.1.3 husky@9.1.7: {} @@ -10237,11 +9754,6 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - ieee754@1.2.1: {} ignore@5.3.2: {} @@ -10388,10 +9900,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.0.2: - dependencies: - '@isaacs/cliui': 8.0.2 - jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -10410,15 +9918,15 @@ snapshots: - bufferutil - utf-8-validate - jito-ts@3.0.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): + jito-ts@3.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@grpc/grpc-js': 1.12.5 '@noble/ed25519': 1.7.3 - '@solana/web3.js': 1.77.4(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.77.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) agentkeepalive: 4.6.0 dotenv: 16.4.7 jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 superstruct: 1.0.4 transitivePeerDependencies: - bufferutil @@ -10505,40 +10013,40 @@ snapshots: dependencies: json-buffer: 3.0.1 - langchain@0.3.9(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13))(axios@1.7.9)(cheerio@0.22.0)(encoding@0.1.13)(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)): + langchain@0.3.12(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(axios@1.7.9)(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): dependencies: - '@langchain/core': 0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) - '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1))) + '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + '@langchain/openai': 0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))) js-tiktoken: 1.0.16 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)) + langsmith: 0.3.1(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 - yaml: 2.6.1 + yaml: 2.7.0 zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: - '@langchain/groq': 0.1.2(@langchain/core@0.3.27(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)))(encoding@0.1.13) - '@langchain/groq': 0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) + '@langchain/groq': 0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) axios: 1.7.9 transitivePeerDependencies: - encoding - openai + - ws - langsmith@0.2.14(openai@4.77.3(encoding@0.1.13)(zod@3.24.1)): + langsmith@0.3.1(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 - commander: 10.0.1 + chalk: 4.1.2 + console-table-printer: 2.12.1 p-queue: 6.6.2 p-retry: 4.6.2 semver: 7.6.3 uuid: 10.0.0 optionalDependencies: - openai: 4.77.3(encoding@0.1.13)(zod@3.24.1) - openai: 4.77.3(zod@3.24.1) + openai: 4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1) lazy-ass@1.6.0: {} @@ -10597,47 +10105,14 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.assignin@4.2.0: - optional: true - - lodash.bind@4.2.1: - optional: true - lodash.camelcase@4.3.0: {} lodash.clonedeep@4.5.0: {} - lodash.defaults@4.2.0: - optional: true - - lodash.filter@4.6.0: - optional: true - - lodash.flatten@4.4.0: - optional: true - - lodash.foreach@4.5.0: - optional: true - lodash.isequal@4.5.0: {} - lodash.map@4.6.0: - optional: true - lodash.merge@4.6.2: {} - lodash.pick@4.4.0: - optional: true - - lodash.reduce@4.6.0: - optional: true - - lodash.reject@4.6.0: - optional: true - - lodash.some@4.6.0: - optional: true - lodash@4.17.21: {} log-symbols@4.1.0: @@ -10673,8 +10148,6 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.0.2: {} - lunr@2.3.9: {} make-error@1.3.6: {} @@ -10780,10 +10253,6 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -10850,7 +10319,7 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.72.0: + node-abi@3.73.0: dependencies: semver: 7.6.3 @@ -10873,8 +10342,6 @@ snapshots: node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 node-fetch@3.3.2: dependencies: @@ -10911,11 +10378,6 @@ snapshots: dependencies: path-key: 4.0.0 - nth-check@1.0.2: - dependencies: - boolbase: 1.0.0 - optional: true - number-to-bn@1.7.0: dependencies: bn.js: 4.11.6 @@ -10975,22 +10437,23 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-to-es@2.1.0: + oniguruma-to-es@2.3.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.1.1 regex-recursion: 5.1.1 - openai@4.77.3(encoding@0.1.13)(zod@3.24.1): + openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1): dependencies: - '@types/node': 18.19.69 + '@types/node': 18.19.71 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0(encoding@0.1.13) + node-fetch: 2.7.0 optionalDependencies: + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.24.1 transitivePeerDependencies: - encoding @@ -11101,11 +10564,6 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: - dependencies: - lru-cache: 11.0.2 - minipass: 7.1.2 - path-to-regexp@0.1.12: {} pathval@2.0.0: {} @@ -11150,7 +10608,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.72.0 + node-abi: 3.73.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -11348,11 +10806,6 @@ snapshots: dependencies: glob: 10.4.5 - rimraf@6.0.1: - dependencies: - glob: 11.0.0 - package-json-from-dist: 1.0.1 - ripemd160@2.0.2: dependencies: hash-base: 3.1.0 @@ -11481,14 +10934,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.27.2: + shiki@1.29.1: dependencies: - '@shikijs/core': 1.27.2 - '@shikijs/engine-javascript': 1.27.2 - '@shikijs/engine-oniguruma': 1.27.2 - '@shikijs/langs': 1.27.2 - '@shikijs/themes': 1.27.2 - '@shikijs/types': 1.27.2 + '@shikijs/core': 1.29.1 + '@shikijs/engine-javascript': 1.29.1 + '@shikijs/engine-oniguruma': 1.29.1 + '@shikijs/langs': 1.29.1 + '@shikijs/themes': 1.29.1 + '@shikijs/types': 1.29.1 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -11532,6 +10985,8 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 + simple-wcswidth@1.0.1: {} + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -11577,9 +11032,9 @@ snapshots: solana-bankrun-linux-x64-musl@0.3.1: optional: true - solana-bankrun@0.3.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10): + solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 4.0.1 optionalDependencies: solana-bankrun-darwin-arm64: 0.3.1 @@ -11597,16 +11052,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 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.21 - spdx-license-ids@3.0.20: {} + spdx-license-ids@3.0.21: {} split@0.3.3: dependencies: @@ -11615,10 +11070,7 @@ snapshots: spok@1.5.5: dependencies: ansicolors: 0.3.2 - find-process: 1.4.8 - transitivePeerDependencies: - - jiti - - supports-color + find-process: 1.4.10 start-server-and-test@1.15.4: dependencies: @@ -11796,9 +11248,9 @@ snapshots: trim-lines@3.0.1: {} - ts-api-utils@1.4.3(typescript@5.7.2): + ts-api-utils@2.0.0(typescript@5.7.3): dependencies: - typescript: 5.7.2 + typescript: 5.7.3 ts-log@2.2.7: {} @@ -11807,21 +11259,21 @@ snapshots: '@ts-morph/common': 0.19.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@types/node@20.17.11)(typescript@5.7.2): + ts-node@10.9.2(@types/node@20.17.14)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.13 + '@types/node': 20.17.14 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.2 + typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11843,7 +11295,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.2): + ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -11857,7 +11309,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.2 + typescript: 5.7.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11876,7 +11328,7 @@ snapshots: tsx@4.19.2: dependencies: esbuild: 0.23.1 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 @@ -11905,22 +11357,22 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typedoc@0.26.11(typescript@5.7.2): + typedoc@0.26.11(typescript@5.7.3): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.27.2 - typescript: 5.7.2 + shiki: 1.29.1 + typescript: 5.7.3 yaml: 2.7.0 - typedoc@0.27.6(typescript@5.7.2): + typedoc@0.27.6(typescript@5.7.3): dependencies: '@gerrit0/mini-shiki': 1.27.2 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - typescript: 5.7.2 + typescript: 5.7.3 yaml: 2.7.0 typescript-collections@1.3.3: {} @@ -12048,13 +11500,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vlq@2.0.4: - optional: true - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - vlq@2.0.4: {} w-json@1.3.10: {} diff --git a/src/actions/fluxbeam/bridgeToken.ts b/src/actions/fluxbeam/bridgeToken.ts deleted file mode 100644 index 0a40af12..00000000 --- a/src/actions/fluxbeam/bridgeToken.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { Action } from "../../types/action"; -import { SolanaAgentKit } from "../../agent"; -import { z } from "zod"; -import { - Chain, - fluxbeamBridgeTokens, -} from "../../tools/fluxbeam/fluxbeam_bridge_tokens"; - -const fluxbeamBridgeTokenAction: Action = { - name: "FLUXBEAM_BRIDGE_TOKEN_ACTION", - similes: [ - "bridge tokens", - "transfer across chains", - "send to other chain", - "cross chain transfer", - "bridge to ethereum", - "bridge to polygon", - ], - description: `Bridge tokens from Solana to another blockchain using Fluxbeam. - Supported destination chains include Ethereum, BSC, Polygon, Avalanche, Arbitrum, Optimism and Base. - You can optionally specify a gas drop amount that must not exceed the chain's limit.`, - examples: [ - [ - { - input: { - destination: "ethereum", - destinationWalletAddress: "0x1234...5678", - fromToken: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - toToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - amount: 100, - gasDrop: 0.04, - }, - output: { - status: "success", - signature: "5pB6Fy...", - }, - explanation: "Bridge 100 USDC from Solana to Ethereum", - }, - ], - ], - schema: z.object({ - destination: z.enum([ - "ethereum", - "bsc", - "polygon", - "avalanche", - "solana", - "arbitrum", - "optimism", - "base", - ]), - destinationWalletAddress: z.string(), - fromToken: z.string(), - toToken: z.string(), - amount: z.number(), - gasDrop: z.number().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamBridgeTokens( - agent, - input.destination as Chain, - input.destinationWalletAddress, - input.fromToken, - input.toToken, - input.amount, - input.gasDrop, - ); - - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamBridgeTokenAction; diff --git a/src/actions/fluxbeam/burnToken.ts b/src/actions/fluxbeam/burnToken.ts deleted file mode 100644 index 2fd538f0..00000000 --- a/src/actions/fluxbeam/burnToken.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Action } from "../../types/action"; -import { SolanaAgentKit } from "../../agent"; -import { z } from "zod"; -import { fluxbeamBurnToken } from "../../tools"; - -const fluxbeamBurnTokenAction: Action = { - name: "FLUXBEAM_BURN_TOKEN_ACTION", - similes: [ - "burn tokens", - "destroy tokens", - "remove tokens", - "burn crypto", - "reduce supply", - ], - description: `Burns a specified amount of tokens from your wallet. - Can be used with both Token Program v1 and v2 tokens.`, - examples: [ - [ - { - input: { - mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - amount: 100, - v2: true, - }, - output: { - status: "success", - signature: "2ZqD4f...", - }, - explanation: "Burn 100 tokens from the specified mint", - }, - ], - ], - schema: z.object({ - mint: z.string(), - amount: z.number(), - v2: z.boolean().optional().default(true), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamBurnToken( - agent, - new PublicKey(input.mint), - input.amount, - input.v2, - ); - - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamBurnTokenAction; diff --git a/src/actions/fluxbeam/createPool.ts b/src/actions/fluxbeam/createPool.ts index bda8161b..c1816739 100644 --- a/src/actions/fluxbeam/createPool.ts +++ b/src/actions/fluxbeam/createPool.ts @@ -7,11 +7,13 @@ import { fluxBeamCreatePool } from "../../tools"; const fluxbeamCreatePoolAction: Action = { name: "FLUXBEAM_CREATE_POOL_ACTION", similes: [ - "create liquidity pool", - "start pool", + "create fluxbeam liquidity pool", + "start fluxbeam pool", "initialize pool", - "new trading pool", - "setup token pool", + "create new fluxbeam trading pool", + "setup fluxbeam token pool", + "add new pool to fluxbeam", + "create token pair pool on fluxbeam", ], description: `Creates a new liquidity pool on Fluxbeam with two tokens. Specify the token addresses and initial amounts to provide liquidity.`, @@ -19,38 +21,99 @@ const fluxbeamCreatePoolAction: Action = { [ { input: { - tokenA: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - tokenAAmount: 1000, - tokenB: "So11111111111111111111111111111111111111112", - tokenBAmount: 5, + token_a: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + token_a_amount: 5, + token_b: "So11111111111111111111111111111111111111112", + token_b_amount: 5000, }, output: { status: "success", - signature: "3xKm2p...", + message: "Pool created successfully on FluxBeam", + transaction: + "4KvgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + token_a: "SOL", + token_a_amount: 5, + token_b: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + token_b_amount: 5000, }, - explanation: "Create a USDC-SOL pool with initial liquidity", + explanation: "Create a new USDC-SOL pool with 5 SOL and 5000 USDC", + }, + ], + [ + { + input: { + tokenA: "USDC", + tokenAamount: 5, + tokenB: "SOL", + tokenBamount: 5000, + }, + output: { + status: "success", + message: "Pool created successfully on FluxBeam", + transaction: + "4KvgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + tokenA: "SOL", + tokenAamount: 5, + tokenB: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + tokenBamount: 5000, + }, + explanation: "Create a new USDC-SOL pool with 5 SOL and 5000 USDC", + }, + ], + [ + { + input: { + token_a: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + token_a_amount: 5, + token_b: "So11111111111111111111111111111111111111112", + token_b_amount: 5000, + }, + output: { + status: "success", + message: "Pool created successfully on FluxBeam", + transaction: + "4KvgJ5vVZxUxefDGqzqkVLHzHxVTyYH9StYyHKgvHYmXJgqJKxEqy9k4Rz9LpXrHF9kUZB7", + token_a: "SOL", + token_a_amount: 5, + token_b: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + token_b_amount: 5000, + }, + explanation: "Create a new USDC-SOL pool with 5 SOL and 5000 USDC", }, ], ], schema: z.object({ tokenA: z.string(), - tokenAAmount: z.number(), + tokenAamount: z.number().positive("Token A amount must be positive"), tokenB: z.string(), - tokenBAmount: z.number(), + tokenBamount: z.number().positive("Token B amount must be positive"), }), handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxBeamCreatePool( - agent, - new PublicKey(input.tokenA), - input.tokenAAmount, - new PublicKey(input.tokenB), - input.tokenBAmount, - ); + try { + const txSignature = await fluxBeamCreatePool( + agent, + new PublicKey(input.tokenA), + input.token_a_amount, + new PublicKey(input.tokenB), + input.token_b_amount, + ); - return { - status: "success", - signature, - }; + return { + status: "success", + message: "Pool created successfully on FluxBeam", + tx: txSignature, + token_a: input.token_a, + token_a_amount: input.token_a_amount, + token_b: input.token_b, + token_b_amount: input.token_b_amount, + }; + } catch (error: any) { + return { + status: "error", + message: `FluxBeam pool creation failed: ${error.message}`, + error: error.message, + }; + } }, }; diff --git a/src/actions/fluxbeam/createV1Token.ts b/src/actions/fluxbeam/createV1Token.ts deleted file mode 100644 index d5cc17e9..00000000 --- a/src/actions/fluxbeam/createV1Token.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamCreateTokenV1 } from "../../tools"; -import { Action } from "../../types"; - -// Create Token V1 Action -const fluxbeamCreateV1TokenAction: Action = { - name: "FLUXBEAM_CREATE_TOKEN_V1_ACTION", - similes: ["create token v1", "mint new token v1", "initialize token v1"], - description: "Creates a new SPL token with metadata (v1)", - examples: [ - [ - { - input: { - name: "My Token", - symbol: "MTK", - decimals: 9, - initialSupply: 1000000, - uri: "https://...", - }, - output: { - status: "success", - signature: "aXw3...", - }, - explanation: "Create new token with initial supply", - }, - ], - ], - schema: z.object({ - name: z.string(), - symbol: z.string(), - decimals: z.number().optional(), - initialSupply: z.number().optional(), - imagePath: z.string().optional(), - uri: z.string().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamCreateTokenV1( - agent, - input.name, - input.symbol, - input.decimals, - input.initialSupply, - input.imagePath, - input.uri, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamCreateV1TokenAction; diff --git a/src/actions/fluxbeam/createV2Token.ts b/src/actions/fluxbeam/createV2Token.ts deleted file mode 100644 index 4f2b080d..00000000 --- a/src/actions/fluxbeam/createV2Token.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Keypair, PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { ExtensionConfig, fluxbeamCreateTokenV2 } from "../../tools"; -import { Action } from "../../types"; - -// Create V2 Token Action (continued) -const fluxbeamCreateV2TokenAction: Action = { - name: "FLUXBEAM_CREATE_MINT_V2_ACTION", - similes: ["create token v2", "mint new token v2", "initialize token v2"], - description: "Creates a new Token-2022 token with extensions", - examples: [ - [ - { - input: { - owner: "EPjFW...", - tokenMint: new Keypair(), - name: "My Token V2", - symbol: "MTK2", - totalSupply: BigInt("1000000"), - mintAuthority: "EPjFW...", - freezeAuthority: null, - decimals: 6, - extensions: [], - priorityFee: 100000, - description: "My token description", - metadataUri: "https://...", - }, - output: { - status: "success", - signature: "bYx4...", - }, - explanation: "Create new token-2022 token with extensions", - }, - ], - ], - schema: z.object({ - owner: z.string(), - tokenMint: z.instanceof(Keypair), - name: z.string(), - symbol: z.string(), - totalSupply: z.bigint(), - mintAuthority: z.string(), - freezeAuthority: z.string().nullable(), - decimals: z.number().optional(), - mintTotalSupply: z.boolean().optional(), - priorityFee: z.number(), - extensions: z.array(z.custom()), - description: z.string().optional(), - metadataUri: z.string().optional(), - imagePath: z.string().optional(), - imageUri: z.string().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamCreateTokenV2( - agent, - new PublicKey(input.owner), - input.tokenMint, - input.name, - input.symbol, - input.totalSupply, - new PublicKey(input.mintAuthority), - input.freezeAuthority ? new PublicKey(input.freezeAuthority) : null, - input.decimals, - input.mintTotalSupply, - input.priorityFee, - input.extensions, - input.description, - input.metadataUri, - input.imagePath, - input.imageUri, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamCreateV2TokenAction; diff --git a/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts b/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts deleted file mode 100644 index 33f71b0e..00000000 --- a/src/actions/fluxbeam/fluxbeamSubmitFeeClaim.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamSubmitFeeClaim } from "../../tools"; -import { Action } from "../../types"; - -// Fee Claim Action -const fluxbeamSubmitFeeClaimAction: Action = { - name: "FLUXBEAM_SUBMIT_FEE_CLAIM_ACTION", - similes: ["claim fees", "collect fees", "withdraw fees"], - description: "Claims accumulated token fees", - examples: [ - [ - { - input: { - payer: "EPjFW...", - mint: "So11...", - priorityFee: 100000, - }, - output: { - status: "success", - signature: "5mRt8...", - }, - explanation: "Claim accumulated fees for a token mint", - }, - ], - ], - schema: z.object({ - payer: z.string(), - mint: z.string(), - priorityFee: z.number().positive(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamSubmitFeeClaim( - agent, - new PublicKey(input.payer), - new PublicKey(input.mint), - input.priorityFee, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamSubmitFeeClaimAction; diff --git a/src/actions/fluxbeam/fluxbeamTransfer.ts b/src/actions/fluxbeam/fluxbeamTransfer.ts deleted file mode 100644 index ee480870..00000000 --- a/src/actions/fluxbeam/fluxbeamTransfer.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Action } from "../../types/action"; -import { SolanaAgentKit } from "../../agent"; -import { z } from "zod"; -import { fluxbeamTransferSplToken, fluxbeamTransferSol } from "../../tools"; - -const fluxbeamTransferAction: Action = { - name: "FLUXBEAM_TRANSFER_ACTION", - similes: [ - "transfer tokens", - "send tokens", - "send SOL", - "transfer SOL", - "send money", - ], - description: `Transfer SOL or SPL tokens to another wallet. - For SPL tokens, specify the mint address. For SOL transfers, just provide the amount.`, - examples: [ - [ - { - input: { - type: "spl", - mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - destination: "5KLm2...", - amount: 100, - v2: true, - }, - output: { - status: "success", - signature: "5nKm4p...", - }, - explanation: "Transfer 100 USDC tokens to another wallet", - }, - { - input: { - type: "sol", - destination: "5KLm2...", - amount: 1.5, - }, - output: { - status: "success", - signature: "6pNn3q...", - }, - explanation: "Transfer 1.5 SOL to another wallet", - }, - ], - ], - schema: z.union([ - z.object({ - type: z.literal("spl"), - mint: z.string(), - destination: z.string(), - amount: z.number(), - v2: z.boolean().optional().default(true), - }), - z.object({ - type: z.literal("sol"), - destination: z.string(), - amount: z.number(), - }), - ]), - handler: async (agent: SolanaAgentKit, input: Record) => { - let signature: string; - - if (input.type === "spl") { - signature = await fluxbeamTransferSplToken( - agent, - new PublicKey(input.mint), - new PublicKey(input.destination), - input.amount, - input.v2, - ); - } else { - signature = await fluxbeamTransferSol( - agent, - new PublicKey(input.destination), - input.amount, - ); - } - - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamTransferAction; diff --git a/src/actions/fluxbeam/mintToken.ts b/src/actions/fluxbeam/mintToken.ts deleted file mode 100644 index fbd82f00..00000000 --- a/src/actions/fluxbeam/mintToken.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamMintToAccount } from "../../tools"; -import { Action } from "../../types"; - -const fluxbeamMintToAccountAction: Action = { - name: "MINT_TO_ACCOUNT_ACTION", - similes: [ - "mint tokens", - "create new tokens", - "issue tokens", - "mint to wallet", - "add tokens to account", - ], - description: `Mints tokens to a specified owner's associated token account. - If the associated token account doesn't exist, it will be created automatically. - Supports both regular SPL tokens and Token-2022 tokens.`, - examples: [ - [ - { - input: { - owner: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - tokenMint: "So11111111111111111111111111111111111111112", - amount: "1000000", - v2: true, - }, - output: { - status: "success", - signature: - "5KtP9KbhJsBzS3rSXWqtqwtSJJNgfQFJxVdNCsM5QrUMBUEHrm28GU7dw7v6vh1CyCygtZhptVHhHgywY34iDtYf", - }, - explanation: - "Mint 1 token (with 6 decimals) to owner's associated token account using Token-2022 program", - }, - { - input: { - owner: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - tokenMint: "So11111111111111111111111111111111111111112", - amount: "1000000", - v2: false, - }, - output: { - status: "success", - signature: - "5KtP9KbhJsBzS3rSXWqtqwtSJJNgfQFJxVdNCsM5QrUMBUEHrm28GU7dw7v6vh1CyCygtZhptVHhHgywY34iDtYf", - }, - explanation: - "Mint 1 token (with 6 decimals) to owner's associated token account using regular SPL Token program", - }, - ], - ], - schema: z.object({ - owner: z.string().refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid owner public key"), - tokenMint: z.string().refine((val) => { - try { - new PublicKey(val); - return true; - } catch { - return false; - } - }, "Invalid token mint public key"), - amount: z - .string() - .or(z.number()) - .transform((val) => BigInt(val)), - v2: z.boolean().optional().default(true), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - try { - const signature = await fluxbeamMintToAccount( - agent, - new PublicKey(input.owner), - new PublicKey(input.tokenMint), - BigInt(input.amount), - input.v2, - ); - - return { - status: "success", - signature, - }; - } catch (error: any) { - return { - status: "error", - error: `Failed to mint tokens: ${error.message}`, - }; - } - }, -}; - -export default fluxbeamMintToAccountAction; diff --git a/src/actions/fluxbeam/revokeMintAuthority.ts b/src/actions/fluxbeam/revokeMintAuthority.ts deleted file mode 100644 index 519b6192..00000000 --- a/src/actions/fluxbeam/revokeMintAuthority.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { AuthorityType } from "@solana/spl-token"; -import { PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamRevokeAuthority } from "../../tools/fluxbeam/fluxbeam_token_minting_controls"; -import { Action } from "../../types"; - -// Revoke Authority Action -const fluxbeamRevokeMintAuthorityAction: Action = { - name: "FLUXBEAM_REVOKE_AUTHORITY_ACTION", - similes: [ - "remove authority", - "revoke token authority", - "remove token permissions", - ], - description: "Revokes an authority from a token mint by setting it to null", - examples: [ - [ - { - input: { - owner: "EPjFW...", - mint: "So11...", - authority: "MintTokens", - v2: true, - priorityFee: 100000000, - }, - output: { - status: "success", - signature: "eBy7...", - }, - explanation: "Revoke mint authority from token", - }, - ], - ], - schema: z.object({ - owner: z.string(), - mint: z.string(), - authority: z.enum([ - "MintTokens", - "FreezeAccount", - "AccountOwner", - "CloseAccount", - ]), - v2: z.boolean().optional(), - priorityFee: z.number().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamRevokeAuthority( - agent, - new PublicKey(input.owner), - new PublicKey(input.mint), - input.authority as AuthorityType, - input.v2, - input.priorityFee, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamRevokeMintAuthorityAction; diff --git a/src/actions/fluxbeam/setMintAuthority.ts b/src/actions/fluxbeam/setMintAuthority.ts deleted file mode 100644 index fd278a73..00000000 --- a/src/actions/fluxbeam/setMintAuthority.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { AuthorityType } from "@solana/spl-token"; -import { PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamSetAuthority } from "../../tools/fluxbeam/fluxbeam_token_minting_controls"; -import { Action } from "../../types"; - -// Set Authority Action -const fluxbeamSetMintAuthorityAction: Action = { - name: "FLUXBEAM_SET_AUTHORITY_ACTION", - similes: ["change authority", "update authority", "modify authority"], - description: "Sets a new authority for a token mint", - examples: [ - [ - { - input: { - owner: "EPjFW...", - mint: "So11...", - authority: "MintTokens", - newAuthority: "NewAu...", - v2: true, - priorityFee: 100000000, - }, - output: { - status: "success", - signature: "6nSt9...", - }, - explanation: "Update mint authority", - }, - ], - ], - schema: z.object({ - owner: z.string(), - mint: z.string(), - authority: z.enum([ - "MintTokens", - "FreezeAccount", - "AccountOwner", - "CloseAccount", - ]), - newAuthority: z.string().nullable(), - v2: z.boolean().optional(), - priorityFee: z.number().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamSetAuthority( - agent, - new PublicKey(input.owner), - new PublicKey(input.mint), - input.authority as AuthorityType, - input.newAuthority ? new PublicKey(input.newAuthority) : null, - input.v2, - input.priorityFee, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamSetMintAuthorityAction; diff --git a/src/actions/fluxbeam/swapToken.ts b/src/actions/fluxbeam/swapToken.ts new file mode 100644 index 00000000..007b53be --- /dev/null +++ b/src/actions/fluxbeam/swapToken.ts @@ -0,0 +1,56 @@ +import { PublicKey } from "@solana/web3.js"; +import { Action } from "../../types/action"; +import { SolanaAgentKit } from "../../agent"; +import { z } from "zod"; +import { fluxBeamSwap } from "../../tools"; + +const fluxbeamSwapTokenAction: Action = { + name: "FLUXBEAM_SWAP_TOKEN_ACTION", + similes: [ + "swap tokens on fluxbeam", + "exchange tokens", + "trade on fluxbeam", + "convert token A to token B", + ], + description: `Swaps one token for another using the FluxBeam DEX. + Specify the input token, output token, amount, and optional slippage tolerance.`, + examples: [ + [ + { + input: { + inputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + outputMint: "So11111111111111111111111111111111111111112", + inputAmount: 500, + slippageBps: 300, + }, + output: { + status: "success", + signature: "5TgK9...", + }, + explanation: "Swap 500 USDC for SOL with a 3% slippage tolerance", + }, + ], + ], + schema: z.object({ + inputMint: z.string(), + outputMint: z.string(), + inputAmount: z.number(), + slippageBps: z.number().optional(), + }), + handler: async (agent: SolanaAgentKit, input: Record) => { + const signature = await fluxBeamSwap( + agent, + new PublicKey(input.inputMint), + new PublicKey(input.outputMint), + input.inputAmount, + input.slippageBps ?? 300, // Default slippage to 3% + ); + + return { + status: "success", + signature, + }; + }, +}; + +export default fluxbeamSwapTokenAction; diff --git a/src/actions/fluxbeam/unwrapSol.ts b/src/actions/fluxbeam/unwrapSol.ts deleted file mode 100644 index bf540671..00000000 --- a/src/actions/fluxbeam/unwrapSol.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamUnwrapSOL } from "../../tools"; -import { Action } from "../../types"; - -// Unwrap SOL Action -const fluxbeamUnwrapSolAction: Action = { - name: "FLUXBEAM_UNWRAP_SOL_ACTION", - similes: ["unwrap SOL", "convert wSOL to SOL", "get native SOL"], - description: "Unwraps wSOL back to native SOL", - examples: [ - [ - { - input: { - amount: 1, - }, - output: { - status: "success", - signature: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - }, - explanation: "Unwrap all wSOL to native SOL", - }, - ], - ], - schema: z.object({ - amount: z.number().positive(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamUnwrapSOL(agent, input.amount); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamUnwrapSolAction; diff --git a/src/actions/fluxbeam/updateV1TokenMetadata.ts b/src/actions/fluxbeam/updateV1TokenMetadata.ts deleted file mode 100644 index cdf570ec..00000000 --- a/src/actions/fluxbeam/updateV1TokenMetadata.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamUpdateV1Metadata } from "../../tools"; -import { Action } from "../../types"; - -export const fluxbeamUpdateV1TokenMetadataAction: Action = { - name: "FLUXBEAM_UPDATE_V1_METADATA_ACTION", - similes: [ - "update token metadata", - "change token details", - "modify token v1 metadata", - "edit token information", - "update token v1 details", - ], - description: `Updates the metadata of a token v1 asset, including name, symbol, and URI. - Requires update authority permission.`, - examples: [ - [ - { - input: { - mint: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", - newName: "Updated Token Name", - newSymbol: "UTN", - newUri: "https://arweave.net/newmetadata.json", - }, - output: { - status: "success", - signature: "transaction_signature_here", - }, - explanation: "Update all metadata fields for a token v1 asset", - }, - ], - ], - schema: z.object({ - mint: z.string(), - newName: z.string(), - newSymbol: z.string(), - newUri: z.string(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamUpdateV1Metadata( - agent, - new PublicKey(input.mint), - input.newName, - input.newSymbol, - input.newUri, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamUpdateV1TokenMetadataAction; diff --git a/src/actions/fluxbeam/updateV2TokenMetadata.ts b/src/actions/fluxbeam/updateV2TokenMetadata.ts deleted file mode 100644 index 5619ef88..00000000 --- a/src/actions/fluxbeam/updateV2TokenMetadata.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamUpdateV2Metadata } from "../../tools"; -import { Action } from "../../types"; - -export const fluxbeamUpdateV2TokenMetadataAction: Action = { - name: "FLUXBEAM_UPDATE_V2_METADATA_ACTION", - similes: [ - "update token2022 metadata", - "change token v2 details", - "modify token2022 information", - "edit token v2 metadata", - "update token2022 fields", - ], - description: `Updates the metadata of a token v2 (token2022) token. Can update name, symbol, URI, - and update authority. All fields are optional but requires priority fee. - Requires current update authority permission.`, - examples: [ - [ - { - input: { - mint: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", - priorityFee: 100000, - newName: "New Token Name", - newSymbol: "NTN", - newUri: "https://arweave.net/newmetadata.json", - newUpdateAuthority: "NewAuthorityAddress123", - }, - output: { - status: "success", - signature: "transaction_signature_here", - }, - explanation: - "Update all metadata fields and authority for a token v2 token", - }, - { - input: { - mint: "TokenMintAddress123", - priorityFee: 50000, - newName: "New Token Name", - }, - output: { - status: "success", - signature: "transaction_signature_here", - }, - explanation: "Update only the name field for a token v2 token", - }, - ], - ], - schema: z.object({ - mint: z.string(), - priorityFee: z.number(), - newName: z.string().optional(), - newSymbol: z.string().optional(), - newUri: z.string().optional(), - newUpdateAuthority: z.string().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxbeamUpdateV2Metadata( - agent, - new PublicKey(input.mint), - input.priorityFee, - input.newName, - input.newSymbol, - input.newUri, - input.newUpdateAuthority - ? new PublicKey(input.newUpdateAuthority) - : undefined, - ); - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamUpdateV2TokenMetadataAction; diff --git a/src/actions/fluxbeam/wrapSol.ts b/src/actions/fluxbeam/wrapSol.ts deleted file mode 100644 index 9991060d..00000000 --- a/src/actions/fluxbeam/wrapSol.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { z } from "zod"; -import { SolanaAgentKit } from "../../agent"; -import { fluxbeamWrapSOL } from "../../tools"; -import { Action } from "../../types"; - -// Wrap SOL Action -const fluxbeamWrapSolAction: Action = { - name: "FLUXBEAM_WRAP_SOL_ACTION", - similes: ["wrap SOL", "convert SOL to wSOL", "get wrapped SOL"], - description: "Wrap native SOL into wrapped SOL (wSOL)", - examples: [ - [ - { - input: { - amount: 1, - }, - output: { - status: "success", - signature: "cZy5...", - }, - explanation: "Wrap 1 SOL into wSOL", - }, - ], - ], - schema: z.object({ - amount: z.number().positive().describe("amount of sol to wrap"), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - console.log(`this is the input from the action ${JSON.stringify(input)}`); - const signature = await fluxbeamWrapSOL(agent, input.amount); - return { - status: "success", - signature: signature, - }; - }, -}; - -export default fluxbeamWrapSolAction; diff --git a/src/actions/index.ts b/src/actions/index.ts index ec9f1378..3a3ebba4 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -33,20 +33,8 @@ import launchPumpfunTokenAction from "./pumpfun/launchPumpfunToken"; import getWalletAddressAction from "./agent/getWalletAddress"; import flashOpenTradeAction from "./flash/flashOpenTrade"; import flashCloseTradeAction from "./flash/flashCloseTrade"; -import fluxbeamBridgeTokenAction from "./fluxbeam/bridgeToken"; -import fluxbeamBurnTokenAction from "./fluxbeam/burnToken"; import fluxbeamCreatePoolAction from "./fluxbeam/createPool"; -import fluxbeamCreateV1TokenAction from "./fluxbeam/createV1Token"; -import fluxbeamCreateV2TokenAction from "./fluxbeam/createV2Token"; -import fluxbeamSubmitFeeClaimAction from "./fluxbeam/fluxbeamSubmitFeeClaim"; -import fluxbeamTransferAction from "./fluxbeam/fluxbeamTransfer"; -import fluxbeamMintToAccountAction from "./fluxbeam/mintToken"; -import fluxbeamRevokeMintAuthorityAction from "./fluxbeam/revokeMintAuthority"; -import fluxbeamSetMintAuthorityAction from "./fluxbeam/setMintAuthority"; -import fluxbeamUnwrapSolAction from "./fluxbeam/unwrapSol"; -import fluxbeamWrapSolAction from "./fluxbeam/wrapSol"; -import fluxbeamUpdateV1TokenMetadataAction from "./fluxbeam/updateV1TokenMetadata"; -import fluxbeamUpdateV2TokenMetadataAction from "./fluxbeam/updateV2TokenMetadata"; +import fluxbeamSwapTokenAction from "./fluxbeam/swapToken"; import createMultisigAction from "./squads/createMultisig"; import approveMultisigProposalAction from "./squads/approveMultisigProposal"; import createMultisigProposalAction from "./squads/createMultisigProposal"; @@ -149,20 +137,8 @@ export const ACTIONS = { LAUNCH_PUMPFUN_TOKEN_ACTION: launchPumpfunTokenAction, FLASH_OPEN_TRADE_ACTION: flashOpenTradeAction, FLASH_CLOSE_TRADE_ACTION: flashCloseTradeAction, - FLUXBEAM_BRIDGE_TOKEN_ACTION: fluxbeamBridgeTokenAction, - FLUXBEAM_BURN_TOKEN_ACTION: fluxbeamBurnTokenAction, FLUXBEAM_CREATE_POOL_ACTION: fluxbeamCreatePoolAction, - FLUXBEAM_CREATE_V1_TOKEN_ACTION: fluxbeamCreateV1TokenAction, - FLUXBEAM_CREATE_V2_TOKEN_ACTION: fluxbeamCreateV2TokenAction, - FLUXBEAM_SUBMIT_FEE_CLAIM_ACTION: fluxbeamSubmitFeeClaimAction, - FLUXBEAM_TRANSFER_ACTION: fluxbeamTransferAction, - FLUXBEAM_MINT_TOKEN_ACTION: fluxbeamMintToAccountAction, - FLUXBEAM_REVOKE_MINT_AUTHORITY_ACTION: fluxbeamRevokeMintAuthorityAction, - FLUXBEAM_SET_MINT_AUTHORITY_ACTION: fluxbeamSetMintAuthorityAction, - FLUXBEAM_UNWRAP_SOL_ACTION: fluxbeamUnwrapSolAction, - FLUXBEAM_UPDATE_V1_TOKEN_METADATA_ACTION: fluxbeamUpdateV1TokenMetadataAction, - FLUXBEAM_UPDATE_V2_TOKEN_METADATA_ACTION: fluxbeamUpdateV2TokenMetadataAction, - FLUXBEAM_WRAP_SOL_ACTION: fluxbeamWrapSolAction, + FLUXBEAM_SWAP_ACTION: fluxbeamSwapTokenAction, CREATE_MULTISIG_ACTION: createMultisigAction, DEPOSIT_TO_MULTISIG_ACTION: depositToMultisigAction, TRANSFER_FROM_MULTISIG_ACTION: transferFromMultisigAction, diff --git a/src/agent/index.ts b/src/agent/index.ts index 12e3e3fe..f6bf119f 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -132,23 +132,7 @@ import { InputAssetStruct, fluxbeamBurnToken, fluxBeamCreatePool, - fluxbeamSubmitFeeClaim, - fluxbeamUpdateV1Metadata, - fluxbeamUpdateV2Metadata, fluxBeamSwap, - fluxbeamGetClaimWithheldTokensToMint, - fluxbeamGetClaimWitheldTokensFromMint, - fluxbeamGetClaimWitheldTokens, - fluxbeamCreateTokenV2, - fluxbeamCreateTokenV1, - fluxbeamTransferSol, - fluxbeamTransferSplToken, - fluxbeamUnwrapSOL, - fluxbeamWrapSOL, - fluxbeamMintToAccount, - fluxbeamRevokeAuthority, - fluxbeamSetAuthority, - ExtensionConfig, } from "../tools"; import { Config, @@ -175,15 +159,6 @@ import { } from "@metaplex-foundation/digital-asset-standard-api"; import { AlloraInference, AlloraTopic } from "@alloralabs/allora-sdk"; import { AuthorityType } from "@solana/spl-token"; -import { - fluxbeamMintToAccount, - fluxbeamRevokeAuthority, - fluxbeamSetAuthority, -} from "../tools/fluxbeam/fluxbeam_token_minting_controls"; -import { - Chain, - fluxbeamBridgeTokens, -} from "../tools/fluxbeam/fluxbeam_bridge_tokens"; /** * Main class for interacting with Solana blockchain @@ -1136,31 +1111,6 @@ export class SolanaAgentKit { ): Promise { return simulate_switchboard_feed(this, feed, crossbarUrl); } - async fluxbeamBridgeTokens( - destination: Chain, - amount: number, - destinationWalletAddress: string, - fromToken: string, - toToken: string, - gasDrop?: number, - ) { - return fluxbeamBridgeTokens( - this, - destination, - destinationWalletAddress, - fromToken, - toToken, - amount, - gasDrop, - ); - } - async fluxbeamBurnToken( - mint: PublicKey, - amount: number, - v2: boolean = true, - ): Promise { - return fluxbeamBurnToken(this, mint, amount, v2); - } async fluxbeamCreatePool( token_a: PublicKey, token_a_amount: number, @@ -1175,85 +1125,6 @@ export class SolanaAgentKit { token_b_amount, ); } - async fluxbeamSubmitFeeClaim( - payer: PublicKey, - mint: PublicKey, - priorityFee: number, - ): Promise { - return fluxbeamSubmitFeeClaim(this, payer, mint, priorityFee); - } - async fluxbeamUpdateV1Metadata( - mint: PublicKey, - newName: string, - newSymbol: string, - newUri: string, - ): Promise { - return fluxbeamUpdateV1Metadata(this, mint, newName, newSymbol, newUri); - } - async fluxbeamUpdateV2Metadata( - mint: PublicKey, - priorityFee: number, - newName?: string, - newSymbol?: string, - newUri?: string, - newUpdateAuthority?: PublicKey, - ): Promise { - return fluxbeamUpdateV2Metadata( - this, - mint, - priorityFee, - newName, - newSymbol, - newUri, - newUpdateAuthority, - ); - } - async fluxbeamMintToAccount( - owner: PublicKey, - tokenMint: PublicKey, - amount: bigint, - v2: boolean, - ): Promise { - return fluxbeamMintToAccount(this, owner, tokenMint, amount, v2); - } - async fluxbeamSetAuthority( - owner: PublicKey, - mint: PublicKey, - authority: AuthorityType, - newAuthority: PublicKey | null, - v2: boolean = true, - priorityFee: number = 100_000_000_000, - additional_signers: Keypair[] = [], - ): Promise { - return fluxbeamSetAuthority( - this, - owner, - mint, - authority, - newAuthority, - v2, - priorityFee, - additional_signers, - ); - } - fluxbeamRevokeAuthority( - owner: PublicKey, - mint: PublicKey, - authority: AuthorityType, - v2: boolean = true, - priorityFee: number = 100_000_000, - additional_signers: Keypair[] = [], - ): Promise { - return fluxbeamRevokeAuthority( - this, - owner, - mint, - authority, - v2, - priorityFee, - additional_signers, - ); - } async fluxBeamSwap( inputMint: PublicKey = TOKENS.USDC, outputMint: PublicKey, @@ -1262,120 +1133,4 @@ export class SolanaAgentKit { ): Promise { return fluxBeamSwap(this, inputMint, outputMint, inputAmount, slippageBps); } - async fluxbeamTransferSplToken( - mint: PublicKey, - dstOwner: PublicKey, - amount: number, - v2: boolean = true, - allowOwnerOffCurve = false, - ): Promise { - return fluxbeamTransferSplToken( - this, - mint, - dstOwner, - amount, - v2, - allowOwnerOffCurve, - ); - } - - async fluxbeamTransferSol( - dstOwner: PublicKey, - amount: number, - ): Promise { - return fluxbeamTransferSol(this, dstOwner, amount); - } - - async fluxbeamCreateTokenV1( - name: string, - symbol: string, - decimals: number = 9, - uri?: string, - imagePath?: string, - initialSupply?: number, - ): Promise { - return fluxbeamCreateTokenV1( - this, - name, - symbol, - decimals, - initialSupply, - imagePath, - uri, - ); - } - - async fluxbeamCreateTokenV2( - owner: PublicKey, - tokenMintKeypair: Keypair, - name: string, - symbol: string, - totalSupply: bigint, - mintAuthority: PublicKey, - freezeAuthority: PublicKey | null, - decimals = 6, - mintTotalSupply = true, - priorityFee: number, - extensions: ExtensionConfig[], - description?: string, - metadataUri?: string, - imagePath?: string, - imageUri?: string, - ): Promise { - return fluxbeamCreateTokenV2( - this, - owner, - tokenMintKeypair, - name, - symbol, - totalSupply, - mintAuthority, - freezeAuthority, - decimals, - mintTotalSupply, - priorityFee, - extensions, - description, - metadataUri, - imagePath, - imageUri, - ); - } - - async fluxbeamGetClaimWithheldTokens( - mint: PublicKey, - authority: PublicKey, - srcAccounts: PublicKey[], - payer?: PublicKey, - ): Promise { - return fluxbeamGetClaimWitheldTokens( - this, - mint, - authority, - srcAccounts, - payer, - ); - } - - async fluxbeamGetClaimWithheldTokensFromMint( - mint: PublicKey, - payer?: PublicKey, - ): Promise { - return fluxbeamGetClaimWitheldTokensFromMint(this, mint, payer); - } - - async fluxbeamGetClaimWithheldTokensToMint( - mint: PublicKey, - srcAccounts: PublicKey[], - ): Promise { - return fluxbeamGetClaimWithheldTokensToMint(this, mint, srcAccounts); - } - - async fluxbeamWrapSOL(amount: number): Promise { - return fluxbeamWrapSOL(this, amount); - } - - async fluxbeamUnwrapSOL(amount: number): Promise { - return fluxbeamUnwrapSOL(this, amount); - } } diff --git a/src/constants/index.ts b/src/constants/index.ts index d980524d..c3051db9 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -63,6 +63,9 @@ export const FEE_ACCOUNT = new PublicKey( ); export const FLUXBEAM_BASE_URI = "https://api.fluxbeam.xyz/v1"; +export const FLUXBEAM_SWAP_PROGRAM_ID = new PublicKey( + "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X", +); export const MEMO_PROGRAM_ID = new PublicKey( "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", ); diff --git a/src/langchain/fluxbeam/airdrop_tokens.ts b/src/langchain/fluxbeam/airdrop_tokens.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/src/langchain/fluxbeam/bridge_token.ts b/src/langchain/fluxbeam/bridge_token.ts deleted file mode 100644 index aec0521f..00000000 --- a/src/langchain/fluxbeam/bridge_token.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; -import { Chain } from "../../tools/fluxbeam/fluxbeam_bridge_tokens"; - -export class SolanaFluxbeamBridgeTokensTool extends Tool { - name = "solana_bridge_tokens"; - description = `This tool bridges tokens from Solana to a destination blockchain. - - Inputs (input is a JSON string): - destination: string, e.g., "ethereum" (required) - destinationWalletAddress: string, wallet address on destination chain (required) - fromToken: string, e.g., "SOL" (required) - toToken: string, e.g., "USDT" (required) - gasDrop?: number, optional gas drop to be applied to the transaction (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - // Validate destination chain type - if (!(parsedInput.destination in Chain)) { - throw new Error("Invalid destination chain."); - } - - // Bridge the tokens - const signature = await this.solanaKit.fluxbeamBridgeTokens( - parsedInput.destination as Chain, - parsedInput.destinationWalletAddress, - parsedInput.fromToken, - parsedInput.toToken, - parsedInput.gasDrop, - ); - - return JSON.stringify({ - status: "success", - message: "Token bridge initiated successfully", - transaction: signature, - track_url: `https://explorer.mayan.finance/tx/${signature}`, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/burn_token.ts b/src/langchain/fluxbeam/burn_token.ts deleted file mode 100644 index b6d3fb52..00000000 --- a/src/langchain/fluxbeam/burn_token.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamBurnTokenTool extends Tool { - name = "solana_burn_token"; - description = `This tool can be used to burn a specified amount of tokens. - - Inputs (input is a JSON string): - mint: string, eg "So11111111111111111111111111111111111111112" (required) - amount: number, eg 1 or 0.01 (required) - decimals: number, eg 6 or 9 (required) - v2: boolean eg true or false (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamBurnToken( - new PublicKey(parsedInput.mint), - parsedInput.amount, - parsedInput.v2 || true, - ); - - return JSON.stringify({ - status: "success", - message: "Token burn executed successfully", - transaction: signature, - mint: parsedInput.mint, - amount: parsedInput.amount, - decimals: parsedInput.decimals, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/create_token_v1.ts b/src/langchain/fluxbeam/create_token_v1.ts deleted file mode 100644 index 4a35952d..00000000 --- a/src/langchain/fluxbeam/create_token_v1.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamCreateTokenV1Tool extends Tool { - name = "solana_create_token_v1"; - description = `This tool creates a legacy SPL token on the Solana blockchain. - - Inputs (input is a JSON string): - name: string, token name (required) - symbol: Symbol of the token - decimals: Number of decimals eg. 9 - initialSupply: number (required) - imagePath: path to the image - uri: URI for the token metadata - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamCreateTokenV1( - parsedInput.name, - parsedInput.symbol, - parsedInput.decimals, - parsedInput.uri, - parsedInput.imagePath, - parsedInput.initialSupply, - ); - - return JSON.stringify({ - status: "success", - message: "Token created successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/create_token_v2.ts b/src/langchain/fluxbeam/create_token_v2.ts deleted file mode 100644 index b5b7c05d..00000000 --- a/src/langchain/fluxbeam/create_token_v2.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamCreateTokenV2Tool extends Tool { - name = "solana_create_token_v2"; - description = `This tool creates a token2022 token on the Solana blockchain. - - Inputs (input is a JSON string): - owner: string, e.g., "OwnerPublicKey" (required) - tokenMintKeypair: Keypair, e.g., "TokenMintKeypair" (required) - name: string, token name (required) - symbol: string, token symbol (required) - metadataUri: string uri of token metadata, - totalSupply: bigint, - mintAuthority: PublicKey, - freezeAuthority: PublicKey | null, - decimals = 6, - mintTotalSupply = true, - priorityFee: number, e.g., 5000 (required) - extensions: ExtensionConfig[] array of token extensions and their custom config objects (required) - description?: string token description (optional) - metadataUri?: string metadataURI (optional), - imagePath?: string image path (optional), - imageUri?: string, optional image URL (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamCreateTokenV2( - new PublicKey(parsedInput.owner), - parsedInput.tokenMintKeypair, - parsedInput.name, - parsedInput.symbol, - parsedInput.description, - parsedInput.metadataURI, - parsedInput.totalSupply, - parsedInput.mintAuthority, - parsedInput.freezeAuthority, - parsedInput.decimals || 6, - parsedInput.mintTotalSupply || true, - parsedInput.priorityFee, - parsedInput.imageData, - parsedInput.imageUri, - ); - - return JSON.stringify({ - status: "success", - message: "Token created successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/fee_management.ts b/src/langchain/fluxbeam/fee_management.ts deleted file mode 100644 index 344ec150..00000000 --- a/src/langchain/fluxbeam/fee_management.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamSubmitFeeClaimTool extends Tool { - name = "solana_submit_fee_claim"; - description = `This tool can be used to submit a fee claim transaction. - - Inputs (input is a JSON string): - payer: string, e.g., "SomePubKeyString" (required) - mint: string, e.g., "SomeMintPubKeyString" (required) - priorityFee: number, e.g., 100000 (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamSubmitFeeClaim( - new PublicKey(parsedInput.payer), - new PublicKey(parsedInput.mint), - parsedInput.priorityFee, - ); - - return JSON.stringify({ - status: "success", - message: "Fee claim transaction submitted successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/index.ts b/src/langchain/fluxbeam/index.ts index 3c585d7c..4102a41a 100644 --- a/src/langchain/fluxbeam/index.ts +++ b/src/langchain/fluxbeam/index.ts @@ -1,13 +1,2 @@ -export * from "./bridge_token"; -export * from "./burn_token"; -export * from "./create_token_v1"; -export * from "./create_token_v2"; export * from "./create_pool"; -export * from "./fee_management"; -export * from "./swap"; -export * from "./token_minting_controls"; -export * from "./transfer"; -export * from "./update_v1_token_metadata"; -export * from "./update_v2_token_metadata"; -export * from "./withheld_amounts_tracking"; -export * from "./wrap_and_unwrap_sol"; +export * from "./swap_token"; diff --git a/src/langchain/fluxbeam/swap.ts b/src/langchain/fluxbeam/swap_token.ts similarity index 94% rename from src/langchain/fluxbeam/swap.ts rename to src/langchain/fluxbeam/swap_token.ts index f6d9ed70..ad15ac11 100644 --- a/src/langchain/fluxbeam/swap.ts +++ b/src/langchain/fluxbeam/swap_token.ts @@ -3,8 +3,8 @@ import { Tool } from "langchain/tools"; import { SolanaAgentKit } from "../../agent"; import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; -export class SolanaFluxBeamSwapTool extends Tool { - name = "solana_fluxbeam_swap"; +export class SolanaFluxbeamSwapTokenTool extends Tool { + name = "solana_fluxbeam_swap_token"; description = `This tool swaps tokens using the FluxBeam DEX. Inputs (input is a JSON string): diff --git a/src/langchain/fluxbeam/token_minting_controls.ts b/src/langchain/fluxbeam/token_minting_controls.ts deleted file mode 100644 index a18b1b68..00000000 --- a/src/langchain/fluxbeam/token_minting_controls.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { TOKEN_2022_PROGRAM_ID, AuthorityType } from "@solana/spl-token"; -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamMintToAccountTool extends Tool { - name = "solana_fluxbeam_mint_to_account"; - description = `This tool mints tokens to a specified account. - - Inputs (input is a JSON string): - owner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) - tokenMint: string, eg "So11111111111111111111111111111111111111112" (required) - amount: bigint, eg 1000000000000000n (required, amount in token decimals) - program?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamMintToAccount( - new PublicKey(parsedInput.owner), - new PublicKey(parsedInput.tokenMint), - BigInt(parsedInput.amount), - parsedInput.v2 || true, - ); - - return JSON.stringify({ - status: "success", - message: "Tokens minted successfully", - transaction: signature, - owner: parsedInput.owner, - tokenMint: parsedInput.tokenMint, - amount: parsedInput.amount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaFluxbeamSetAuthorityTool extends Tool { - name = "solana_fluxbeam_set_authority"; - description = `This tool sets a new authority for a token mint. - - Inputs (input is a JSON string): - owner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) - mint: string, eg "So11111111111111111111111111111111111111112" (required) - authority: string, eg "MintTokens" (required, AuthorityType as a string) - newAuthority: string | null, eg "NewAuthorityPublicKey" or null (required) - programID?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID) - priorityFee?: number, eg 100000000000 (optional, default is 100 lamports) - additional_signers: Keypair[] (optional)`; - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamSetAuthority( - new PublicKey(parsedInput.owner), - new PublicKey(parsedInput.mint), - parsedInput.authority as AuthorityType, - parsedInput.newAuthority - ? new PublicKey(parsedInput.newAuthority) - : null, - parsedInput.programID || TOKEN_2022_PROGRAM_ID, - parsedInput.priorityFee || 100_000_000_000, - parsedInput.additional_signers, - ); - - return JSON.stringify({ - status: "success", - message: "Authority set successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaFluxbeamRevokeAuthorityTool extends Tool { - name = "solana_fluxbeam_revoke_authority"; - description = `This tool revokes authority for a token mint. - - Inputs (input is a JSON string): - owner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) - mint: string, eg "So11111111111111111111111111111111111111112" (required) - authority: string, eg "MintTokens" (required, AuthorityType as a string) - programID?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID) - priorityFee?: number, eg 100000000000 (optional, default is 100 lamports) - additional_signers: Keypair[] (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamRevokeAuthority( - new PublicKey(parsedInput.owner), - new PublicKey(parsedInput.mint), - parsedInput.authority as AuthorityType, - parsedInput.programID || TOKEN_2022_PROGRAM_ID, - parsedInput.priorityFee || 100_000_000_000, - parsedInput.additional_signers, - ); - - return JSON.stringify({ - status: "success", - message: "Authority revoked successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/transfer.ts b/src/langchain/fluxbeam/transfer.ts deleted file mode 100644 index cf849d43..00000000 --- a/src/langchain/fluxbeam/transfer.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamTransferSplTokenTool extends Tool { - name = "solana_transfer_spl_token"; - description = `This tool transfers SPL tokens from the agent's wallet to another wallet. - - Inputs (input is a JSON string): - mint: string, eg "So11111111111111111111111111111111111111112" (required) - dstOwner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) - amount: number, eg 1 or 0.01 (required) - program?: string, eg "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" (optional, defaults to TOKEN_2022_PROGRAM_ID) - allowOwnerOffCurve?: boolean, eg true or false (optional, defaults to false)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamTransferSplToken( - new PublicKey(parsedInput.mint), - new PublicKey(parsedInput.dstOwner), - parsedInput.amount, - parsedInput.v2 || true, - parsedInput.allowOwnerOffCurve || false, - ); - - return JSON.stringify({ - status: "success", - message: "SPL token transfer executed successfully", - transaction: signature, - mint: parsedInput.mint, - dstOwner: parsedInput.dstOwner, - amount: parsedInput.amount, - decimals: parsedInput.decimals, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaFluxbeamTransferSolTool extends Tool { - name = "solana_transfer_sol"; - description = `This tool transfers SOL from the agent's wallet to another wallet. - - Inputs (input is a JSON string): - dstOwner: string, eg "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkgMsCVZ93TK" (required) - amount: number, eg 1000000 (required, amount in lamports)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamTransferSol( - new PublicKey(parsedInput.dstOwner), - parsedInput.amount, - ); - - return JSON.stringify({ - status: "success", - message: "SOL transfer executed successfully", - transaction: signature, - dstOwner: parsedInput.dstOwner, - amount: parsedInput.amount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/update_v1_token_metadata.ts b/src/langchain/fluxbeam/update_v1_token_metadata.ts deleted file mode 100644 index 088d47e0..00000000 --- a/src/langchain/fluxbeam/update_v1_token_metadata.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamUpdateV1TokenMetadataTool extends Tool { - name = "solana_update_v1_token_metadata"; - description = `This tool updates metadata for a v1 (legacy) token. - - Inputs (input is a JSON string): - mint: string, e.g., "TokenMintPublicKey" (required) - newName: string, token name (required) - newSymbol: string, token symbol (required) - newUri: string, token symbol (required) - `; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamUpdateV1Metadata( - new PublicKey(parsedInput.mint), - parsedInput.name, - parsedInput.symbol, - parsedInput.uri, - ); - - return JSON.stringify({ - status: "success", - message: "Metadata updated successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/update_v2_token_metadata.ts b/src/langchain/fluxbeam/update_v2_token_metadata.ts deleted file mode 100644 index 98a3902b..00000000 --- a/src/langchain/fluxbeam/update_v2_token_metadata.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamUpdateV2TokenMetadataTool extends Tool { - name = "solana_update_v2_token_metadata"; - description = `This tool updates metadata for a token using the 2022 standard. - - Inputs (input is a JSON string): - mint: string, e.g., "TokenMintPublicKey" (required) - priority fee - newName: string, token name (optional) - newSymbol: string, token symbol (optional) - newUri: string token uri (optional) - newUpdateAuthority PublicKey (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = this.solanaKit.fluxbeamUpdateV2Metadata( - new PublicKey(parsedInput.mint), - parsedInput.newName, - parsedInput.newSymbol, - parsedInput.newUri, - parsedInput.newUpdateAuthority, - ); - - return JSON.stringify({ - status: "success", - message: "Token 2022 metadata updated successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/withheld_amounts_tracking.ts b/src/langchain/fluxbeam/withheld_amounts_tracking.ts deleted file mode 100644 index 845fda82..00000000 --- a/src/langchain/fluxbeam/withheld_amounts_tracking.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamGetClaimWithheldTokensTool extends Tool { - name = "solana_claim_withheld_tokens"; - description = `This tool claims all withheld tokens for a given mint. - - Inputs (input is a JSON string): - mint: string, e.g., "So11111111111111111111111111111111111111112" (required) - authority: string, e.g., "AuthorityPublicKeyString" (required) - srcAccounts: string[], e.g., ["Account1PubKey", "Account2PubKey"] (required) - payer?: string, e.g., "PayerPublicKeyString" (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signatures = await this.solanaKit.fluxbeamGetClaimWithheldTokens( - new PublicKey(parsedInput.mint), - new PublicKey(parsedInput.authority), - parsedInput.srcAccounts.map((acc: string) => new PublicKey(acc)), - parsedInput.payer ? new PublicKey(parsedInput.payer) : undefined, - ); - - return JSON.stringify({ - status: "success", - message: "Claimed withheld tokens successfully", - transactions: signatures, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} -export class SolanaFluxbeamGetClaimWithheldTokensFromMintTool extends Tool { - name = "solana_claim_withheld_tokens_from_mint"; - description = `This tool claims withheld tokens from the mint account. - - Inputs (input is a JSON string): - mint: string, e.g., "So11111111111111111111111111111111111111112" (required) - payer?: string, e.g., "PayerPublicKeyString" (optional)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = - await this.solanaKit.fluxbeamGetClaimWithheldTokensFromMint( - new PublicKey(parsedInput.mint), - parsedInput.payer ? new PublicKey(parsedInput.payer) : undefined, - ); - - return JSON.stringify({ - status: "success", - message: "Claimed withheld tokens from mint successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} -export class SolanaFluxbeamGetClaimWithheldTokensToMintTool extends Tool { - name = "solana_claim_withheld_tokens_to_mint"; - description = `This tool harvests withheld tokens to the mint account (permissionless). - - Inputs (input is a JSON string): - mint: string, e.g., "So11111111111111111111111111111111111111112" (required) - srcAccounts: string[], e.g., ["Account1PubKey", "Account2PubKey"] (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signatures = - await this.solanaKit.fluxbeamGetClaimWithheldTokensToMint( - new PublicKey(parsedInput.mint), - parsedInput.srcAccounts.map((acc: string) => new PublicKey(acc)), - ); - - return JSON.stringify({ - status: "success", - message: "Harvested withheld tokens to mint successfully", - transactions: signatures, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts b/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts deleted file mode 100644 index 1e13ebd0..00000000 --- a/src/langchain/fluxbeam/wrap_and_unwrap_sol.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; - -export class SolanaFluxbeamWrapSOLTool extends Tool { - name = "solana_fluxbeam_wrap_sol"; - description = `Wraps SOL into wSOL for the specified amount in SOL - - Inputs (input is a JSON string): - amount: number, eg 0.0012 (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - console.log(`this is the input ${input}`); - const parsedInput = JSON.parse(input); - // console.log(`this is the input ${input}}`); - console.log(`this is the ${JSON.stringify(parsedInput)}`); - const signature = await this.solanaKit.fluxbeamWrapSOL( - parsedInput.amount, - ); - return JSON.stringify({ - status: "success", - message: "SOL wrapped successfully", - transaction: signature, - amount: parsedInput.amount, - }); - } catch (error: any) { - console.log( - `this is the error stringified ${JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - })}`, - ); - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} - -export class SolanaFluxbeamUnwrapSOLTool extends Tool { - name = "solana_fluxbeam_unwrap_sol"; - description = `This tool unwraps wSOL back into SOL for the user's wallet. - - Inputs (input is a JSON string): - amount: number in SOL, eg 0.0012 (required)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxbeamUnwrapSOL( - parsedInput.amount, - ); - - return JSON.stringify({ - status: "success", - message: "wSOL unwrapped successfully", - transaction: signature, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/index.ts b/src/langchain/index.ts index 07904931..e4e235aa 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -147,22 +147,8 @@ import { SolanaMergeTokensTool, SolanaSpreadTokenTool, SolanaSwitchboardSimulateFeed, - SolanaFluxbeamBridgeTokensTool, - SolanaFluxbeamBurnTokenTool, SolanaFluxbeamCreatePoolTool, - SolanaFluxbeamSubmitFeeClaimTool, - SolanaFluxbeamUpdateV1TokenMetadataTool, - SolanaFluxbeamUpdateV2TokenMetadataTool, - SolanaFluxbeamMintToAccountTool, - SolanaFluxbeamSetAuthorityTool, - SolanaFluxbeamRevokeAuthorityTool, - SolanaFluxbeamCreateTokenV1Tool, - SolanaFluxbeamCreateTokenV2Tool, - SolanaFluxbeamGetClaimWithheldTokensFromMintTool, - SolanaFluxbeamGetClaimWithheldTokensToMintTool, - SolanaFluxbeamGetClaimWithheldTokensTool, - SolanaFluxbeamWrapSOLTool, - SolanaFluxbeamUnwrapSOLTool, + SolanaFluxbeamSwapTokenTool, } from "./index"; export function createSolanaTools(solanaKit: SolanaAgentKit) { @@ -279,22 +265,7 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaMergeTokensTool(solanaKit), new SolanaSpreadTokenTool(solanaKit), new SolanaAlloraGetPriceInference(solanaKit), - new SolanaFluxbeamBridgeTokensTool(solanaKit), - new SolanaFluxbeamBurnTokenTool(solanaKit), new SolanaFluxbeamCreatePoolTool(solanaKit), - new SolanaFluxbeamCreatePoolTool(solanaKit), - new SolanaFluxbeamSubmitFeeClaimTool(solanaKit), - new SolanaFluxbeamUpdateV1TokenMetadataTool(solanaKit), - new SolanaFluxbeamUpdateV2TokenMetadataTool(solanaKit), - new SolanaFluxbeamMintToAccountTool(solanaKit), - new SolanaFluxbeamSetAuthorityTool(solanaKit), - new SolanaFluxbeamRevokeAuthorityTool(solanaKit), - new SolanaFluxbeamCreateTokenV1Tool(solanaKit), - new SolanaFluxbeamCreateTokenV2Tool(solanaKit), - new SolanaFluxbeamGetClaimWithheldTokensFromMintTool(solanaKit), - new SolanaFluxbeamGetClaimWithheldTokensToMintTool(solanaKit), - new SolanaFluxbeamGetClaimWithheldTokensTool(solanaKit), - new SolanaFluxbeamWrapSOLTool(solanaKit), - new SolanaFluxbeamUnwrapSOLTool(solanaKit), + new SolanaFluxbeamSwapTokenTool(solanaKit), ]; } diff --git a/src/langchain/solana/balance.ts b/src/langchain/solana/balance.ts index 3459e9a1..fd84b885 100644 --- a/src/langchain/solana/balance.ts +++ b/src/langchain/solana/balance.ts @@ -18,7 +18,6 @@ export class SolanaBalanceTool extends Tool { protected async _call(input: string): Promise { try { - console.log(`this is the input ${input}`); const tokenAddress = input ? new PublicKey(input) : undefined; const balance = await this.solanaKit.getBalance(tokenAddress); diff --git a/src/tools/fluxbeam/fluxbeam_bridge_tokens.ts b/src/tools/fluxbeam/fluxbeam_bridge_tokens.ts deleted file mode 100644 index 012936e4..00000000 --- a/src/tools/fluxbeam/fluxbeam_bridge_tokens.ts +++ /dev/null @@ -1,115 +0,0 @@ -/* eslint-disable no-console */ -import { fetchQuote, swapFromSolana } from "@mayanfinance/swap-sdk"; -import { SolanaAgentKit } from "../../agent"; -import { Transaction, VersionedTransaction } from "@solana/web3.js"; - -export enum Chain { - Ethereum = "ethereum", - Bsc = "bsc", - Polygon = "polygon", - Avalanche = "avalanche", - Solana = "solana", - Arbitrum = "arbitrum", - Optimism = "optimism", - Base = "base", -} - -export const GAS_DROP_LIMITS: Record = { - [Chain.Ethereum]: 0.05, - [Chain.Bsc]: 0.02, - [Chain.Polygon]: 0.2, - [Chain.Avalanche]: 0.2, - [Chain.Solana]: 0.2, - [Chain.Arbitrum]: 0.01, - [Chain.Optimism]: 0.01, - [Chain.Base]: 0.01, -}; - -/** - * Bridges tokens from Solana to a destination chain using the Mayan Finance protocol. - * - * This function performs a token swap from Solana to another blockchain (Ethereum, BSC, Polygon, etc.). - * It fetches a quote for the swap, signs the transaction, and then initiates the swap. - * - * @param {SolanaAgentKit} agent - The agent responsible for the Solana wallet and network connection. - * @param {Chain} destination - The destination blockchain to which the tokens are being swapped. - * @param {string} destinationWalletAddress - The wallet address on the destination chain to receive the tokens. - * @param {string} fromToken - The token address to be swapped from. - * @param {string} toToken - The token address to be swapped to. - * @param {number} [gasDrop] - The optional gas drop to be applied to the transaction. Must not exceed the limit for the source chain. - * - * @throws {Error} Throws an error if the gas drop exceeds the source chain's limit. - * @throws {Error} Throws an error if the transaction type is invalid during signing. - * - * @returns {Promise} A promise that resolves to the transaction signature of the initiated swap. - * - */ - -export async function fluxbeamBridgeTokens( - agent: SolanaAgentKit, - destination: Chain, - destinationWalletAddress: string, - fromToken: string, - toToken: string, - amount: number, - gasDrop?: number, -): Promise { - async function signer(trx: Transaction): Promise; - async function signer( - trx: VersionedTransaction, - ): Promise; - async function signer( - trx: Transaction | VersionedTransaction, - ): Promise { - if ("version" in trx) { - (trx as VersionedTransaction).sign([agent.wallet]); - } else { - (trx as Transaction).partialSign(agent.wallet); - } - return trx; - } - try { - // Validate gas drop - if (gasDrop !== undefined && gasDrop > GAS_DROP_LIMITS[destination]) { - throw new Error( - `Gas drop for ${destination} cannot exceed ${GAS_DROP_LIMITS[destination]}`, - ); - } - - const quotes = await fetchQuote({ - amount: amount, - fromToken: fromToken, - toToken: toToken, - fromChain: Chain.Solana, - toChain: destination, - slippageBps: 50, // means 3% - // gasDrop: gasDrop ?? 0.04, // optional - referrerBps: 5, // optional - }); - for (const quote of quotes) { - console.log(quote); - } - - //just pass the fn the txn object that it uses is internally implemented - const swapTrx = await swapFromSolana( - quotes[0], - agent.wallet_address.toString(), - destinationWalletAddress, - null, - signer, - agent.connection, - ); - - console.log("Swap initiated! Transaction signature:", swapTrx.signature); - - // You can track the swap status using the Mayan Explorer API - console.log( - "Track your swap at:", - `https://explorer.mayan.finance/tx/${swapTrx.signature}`, - ); - - return swapTrx.signature; - } catch (error: any) { - throw Error(`Bridging failed: ${error.message}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_burn_token.ts b/src/tools/fluxbeam/fluxbeam_burn_token.ts deleted file mode 100644 index 0580531a..00000000 --- a/src/tools/fluxbeam/fluxbeam_burn_token.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { PublicKey, Transaction } from "@solana/web3.js"; -import { - getAssociatedTokenPDA, - sendTransaction, - signTransaction, -} from "../../utils/FluxbeamClient"; -import { - createBurnCheckedInstruction, - getMint, - TOKEN_2022_PROGRAM_ID, - TOKEN_PROGRAM_ID, -} from "@solana/spl-token"; -import { SolanaAgentKit } from "../../agent"; - -/** - * Burns a specified amount of tokens - * @param agent SolanaAgentKit instance - * @param mint Token mint address - * @param amount Amount of tokens to burn - * @param program Optional token program ID (defaults to TOKEN_2022_PROGRAM_ID) - * @returns Transaction signature - */ -export async function fluxbeamBurnToken( - agent: SolanaAgentKit, - mint: PublicKey, - amount: number, - v2: boolean = true, -): Promise { - try { - const program = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; - const decimals = ( - await getMint(agent.connection, mint, "finalized", program) - ).decimals; - const srcAta = await getAssociatedTokenPDA( - mint, - agent.wallet_address, - program, - ); - const transaction = new Transaction(); - transaction.add( - createBurnCheckedInstruction( - srcAta, - mint, - agent.wallet_address, - amount, - decimals, - [], - program, - ), - ); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw new Error(`Burn token failed: ${error.message}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_create_pool.ts b/src/tools/fluxbeam/fluxbeam_create_pool.ts index f7270c2f..f918207b 100644 --- a/src/tools/fluxbeam/fluxbeam_create_pool.ts +++ b/src/tools/fluxbeam/fluxbeam_create_pool.ts @@ -1,14 +1,15 @@ import { VersionedTransaction, PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../../index"; import { FLUXBEAM_BASE_URI, TOKENS } from "../../constants"; -import { getMint } from "@solana/spl-token"; +import { getTokenDecimals } from "../../utils/FluxbeamUtils"; /** * Create a new pool using FluxBeam * @param agent SolanaAgentKit instance - * @param outputMint Target token mint address - * @param inputAmount Amount to swap (in token decimals) - * @param inputMint Source token mint address (defaults to USDC) + * @param token_a token mint address of the first token + * @param token_a_amount Amount to swap (in token decimals) + * @param token_b Source token mint address (defaults to USDC) + * @param token_b_amount Source token mint address (defaults to USDC) * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) * @returns Transaction signature */ @@ -24,14 +25,13 @@ export async function fluxBeamCreatePool( const isTokenA_NativeSol = token_a.equals(TOKENS.SOL); const tokenA_Decimals = isTokenA_NativeSol ? 9 - : (await getMint(agent.connection, token_a)).decimals; + : await getTokenDecimals(agent, token_a); const scaledAmountTokenA = token_a_amount * Math.pow(10, tokenA_Decimals); - const isTokenB_NativeSol = token_b.equals(TOKENS.SOL); const tokenB_Decimals = isTokenB_NativeSol ? 9 - : (await getMint(agent.connection, token_b)).decimals; + : await getTokenDecimals(agent, token_b); const scaledAmountTokenB = token_b_amount * Math.pow(10, tokenB_Decimals); const response = await ( @@ -46,7 +46,6 @@ export async function fluxBeamCreatePool( token_b: token_b, token_a_amount: scaledAmountTokenA, token_b_amount: scaledAmountTokenB, - priorityFeeLamports: 500000, }), }) ).json(); @@ -67,14 +66,8 @@ export async function fluxBeamCreatePool( skipPreflight: true, }, ); - const latestBlockhash = await agent.connection.getLatestBlockhash(); - await agent.connection.confirmTransaction({ - signature, - blockhash: latestBlockhash.blockhash, - lastValidBlockHeight: latestBlockhash.lastValidBlockHeight, - }); return signature; } catch (error: any) { - throw new Error(`Swap failed: ${error.message}`); + throw new Error(`Failed to create fluxbeam pool: ${error.message}`); } } diff --git a/src/tools/fluxbeam/fluxbeam_fee_management.ts b/src/tools/fluxbeam/fluxbeam_fee_management.ts deleted file mode 100644 index 7da3cd5c..00000000 --- a/src/tools/fluxbeam/fluxbeam_fee_management.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { ComputeBudgetProgram, PublicKey, Transaction } from "@solana/web3.js"; -import { - createWithdrawWithheldTokensFromMintInstruction, - getAssociatedTokenAddressSync, - TOKEN_2022_PROGRAM_ID, -} from "@solana/spl-token"; -import { SolanaAgentKit } from "../../agent"; -import { signTransaction, sendTransaction } from "../../utils/FluxbeamClient"; - -//Enables tokens to harvest token fees generated by the Transfer Fee extension from recipients of the mint . -/** - * Submit fee claim transaction - */ -export async function fluxbeamSubmitFeeClaim( - agent: SolanaAgentKit, - payer: PublicKey, - mint: PublicKey, - priorityFee: number, -): Promise { - try { - const transaction = new Transaction(); - const unitLimit = 160_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - const dstAcc = getAssociatedTokenAddressSync( - mint, - payer, - true, - TOKEN_2022_PROGRAM_ID, - ); - - //build claim transaction - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: unitPrice, - }), - createWithdrawWithheldTokensFromMintInstruction( - mint, - dstAcc, - payer, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw new Error(`Fee claim failed: ${error.message}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_liquidity_management.ts b/src/tools/fluxbeam/fluxbeam_liquidity_management.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/src/tools/fluxbeam/fluxbeam_lock_token.ts b/src/tools/fluxbeam/fluxbeam_lock_token.ts deleted file mode 100644 index 0b7ce717..00000000 --- a/src/tools/fluxbeam/fluxbeam_lock_token.ts +++ /dev/null @@ -1,422 +0,0 @@ -// import { web3 } from "@project-serum/anchor"; -// import { Numberu64, Schedule } from "@bonfida/token-vesting"; -// import { -// createAssociatedTokenAccountInstruction, -// getAssociatedTokenAddress, -// getAssociatedTokenAddressSync, -// TOKEN_PROGRAM_ID, -// } from "@solana/spl-token"; -// import { -// PublicKey, -// SystemProgram, -// SYSVAR_CLOCK_PUBKEY, -// TransactionInstruction, -// } from "@solana/web3.js"; -// import { createInitInstruction } from "@bonfida/token-vesting/src/instructions"; -// import { getContractInfo } from "@bonfida/token-vesting/src/main"; -// import { ContractInfo } from "@bonfida/token-vesting/src/state"; -// import { SolanaAgentKit } from "../agent"; - -// const PROGRAM_ID = new PublicKey("Lock1zcQFoaZmTk59sr9pB5daFE6Cs1K5eWyRLF1eju"); - -// export class Seed { -// mint; -// releaseTime: Numberu64; - -// constructor(mint: PublicKey, releaseTime: Numberu64) { -// this.mint = mint; -// this.releaseTime = releaseTime; -// } - -// async toString() { -// const encoder = new TextEncoder(); -// const dataUint8 = encoder.encode( -// JSON.stringify({ -// mint: this.mint.toString(), -// time: this.releaseTime.toString(), -// }), -// ); -// const hashBuffer = await crypto.subtle.digest("SHA-256", dataUint8); -// const hashArray = Array.from(new Uint8Array(hashBuffer)); -// return hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); -// } -// } - -// export async function lockers(agent: SolanaAgentKit, mint: PublicKey) { -// const resp = await agent.connection.getProgramAccounts(PROGRAM_ID, { -// commitment: "processed", -// filters: [ -// { -// memcmp: { -// offset: 32, -// bytes: mint.toString(), -// }, -// }, -// { -// memcmp: { -// offset: 32 + 32 + 1, -// bytes: "", -// }, -// }, -// ], -// }); -// return resp.map((m) => { -// return { -// pubkey: m.pubkey, -// account: ContractInfo.fromBuffer(m.account.data), -// }; -// }); -// } - -// async function locker(agent: SolanaAgentKit, locker: PublicKey) { -// return await getContractInfo(agent.connection, locker); -// } - -// export async function create( -// payer: PublicKey, -// owner: PublicKey, -// mint: PublicKey, -// tokenProgram: PublicKey, -// schedules: Schedule[], -// ): Promise { -// const seedWord = await new Seed(mint, schedules[0].releaseTime).toString(); -// return _create( -// Buffer.from(seedWord), -// payer, -// owner, -// mint, -// tokenProgram, -// schedules, -// ); -// } - -// export async function unlock( -// agent: SolanaAgentKit, -// payer: PublicKey, -// mint: PublicKey, -// tokenProgram: PublicKey, -// schedule: Schedule, -// ): Promise { -// const seedWord = await new Seed(mint, schedule.releaseTime).toString(); -// return _unlock(agent, Buffer.from(seedWord), payer, mint, tokenProgram); -// } - -// /** -// * This function can be used to lock tokens -// * @param seedWord Seed words used to derive the vesting account -// * @param payer The fee payer of the transaction -// * @param sourceTokenOwner The owner of the source token account (i.e where locked tokens are originating from) -// * @param possibleSourceTokenPubkey The source token account (i.e where locked tokens are originating from), if null it defaults to the ATA -// * @param destinationTokenPubkey The destination token account i.e where unlocked tokens will be transfered -// * @param mintAddress The mint of the tokens being vested -// * @param schedules The array of vesting schedules -// * @param tokenProgram The token program for the mint -// * @returns An array of `TransactionInstruction` -// */ -// export async function _create( -// seedWord: Buffer | Uint8Array, -// payer: PublicKey, -// sourceTokenOwner: PublicKey, -// mintAddress: PublicKey, -// tokenProgram: PublicKey, -// schedules: Array, -// ): Promise> { -// const sourceTokenPubkey = getAssociatedTokenAddressSync( -// mintAddress, -// sourceTokenOwner, -// true, -// tokenProgram, -// ); -// const destinationTokenPubkey = sourceTokenPubkey; - -// // Find the non reversible public key for the vesting contract via the seed -// seedWord = seedWord.slice(0, 31); -// const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( -// [seedWord], -// PROGRAM_ID, -// ); - -// const vestingTokenAccountKey = await getAssociatedTokenAddress( -// mintAddress, -// vestingAccountKey, -// true, -// tokenProgram, -// ); - -// seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); - -// return [ -// createInitInstruction( -// SystemProgram.programId, -// PROGRAM_ID, -// payer, -// vestingAccountKey, -// [seedWord], -// schedules.length, -// ), -// createAssociatedTokenAccountInstruction( -// payer, -// vestingTokenAccountKey, -// vestingAccountKey, -// mintAddress, -// tokenProgram, -// ), -// createCreateInstruction( -// PROGRAM_ID, -// tokenProgram, -// vestingAccountKey, -// vestingTokenAccountKey, -// sourceTokenOwner, -// sourceTokenPubkey, -// destinationTokenPubkey, -// mintAddress, -// schedules, -// [seedWord], -// ), -// ]; -// } - -// export function createCreateInstruction( -// vestingProgramId: PublicKey, -// tokenProgramId: PublicKey, -// vestingAccountKey: PublicKey, -// vestingTokenAccountKey: PublicKey, -// sourceTokenAccountOwnerKey: PublicKey, -// sourceTokenAccountKey: PublicKey, -// destinationTokenAccountKey: PublicKey, -// mintAddress: PublicKey, -// schedules: Array, -// seeds: Array, -// ): TransactionInstruction { -// const buffers = [ -// Buffer.from(Uint8Array.from([1]).buffer), -// Buffer.concat(seeds), -// mintAddress.toBuffer(), -// destinationTokenAccountKey.toBuffer(), -// ]; - -// schedules.forEach((s) => { -// buffers.push(s.toBuffer()); -// }); - -// const data = Buffer.concat(buffers); -// const keys = [ -// { -// pubkey: tokenProgramId, -// isSigner: false, -// isWritable: false, -// }, -// { -// pubkey: vestingAccountKey, -// isSigner: false, -// isWritable: true, -// }, -// { -// pubkey: vestingTokenAccountKey, -// isSigner: false, -// isWritable: true, -// }, -// { -// pubkey: sourceTokenAccountOwnerKey, -// isSigner: true, -// isWritable: false, -// }, -// { -// pubkey: sourceTokenAccountKey, -// isSigner: false, -// isWritable: true, -// }, -// { -// pubkey: mintAddress, -// isSigner: false, -// isWritable: false, -// }, -// ]; -// return new TransactionInstruction({ -// keys, -// programId: vestingProgramId, -// data, -// }); -// } - -// /** -// * This function can be used to unlock vested tokens -// * @param seedWord Seed words used to derive the vesting account -// * @param payer The payer or owner of the locker - if the owner does not own the dest account then an error is returned -// * @param mintAddress The mint of the vested tokens -// * @param tokenProgram The token program for the mint -// * @returns An array of `TransactionInstruction` -// */ -// export async function _unlock( -// agent: SolanaAgentKit, -// seedWord: Buffer | Uint8Array, -// payer: PublicKey, -// mintAddress: PublicKey, -// tokenProgram: PublicKey, -// ): Promise> { -// seedWord = seedWord.slice(0, 31); -// const [vestingAccountKey, bump] = PublicKey.findProgramAddressSync( -// [seedWord], -// PROGRAM_ID, -// ); -// seedWord = Buffer.from(seedWord.toString("hex") + bump.toString(16), "hex"); - -// const vestingTokenAccountKey = await getAssociatedTokenAddress( -// mintAddress, -// vestingAccountKey, -// true, -// tokenProgram, -// ); - -// console.log("VestingAccountKey", vestingAccountKey.toString()); -// const accInfo = await agent.connection.getAccountInfo( -// vestingAccountKey, -// "processed", -// ); -// if (!accInfo) { -// throw new Error("Vesting contract account is unavailable"); -// } -// const vestingInfo = ContractInfo.fromBuffer(accInfo!.data); -// if (!vestingInfo) { -// throw new Error("Vesting contract account is not initialized"); -// } - -// const res = await agent.connection.getMultipleAccountsInfo( -// [vestingInfo.destinationAddress, mintAddress], -// { commitment: "processed" }, -// ); -// const [destinationInfo, mintInfo] = res; - -// const unlockIx = createUnlockInstruction( -// PROGRAM_ID, -// tokenProgram, -// SYSVAR_CLOCK_PUBKEY, -// vestingAccountKey, -// vestingTokenAccountKey, -// vestingInfo.destinationAddress, -// mintAddress, -// [seedWord], -// ); - -// if (!destinationInfo) { -// //Check if signer is the destination (otherwise below create IX wont work) -// const ata = getAssociatedTokenAddressSync( -// mintAddress, -// payer, -// false, -// mintInfo?.owner, -// ); -// if (ata.toString() !== vestingInfo.destinationAddress.toString()) { -// throw new Error("Signer does not match destination address"); -// } - -// const createIx = createAssociatedTokenAccountInstruction( -// payer, -// vestingInfo.destinationAddress, -// payer, -// mintAddress, -// mintInfo?.owner, -// ); - -// return [createIx, unlockIx]; -// } - -// return [unlockIx]; -// } -// export function createUnlockInstruction( -// vestingProgramId: PublicKey, -// tokenProgramId: PublicKey, -// clockSysvarId: PublicKey, -// vestingAccountKey: PublicKey, -// vestingTokenAccountKey: PublicKey, -// destinationTokenAccountKey: PublicKey, -// mintAddress: PublicKey, -// seeds: Array, -// ): TransactionInstruction { -// const data = Buffer.concat([ -// Buffer.from(Uint8Array.from([2]).buffer), -// Buffer.concat(seeds), -// ]); - -// const keys = [ -// { -// pubkey: tokenProgramId, -// isSigner: false, -// isWritable: false, -// }, -// { -// pubkey: clockSysvarId, -// isSigner: false, -// isWritable: false, -// }, -// { -// pubkey: vestingAccountKey, -// isSigner: false, -// isWritable: true, -// }, -// { -// pubkey: vestingTokenAccountKey, -// isSigner: false, -// isWritable: true, -// }, -// { -// pubkey: destinationTokenAccountKey, -// isSigner: false, -// isWritable: true, -// }, -// { -// pubkey: mintAddress, -// isSigner: false, -// isWritable: false, -// }, -// ]; -// return new TransactionInstruction({ -// keys, -// programId: vestingProgramId, -// data, -// }); -// } - -// export async function lockAuthority( -// mint: PublicKey, -// tokenProgram: PublicKey, -// schedule: Schedule, -// authorityType: number, -// ) { -// const seedWord = await new Seed(mint, schedule.releaseTime).toString(); -// return _lockAuthority( -// Buffer.from(seedWord), -// mint, -// tokenProgram, -// authorityType, -// ); -// } - -// export async function unlockAuthority( -// mint: PublicKey, -// tokenProgram: PublicKey, -// schedule: Schedule, -// authorityType: number, -// ) { -// const seedWord = await new Seed(mint, schedule.releaseTime).toString(); -// return _unlockAuthority( -// Buffer.from(seedWord), -// mint, -// tokenProgram, -// authorityType, -// ); -// } - -// export async function _lockAuthority( -// seedWord: Buffer | Uint8Array, -// mintAddress: PublicKey, -// tokenProgram: PublicKey, -// authorityType: number, -// ) {} - -// export async function _unlockAuthority( -// seedWord: Buffer | Uint8Array, -// mintAddress: PublicKey, -// tokenProgram: PublicKey, -// authorityType: number, -// ) {} diff --git a/src/tools/fluxbeam/fluxbeam_metadata_management.ts b/src/tools/fluxbeam/fluxbeam_metadata_management.ts deleted file mode 100644 index f72b3431..00000000 --- a/src/tools/fluxbeam/fluxbeam_metadata_management.ts +++ /dev/null @@ -1,229 +0,0 @@ -import { - fetchMetadataFromSeeds, - updateV1, -} from "@metaplex-foundation/mpl-token-metadata"; -import { SolanaAgentKit } from "../../agent"; -import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; -import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; -import { - fromWeb3JsKeypair, - fromWeb3JsPublicKey, -} from "@metaplex-foundation/umi-web3js-adapters"; -import { - createSignerFromKeypair, - keypairIdentity, -} from "@metaplex-foundation/umi"; -import * as bs58 from "bs58"; -import { - ComputeBudgetProgram, - PublicKey, - SystemProgram, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; -import { - createUpdateFieldInstruction, - createUpdateAuthorityInstruction, - pack, -} from "@solana/spl-token-metadata"; -import { FEE_ACCOUNT } from "../../constants"; -import { - sendTransaction, - signTransaction, - getToken22Metadata, -} from "../../utils/FluxbeamClient"; -import { TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; - -export async function fluxbeamUpdateV1Metadata( - agent: SolanaAgentKit, - mint: PublicKey, - newName: string, - newSymbol: string, - newUri: string, -) { - try { - // Create UMI instance from agent - const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()); - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - const myKeypair = agent.wallet; - const updateAuthority = createSignerFromKeypair( - umi, - fromWeb3JsKeypair(myKeypair), - ); //signer - const initialMetadata = await fetchMetadataFromSeeds(umi, { - mint: fromWeb3JsPublicKey(mint), - }); - const txId = await updateV1(umi, { - mint: fromWeb3JsPublicKey(mint), - authority: updateAuthority, - data: { - ...initialMetadata, - symbol: newSymbol, - name: newName, - uri: newUri, - }, - }).sendAndConfirm(umi); - - const txSignature = bs58.default.encode(txId.signature); - - return txSignature; - } catch (error) { - throw Error(`failed to update metadata for token v1 asset: ${error}`); - } -} - -export async function fluxbeamUpdateV2Metadata( - agent: SolanaAgentKit, - mint: PublicKey, - priorityFee: number, - newName?: string, - newSymbol?: string, - newUri?: string, - newUpdateAuthority?: PublicKey, -) { - try { - const metadata = await getToken22Metadata(agent, mint); - // Early validation of updateAuthority - if (!metadata.updateAuthority) { - throw new Error("Update authority is not defined for this token"); - } - - const currentUpdateAuthority = new PublicKey(metadata.updateAuthority); - const transaction = new Transaction(); - const unitLimit = 90_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.transfer({ - fromPubkey: agent.wallet_address, - toPubkey: FEE_ACCOUNT, - lamports: 100, - }), - ); - - if (newName && newName !== metadata.name) { - console.debug( - "getUpdateToken22MetadataTransaction::name - ", - newName, - metadata.name, - ); - transaction.add( - new TransactionInstruction({ - keys: [], - programId: new PublicKey( - "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", - ), - data: Buffer.from(newName), - }), - ); - transaction.add( - createUpdateFieldInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: mint, - updateAuthority: new PublicKey(currentUpdateAuthority), - field: "name", - value: newName, - }), - ); - } - - if (newSymbol && newSymbol !== metadata.symbol) { - console.debug( - "getUpdateToken22MetadataTransaction::symbol - ", - newSymbol, - metadata.symbol, - ); - transaction.add( - createUpdateFieldInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: mint, - updateAuthority: new PublicKey(currentUpdateAuthority), - field: "symbol", - value: newSymbol, - }), - ); - } - - if (newUri && newUri !== metadata.uri) { - console.debug("getUpdateToken22MetadataTransaction::uri - ", { - data: newUri, - meta: metadata.uri, - }); - transaction.add( - createUpdateFieldInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: mint, - updateAuthority: new PublicKey(currentUpdateAuthority), - field: "uri", - value: newUri, - }), - ); - } - - console.debug( - "Adjust authority", - newUpdateAuthority, - currentUpdateAuthority, - ); - if ( - newUpdateAuthority && - newUpdateAuthority.toString() !== metadata.updateAuthority.toString() - ) { - console.debug( - "getUpdateToken22MetadataTransaction::authority - ", - currentUpdateAuthority, - newUpdateAuthority, - ); - const args = { - metadata: mint, - newAuthority: newUpdateAuthority, - oldAuthority: new PublicKey(currentUpdateAuthority), - programId: TOKEN_2022_PROGRAM_ID, - }; - - transaction.add(createUpdateAuthorityInstruction(args)); - } - - const oldMetadataLength = - pack({ - additionalMetadata: metadata?.additionalMetadata || [], - mint: PublicKey.default, - symbol: metadata.symbol, - name: metadata.name, - uri: metadata.uri, - }).length + 4; - - const newMetadataLength = - pack({ - additionalMetadata: [], - mint: PublicKey.default, - symbol: newSymbol ?? metadata.symbol, - name: newName ?? metadata.name, - uri: newUri ?? metadata.uri, - }).length + 4; - - const mintLamports = - await agent.connection.getMinimumBalanceForRentExemption( - newMetadataLength - oldMetadataLength, - ); - if (mintLamports > 0) { - transaction.add( - SystemProgram.transfer({ - fromPubkey: agent.wallet_address, - toPubkey: new PublicKey(mint), - lamports: mintLamports, - }), - ); - } - const txn = await signTransaction(agent, transaction); - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error) { - throw Error( - `failed to update metadata for token v2 (token2022) asset: ${error}`, - ); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_token_swap.ts b/src/tools/fluxbeam/fluxbeam_swap_token.ts similarity index 75% rename from src/tools/fluxbeam/fluxbeam_token_swap.ts rename to src/tools/fluxbeam/fluxbeam_swap_token.ts index 55044f98..3c6d8b57 100644 --- a/src/tools/fluxbeam/fluxbeam_token_swap.ts +++ b/src/tools/fluxbeam/fluxbeam_swap_token.ts @@ -1,7 +1,20 @@ -import { VersionedTransaction, PublicKey } from "@solana/web3.js"; +import { + VersionedTransaction, + PublicKey, + TransactionInstruction, +} from "@solana/web3.js"; import { Quote, SolanaAgentKit } from "../../index"; -import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; -import { getMint } from "@solana/spl-token"; +import { TOKENS, DEFAULT_OPTIONS, FLUXBEAM_BASE_URI } from "../../constants"; +import { + createAssociatedTokenAccountInstruction, + createCloseAccountInstruction, + createSyncNativeInstruction, + getAssociatedTokenAddress, + TOKEN_2022_PROGRAM_ID, + TOKEN_PROGRAM_ID, +} from "@solana/spl-token"; +import { Transaction } from "@solana/web3.js"; +import { getTokenDecimals } from "../../utils/FluxbeamUtils"; function transformResponse(response: { quote: Quote }): Quote { // Destructure the input object to get the quote object @@ -27,6 +40,15 @@ function transformResponse(response: { quote: Quote }): Quote { }; } +/** + * Swap tokens using FluxBeam DEX + * @param agent SolanaAgentKit instance + * @param inputMint Source token mint address + * @param outputMint Target token mint address + * @param inputAmount Amount to swap (in token decimals) + * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) + * @returns Transaction signature + */ /** * Swap tokens using FluxBeam DEX * @param agent SolanaAgentKit instance @@ -50,7 +72,7 @@ export async function fluxBeamSwap( // For native SOL, we use LAMPORTS_PER_SOL, otherwise fetch mint info const inputDecimals = isNativeSol ? 9 // SOL always has 9 decimals - : (await getMint(agent.connection, inputMint)).decimals; + : await getTokenDecimals(agent, inputMint); // Calculate the correct amount based on actual decimals const scaledAmount = inputAmount * Math.pow(10, inputDecimals); diff --git a/src/tools/fluxbeam/fluxbeam_token_airdrop.ts b/src/tools/fluxbeam/fluxbeam_token_airdrop.ts deleted file mode 100644 index a45b81b1..00000000 --- a/src/tools/fluxbeam/fluxbeam_token_airdrop.ts +++ /dev/null @@ -1,342 +0,0 @@ -/* eslint-disable no-console */ -import { - ComputeBudgetProgram, - Keypair, - PublicKey, - SystemProgram, - Transaction, -} from "@solana/web3.js"; -import { - TOKEN_PROGRAM_ID, - ASSOCIATED_TOKEN_PROGRAM_ID, - createAssociatedTokenAccountInstruction, - TOKEN_2022_PROGRAM_ID, - createTransferCheckedInstruction, - getMint, -} from "@solana/spl-token"; -import * as fs from "fs"; -import { - getAssociatedTokenPDA, - sendTransaction, - signTransaction, -} from "../../utils/FluxbeamClient"; -import { SolanaAgentKit } from "../../agent"; -import path from "path"; -import { FEE_ACCOUNT } from "../../constants"; - -interface TokenInfo { - sendableAmount: number; - sendableTokenMint: string; - owner: string; -} - -interface AirdropResult { - success: boolean; - txid?: string; - error?: string; - address?: string; -} -class AirdropError extends Error { - constructor( - message: string, - public code: string, - ) { - super(message); - this.name = "AirdropError"; - } -} - -type AmountType = "fixed" | "dynamic"; -type TargetType = "tokenHolders" | "manual" | "csv"; - -/** - * Signs and sends a token transfer transaction - * @param agent SolanaAgentKit instance - * @param dropInfo Token transfer information - * @param sender Sender's keypair - * @param priorityFee - * @returns Transaction signature - */ -async function sendToken( - agent: SolanaAgentKit, - dropInfo: TokenInfo, - sender: Keypair, - priorityFee: number, -): Promise { - if ( - !dropInfo.sendableAmount || - !dropInfo.sendableTokenMint || - !dropInfo.owner - ) { - throw new Error("Invalid drop info provided"); - } - - const mint = new PublicKey(dropInfo.sendableTokenMint); - const owner = new PublicKey(dropInfo.owner); - const decimals = ( - await getMint(agent.connection, mint, "finalized", TOKEN_2022_PROGRAM_ID) - ).decimals; - const transaction = new Transaction(); - // Add compute budget instructions first - const unitLimit = 90_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.transfer({ - fromPubkey: agent.wallet_address, - toPubkey: FEE_ACCOUNT, - lamports: 100, - }), - ); - - // Get destination ATA - const destinationAccount = await getAssociatedTokenPDA(mint, owner); - - // Get source ATA - const sourceAccount = await getAssociatedTokenPDA(mint, sender.publicKey); - - // Check if destination ATA exists - const destinationAccountInfo = - await agent.connection.getAccountInfo(destinationAccount); - const destTokenAccountMissing = !destinationAccountInfo; - - if (destTokenAccountMissing) { - console.log("Creating token account..."); - - const createATAinstruction = createAssociatedTokenAccountInstruction( - sender.publicKey, - destinationAccount, - owner, - mint, - TOKEN_2022_PROGRAM_ID, - ASSOCIATED_TOKEN_PROGRAM_ID, - ); - transaction.add(createATAinstruction); - } - - // Add transfer instruction - const transferInstruction = createTransferCheckedInstruction( - sourceAccount, - mint, - destinationAccount, - sender.publicKey, - dropInfo.sendableAmount * Math.pow(10, decimals), - decimals, - [], - TOKEN_2022_PROGRAM_ID, - ); - transaction.add(transferInstruction); - - console.log( - "Sending from", - sourceAccount.toBase58(), - "to", - destinationAccount.toBase58(), - ); - - // Sign and send transaction using the provided logic - const txn = await signTransaction(agent, transaction); - const response = await sendTransaction(agent, txn); - return response.signature; -} - -/** - * Performs a token airdrop on the Solana blockchain - * - * @param agent SolanaAgentKit instance - * @param sender - Keypair of the sender who will fund the airdrop - * @param mintAddress - The mint address of the token to be airdropped - * @param amountType - Type of amount distribution: 'fixed' for same amount to all recipients, 'dynamic' for proportional distribution - * @param amount - Amount of tokens to send (if fixed) or total tokens to distribute (if dynamic) - * @param targetType - Method to determine recipients: 'tokenHolders' for holders of a specific token, 'manual' for direct address list, 'csv' for addresses from file - * @param targetValue - Based on targetType: - * - For 'tokenHolders': mint address of token to check holders (string) - * - For 'manual': array of recipient addresses (string[]) - * - For 'csv': path to CSV file with 'address' column (string) - * @param createAssociatedAccounts - Whether to create Associated Token Accounts for recipients if they don't exist - * @param minBalance - Optional minimum token balance for filtering token holders - * @returns Promise resolving to array of results for each attempted transfer - * - * @throws {AirdropError} When configuration is invalid or airdrop fails - **/ -export async function fluxbeamTokenAirdrop( - agent: SolanaAgentKit, - sender: Keypair, - mintAddress: string, - amountType: AmountType, - amount: number, - targetType: TargetType, - targetValue: string | string[], - createAssociatedAccounts: boolean, - minBalance?: number, -): Promise { - try { - // Validate inputs - if (amount <= 0) { - throw new AirdropError("Amount must be greater than 0", "INVALID_AMOUNT"); - } - - try { - new PublicKey(mintAddress); - } catch { - throw new AirdropError("Invalid mint address", "INVALID_MINT"); - } - - // Get target addresses based on type - let targetAddresses: string[] = []; - switch (targetType) { - case "tokenHolders": { - if (typeof targetValue !== "string") { - throw new AirdropError( - "Token holders target requires a mint address string", - "INVALID_TARGET_VALUE", - ); - } - const mint = new PublicKey(targetValue); - const accounts = await agent.connection.getProgramAccounts( - TOKEN_PROGRAM_ID, - { - filters: [ - { dataSize: 165 }, - { memcmp: { offset: 0, bytes: mint.toBase58() } }, - ], - }, - ); - - for (const acc of accounts) { - try { - if (minBalance) { - const balance = await agent.connection.getTokenAccountBalance( - acc.pubkey, - ); - if (Number(balance.value.amount) >= minBalance) { - targetAddresses.push(acc.pubkey.toBase58()); - } - } else { - targetAddresses.push(acc.pubkey.toBase58()); - } - } catch (error: any) { - console.warn( - `Failed to check balance for ${acc.pubkey.toBase58()}: ${error.message}`, - ); - } - } - break; - } - case "manual": { - if (!Array.isArray(targetValue)) { - throw new AirdropError( - "Manual target requires an array of addresses", - "INVALID_TARGET_VALUE", - ); - } - targetAddresses = targetValue; - break; - } - case "csv": { - if (typeof targetValue !== "string") { - throw new AirdropError( - "CSV target requires a file path string", - "INVALID_TARGET_VALUE", - ); - } - - const currentDir = process.cwd(); - const fullPath = path.join(currentDir, targetValue); - - if (!fs.existsSync(fullPath)) { - throw new AirdropError( - `File not found at ${fullPath}. Current directory: ${currentDir}`, - "FILE_NOT_FOUND", - ); - } - - try { - const fileContent = fs.readFileSync(fullPath, "utf-8"); - targetAddresses = fileContent - .split("\n") - .map((line) => line.trim()) - .filter((line) => line.length > 0); - } catch (error: any) { - throw new AirdropError( - `Failed to read file at ${fullPath}: ${error.message}`, - "FILE_READ_ERROR", - ); - } - break; - } - } - - if (targetAddresses.length === 0) { - throw new AirdropError("No valid target addresses found", "NO_TARGETS"); - } - - // Calculate costs - const rentExemptBalance = - await agent.connection.getMinimumBalanceForRentExemption(165); - const ataCost = createAssociatedAccounts - ? targetAddresses.length * rentExemptBalance - : 0; - const totalTokens = - amountType === "fixed" ? amount * targetAddresses.length : amount; - - // Log cost information - console.log(`ATA Creation Cost: ${ataCost / 1e9} SOL`); - console.log(`Total Tokens to Send: ${totalTokens}`); - console.log(`Number of recipients: ${targetAddresses.length}`); - - // Check sender balance - const senderBalance = await agent.connection.getBalance(sender.publicKey); - if (senderBalance < ataCost) { - throw new AirdropError( - `Insufficient SOL balance for ATA creation. Required: ${ataCost / 1e9} SOL, Found: ${senderBalance / 1e9} SOL`, - "INSUFFICIENT_SOL_BALANCE", - ); - } - - // Process transfers - const results: AirdropResult[] = []; - for (const address of targetAddresses) { - try { - const dropInfo = { - sendableAmount: - amountType === "fixed" ? amount : amount / targetAddresses.length, - sendableTokenMint: mintAddress, - owner: address, - }; - - const txid = await sendToken(agent, dropInfo, sender, 100_000); - - results.push({ - success: true, - txid, - address, - }); - } catch (error: any) { - results.push({ - success: false, - error: error.message, - address, - }); - } - } - - // Log summary - const successful = results.filter((r) => r.success).length; - console.log(`\nAirdrop Complete:`); - console.log(`✓ Successful transfers: ${successful}`); - console.log(`✗ Failed transfers: ${results.length - successful}`); - - return results; - } catch (error: any) { - if (error instanceof AirdropError) { - throw error; - } - throw new AirdropError( - `Airdrop failed: ${error.message}`, - "AIRDROP_FAILED", - ); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts b/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts deleted file mode 100644 index cb8f68e8..00000000 --- a/src/tools/fluxbeam/fluxbeam_token_minting_controls.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { - AuthorityType, - createAssociatedTokenAccountInstruction, - createMintToInstruction, - createSetAuthorityInstruction, - getAssociatedTokenAddressSync, - TOKEN_2022_PROGRAM_ID, - TOKEN_PROGRAM_ID, -} from "@solana/spl-token"; -import { - PublicKey, - ComputeBudgetProgram, - Transaction, - Keypair, -} from "@solana/web3.js"; -import { SolanaAgentKit } from "../../agent"; -import { sendTransaction, signTransaction } from "../../utils/FluxbeamClient"; - -/** - * Mints tokens to the associated token account of a given owner. - * If the associated token account does not exist, it is created. - * - * @param {SolanaAgentKit} agent - SolanaAgentKit instance - * @param {PublicKey} owner - The public key of the token account owner. - * @param {PublicKey} tokenMint - The public key of the token mint account. - * @param {bigint} amount - The amount of tokens to mint. - * @param {boolean} [v2=true] - Whether to use the Token 2022 program. - * @returns {Promise} - The transaction signature. - */ -export async function fluxbeamMintToAccount( - agent: SolanaAgentKit, - owner: PublicKey, - tokenMint: PublicKey, - amount: bigint, - v2: boolean = true, -) { - const program = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; - const transaction = new Transaction(); - const ata = getAssociatedTokenAddressSync(tokenMint, owner, true, program); - - const dstIfo = await agent.connection.getAccountInfo(ata, "confirmed"); - if (!dstIfo) { - transaction.add( - createAssociatedTokenAccountInstruction( - owner, - ata, - owner, - tokenMint, - program, - ), - ); - } - - transaction.add( - createMintToInstruction(tokenMint, ata, owner, amount, [], program), - ); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; -} - -/** - * Sets a new authority for a given mint account. - * - * @param {SolanaAgentKit} agent -SolanaAgentKit instance - * @param {PublicKey} owner - The public key of the current authority. - * @param {PublicKey} mint - The public key of the mint account. - * @param {AuthorityType} authority - The type of authority to set (e.g., Mint, Freeze, Close). - * @param {PublicKey|null} newAuthority - The public key of the new authority, or null to revoke. - * @param {boolean} [v2=true] - Whether to use the Token 2022 program. - * @param {number} [priorityFee=100_000_000] - The priority fee for the transaction (in microLamports). - * @param {Keypair[]} [additional_signers=[]] - Additional signers required for the transaction. - * @returns {Promise} - The transaction signature. - */ -export async function fluxbeamSetAuthority( - agent: SolanaAgentKit, - owner: PublicKey, - mint: PublicKey, - authority: AuthorityType, - newAuthority: PublicKey | null, - v2: boolean = true, - priorityFee: number = 100_000_000, - additional_signers: Keypair[] = [], -) { - const programID = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; - const transaction = new Transaction(); - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), - ComputeBudgetProgram.setComputeUnitPrice({ - microLamports: Math.floor(priorityFee / 10_000), - }), - ); - transaction.add( - createSetAuthorityInstruction( - mint, - owner, - authority, - newAuthority, - [], - programID, - ), - ); - const txn = await signTransaction(agent, transaction, additional_signers); - - const response = await sendTransaction(agent, txn); - - return response.signature; -} - -/** - * Revokes an authority from a given mint account by setting it to null. - * - * @param {SolanaAgentKit} agent - SolanaAgentKit instance - * @param {PublicKey} owner - The public key of the current authority. - * @param {PublicKey} mint - The public key of the mint account. - * @param {AuthorityType} authority - The type of authority to revoke (e.g., Mint, Freeze, Close). - * @param {boolean} [v2=true] - Whether to use the Token 2022 program. - * @param {number} [priorityFee=100_000_000] - The priority fee for the transaction (in microLamports). - * @param {Keypair[]} [additional_signers=[]] - Additional signers required for the transaction. - * @returns {Promise} - The transaction signature. - */ -export function fluxbeamRevokeAuthority( - agent: SolanaAgentKit, - owner: PublicKey, - mint: PublicKey, - authority: AuthorityType, - v2: boolean = true, - priorityFee: number = 1_000_000, - additional_signers: Keypair[] = [], -) { - return fluxbeamSetAuthority( - agent, - owner, - mint, - authority, - null, - v2, - priorityFee, - additional_signers, - ); -} diff --git a/src/tools/fluxbeam/fluxbeam_transfer.ts b/src/tools/fluxbeam/fluxbeam_transfer.ts deleted file mode 100644 index 2a96cc5b..00000000 --- a/src/tools/fluxbeam/fluxbeam_transfer.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { SolanaAgentKit } from "../../agent"; -import { - TOKEN_2022_PROGRAM_ID, - TOKEN_PROGRAM_ID, - createAssociatedTokenAccountInstruction, - createTransferCheckedInstruction, - getMint, -} from "@solana/spl-token"; -import { - getAssociatedTokenPDA, - sendTransaction, - signTransaction, -} from "../../utils/FluxbeamClient"; -import { - LAMPORTS_PER_SOL, - PublicKey, - SystemProgram, - Transaction, -} from "@solana/web3.js"; -/** - * Transfers SPL tokens from the agent's wallet to a destination wallet. - * - * By default, this function uses the `TOKEN_2022_PROGRAM_ID` program to handle - * transfers for tokens adhering to the Token-2022 specification. It also handles - * creating the destination's associated token account (ATA) if it doesn't already exist. - * - * @param agent - The SolanaAgentKit instance for interacting with Solana. - * @param mint - The public key of the SPL token mint. - * @param dstOwner - The public key of the destination wallet. - * @param amount - The number of tokens to transfer (unscaled by decimals). - * @param v2 - the token type to transfer , v2 is set to true by default meaning we are transferring TOKEN 2022 (or v2) tokens - * @param allowOwnerOffCurve - Whether the owner can be an off-curve public key (defaults to false). - * @returns The signature of the submitted transaction. - * @throws If there is an error during the transfer or account creation process. - */ -export async function fluxbeamTransferSplToken( - agent: SolanaAgentKit, - mint: PublicKey, - dstOwner: PublicKey, - amount: number, - v2: boolean = true, - allowOwnerOffCurve = false, -) { - const program = v2 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID; - const decimals = (await getMint(agent.connection, mint, "finalized", program)) - .decimals; - - const srcAta = await getAssociatedTokenPDA( - mint, - agent.wallet_address, - program, - allowOwnerOffCurve, - ); - const dstAta = await getAssociatedTokenPDA( - mint, - dstOwner, - program, - allowOwnerOffCurve, - ); - const transaction = new Transaction(); - - const dstIfo = await agent.connection.getAccountInfo(dstAta, "confirmed"); - if (!dstIfo) { - transaction.add( - createAssociatedTokenAccountInstruction( - agent.wallet_address, - dstAta, - dstOwner, - mint, - program, - ), - ); - } - transaction.add( - createTransferCheckedInstruction( - srcAta, //Src Ata - mint, //Mint - dstAta, - agent.wallet_address, - amount * Math.pow(10, decimals), - decimals, - [], - program, - ), - ); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; -} - -/** - * Transfers SOL (native token) from the agent's wallet to a destination wallet. - * - * This function creates and signs a transaction that transfers a specified amount - * of SOL from the agent to the destination wallet. The amount is specified in SOL - * and converted to lamports internally. - * - * @param agent - The SolanaAgentKit instance for interacting with Solana. - * @param dstOwner - The public key of the destination wallet. - * @param amount - The amount of SOL to transfer (in SOL, not lamports). - * @returns The signature of the submitted transaction. - * @throws If there is an error during the transfer process. - */ -export async function fluxbeamTransferSol( - agent: SolanaAgentKit, - dstOwner: PublicKey, - amount: number, -) { - try { - const transaction = new Transaction(); - - transaction.add( - SystemProgram.transfer({ - fromPubkey: agent.wallet_address, - toPubkey: dstOwner, - lamports: amount * LAMPORTS_PER_SOL, - }), - ); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw new Error(`failed to tranfer Sol ${error.message}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_v1_token_creation.ts b/src/tools/fluxbeam/fluxbeam_v1_token_creation.ts deleted file mode 100644 index 6b64d294..00000000 --- a/src/tools/fluxbeam/fluxbeam_v1_token_creation.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { - createFungible, - mintV1, - TokenStandard, -} from "@metaplex-foundation/mpl-token-metadata"; -import { SolanaAgentKit } from "../../agent"; -import { - fromWeb3JsKeypair, - fromWeb3JsPublicKey, -} from "@metaplex-foundation/umi-web3js-adapters"; -import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; -import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; -import { generateSigner, keypairIdentity } from "@metaplex-foundation/umi"; -import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; -import * as bs58 from "bs58"; -import { uploadImage } from "../../utils/FluxbeamClient"; -/** - * Create a new SPL V1 token - * @param agent SolanaAgentKit instance - * @param name Name of the token - * @param symbol Symbol of the token - * @param decimals Number of decimals for the token (default: 9) - * @param initialSupply Initial supply to mint (optional) - * @param imagePath path to the image to upload it if not uri is provided (optional) - * @param uri URI for the image (optional) - * @returns transaction signature - */ -export async function fluxbeamCreateTokenV1( - agent: SolanaAgentKit, - name: string, - symbol: string, - decimals: number = 9, - initialSupply?: number, - imagePath?: string, - uri?: string, -) { - try { - // Create UMI instance from agent - const umi = createUmi(agent.connection.rpcEndpoint) - .use(mplToolbox()) - .use(irysUploader()); - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - - // Ensure URI is defined: upload the image if URI is not provided - if (!uri) { - if (!imagePath) { - throw new Error("Either 'uri' or 'imagePath' must be provided."); - } - uri = await uploadImage(umi, imagePath); - } - - // Create new token mint - const mint = generateSigner(umi); - - let builder = createFungible(umi, { - name, - uri, - symbol, - sellerFeeBasisPoints: { - basisPoints: 0n, - identifier: "%", - decimals: 2, - }, - decimals, - mint, - }); - - if (initialSupply) { - builder = builder.add( - mintV1(umi, { - mint: mint.publicKey, - tokenStandard: TokenStandard.Fungible, - tokenOwner: fromWeb3JsPublicKey(agent.wallet_address), - amount: initialSupply * Math.pow(10, decimals), - }), - ); - } - - const txId = await builder.sendAndConfirm(umi, { - confirm: { commitment: "finalized" }, - }); - - const signature = bs58.default.encode(txId.signature); - - return signature; - } catch (error: any) { - throw Error(`failed to create V1 token : ${error}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_v2_token_creation.ts b/src/tools/fluxbeam/fluxbeam_v2_token_creation.ts deleted file mode 100644 index e673cf1e..00000000 --- a/src/tools/fluxbeam/fluxbeam_v2_token_creation.ts +++ /dev/null @@ -1,480 +0,0 @@ -import { - AccountState, - ExtensionType, - TOKEN_2022_PROGRAM_ID, - createAssociatedTokenAccountInstruction, - createEnableRequiredMemoTransfersInstruction, - createInitializeDefaultAccountStateInstruction, - createInitializeImmutableOwnerInstruction, - createInitializeInstruction, - createInitializeInterestBearingMintInstruction, - createInitializeMetadataPointerInstruction, - createInitializeMintCloseAuthorityInstruction, - createInitializeMintInstruction, - createInitializeNonTransferableMintInstruction, - createInitializePermanentDelegateInstruction, - createInitializeTransferFeeConfigInstruction, - createMintToInstruction, - createThawAccountInstruction, - getAssociatedTokenAddressSync, - getMintLen, -} from "@solana/spl-token"; -import { - ComputeBudgetProgram, - Keypair, - PublicKey, - SystemProgram, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; -import { SolanaAgentKit } from "../../agent"; -import { pack } from "@solana/spl-token-metadata"; -import { DataV2 } from "@metaplex-foundation/mpl-token-metadata"; -import { FEE_ACCOUNT } from "../../constants"; -import { - sendTransaction, - signTransaction, - uploadImage, -} from "../../utils/FluxbeamClient"; -import { none } from "@metaplex-foundation/umi-options"; -import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; -import { keypairIdentity } from "@metaplex-foundation/umi"; -import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; -import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; -import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; - -export interface ExtensionConfig { - type: ExtensionType; - cfg: Record; // Dynamic structure for each extension's config -} - -export class CreateMintV1 { - name: string; - symbol: string; - metadataUri: string; - decimals: number; - totalSupply: bigint; - - mintAuthority: PublicKey; - freezeAuthority: PublicKey | null; - - sellerFeeBasisPoints: number = 0; - - //Do we mint the total supply to the user - mintTotalSupply: boolean; - - creators: [] | null = null; - - constructor( - name: string, - symbol: string, - metadataUri: string, - totalSupply: bigint, - mintAuthority: PublicKey, - freezeAuthority: PublicKey | null, - decimals = 6, - mintTotalSupply = true, - ) { - this.name = name; - this.symbol = symbol; - this.metadataUri = metadataUri; - this.totalSupply = totalSupply; - this.decimals = decimals; - this.mintTotalSupply = mintTotalSupply; - this.mintAuthority = mintAuthority; - this.freezeAuthority = freezeAuthority; - } - - setSellerFeeBasisPoints(bp: number) { - this.sellerFeeBasisPoints = bp; - } - - setCreators(creators: []) { - this.creators = creators; - } -} - -export class CreateMintV2 extends CreateMintV1 { - extensions: ExtensionType[] = []; - extensionConfig: object = {}; - - metadata: any; - - setMetadata(meta: any) { - this.metadata = meta; - } - - metadataLength(): number { - if (!this.metadata) { - return 0; - } - return ( - pack({ - additionalMetadata: this.metadata?.additionalMetadata || [], //[string, string] - mint: this.metadata.mint, // Default/Placeholder PublicKey, - symbol: this.metadata.symbol, - name: this.metadata.name, - uri: this.metadata.uri, - }).length + 4 - ); - } - - addExtension(ext: ExtensionType, config: object = {}) { - this.extensions.push(ext); - // @ts-expect-error: TypeScript doesn't recognize 'ExtensionType' as a valid index for 'extensionConfig' - this.extensionConfig[ext] = config; - } -} - -async function getCreateToken2022MintTransaction( - agent: SolanaAgentKit, - owner: PublicKey, - tokenMint: PublicKey, - config: CreateMintV2, - priorityFee: number, -) { - const mintLen = getMintLen(config.extensions); - // console.log(`this is the mintLen ${mintLen}`); - // console.log(`this is the metadataLength ${config.metadataLength()}`); - const mintLamports = await agent.connection.getMinimumBalanceForRentExemption( - mintLen + config.metadataLength(), - ); - const ata = getAssociatedTokenAddressSync( - tokenMint, - owner, - true, - TOKEN_2022_PROGRAM_ID, - ); - const ON_CHAIN_METADATA = { - name: config.name, - symbol: config.symbol, - uri: config.metadataUri, - sellerFeeBasisPoints: 0, - uses: none(), - creators: none(), - collection: none(), - } as DataV2; - const unitLimit = 120_000; - const unitPrice = Math.floor(priorityFee / unitLimit); - const transaction = new Transaction(); - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: unitLimit }), - ComputeBudgetProgram.setComputeUnitPrice({ microLamports: unitPrice }), - SystemProgram.createAccount({ - fromPubkey: owner, - newAccountPubkey: tokenMint, - space: mintLen, - lamports: mintLamports, - programId: TOKEN_2022_PROGRAM_ID, - }), - SystemProgram.transfer({ - fromPubkey: owner, - toPubkey: FEE_ACCOUNT, - lamports: 200000, - }), - new TransactionInstruction({ - keys: [], - programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"), - data: Buffer.from(config.name), - }), - ); - let isDefaultFrozen = false; - config.extensions.forEach((ext: string | number) => { - // @ts-expect-error: TypeScript doesn't recognize 'ExtensionType' as a valid index for 'extensionConfig' - const cfg = config.extensionConfig[ext]; - // eslint-disable-next-line no-console - // console.log(`${ext}`, cfg); - - switch (ext) { - case ExtensionType.TransferFeeConfig: - ON_CHAIN_METADATA.sellerFeeBasisPoints = cfg.feeBasisPoints; //Update so it reflects same as royalties - transaction.add( - createInitializeTransferFeeConfigInstruction( - tokenMint, - cfg.transfer_fee_config_authority - ? cfg.transfer_fee_config_authority - : config.mintAuthority, //Config Auth - cfg.withdraw_withheld_authority - ? cfg.withdraw_withheld_authority - : config.mintAuthority, //Withdraw Auth - cfg.feeBasisPoints, - cfg.maxFee, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.InterestBearingConfig: - transaction.add( - createInitializeInterestBearingMintInstruction( - tokenMint, - owner, //Rate Auth - cfg.rate * 100, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.PermanentDelegate: - transaction.add( - createInitializePermanentDelegateInstruction( - tokenMint, - new PublicKey(cfg.address), - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.NonTransferable: - transaction.add( - createInitializeNonTransferableMintInstruction( - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.ImmutableOwner: - transaction.add( - createInitializeImmutableOwnerInstruction( - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.MemoTransfer: - transaction.add( - createEnableRequiredMemoTransfersInstruction( - tokenMint, - owner, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - if (config.mintTotalSupply) { - transaction.add( - new TransactionInstruction({ - keys: [{ pubkey: owner, isSigner: true, isWritable: true }], - data: Buffer.from("Mint To Memo", "utf-8"), - programId: new PublicKey( - "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", - ), - }), - ); - } - break; - case ExtensionType.DefaultAccountState: - isDefaultFrozen = cfg.state === AccountState.Frozen; - transaction.add( - createInitializeDefaultAccountStateInstruction( - tokenMint, - cfg.state, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.MintCloseAuthority: - transaction.add( - createInitializeMintCloseAuthorityInstruction( - tokenMint, - config.mintAuthority, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - case ExtensionType.MetadataPointer: - transaction.add( - createInitializeMetadataPointerInstruction( - tokenMint, - config.mintAuthority, - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - break; - default: - console.error("Unsupported extension", ext); - break; - } - }); - - //Init the mint - transaction.add( - createInitializeMintInstruction( - tokenMint, - config.decimals, - config.mintAuthority, - config.freezeAuthority, - TOKEN_2022_PROGRAM_ID, - ), - ); - - if (config.metadata) { - transaction.add( - createInitializeInstruction({ - programId: TOKEN_2022_PROGRAM_ID, - metadata: tokenMint, - updateAuthority: config.mintAuthority, - mint: tokenMint, - mintAuthority: config.mintAuthority, - name: config.metadata.name, - symbol: config.metadata.symbol, - uri: config.metadata.uri, - }), - ); - } - - if (config.mintTotalSupply) { - transaction.add( - createAssociatedTokenAccountInstruction( - owner, - ata, - owner, - tokenMint, - TOKEN_2022_PROGRAM_ID, - ), - ); - - if (isDefaultFrozen) { - transaction.add( - createThawAccountInstruction( - ata, - tokenMint, - owner, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - } - - transaction.add( - createMintToInstruction( - tokenMint, - ata, - owner, - config.totalSupply, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - } - - return transaction; -} - -export async function fluxbeamCreateTokenV2( - agent: SolanaAgentKit, - owner: PublicKey, - tokenMint: Keypair, - name: string, - symbol: string, - totalSupply: bigint, - mintAuthority: PublicKey, - freezeAuthority: PublicKey | null, - decimals = 6, - mintTotalSupply = true, - priorityFee: number, - extensions: ExtensionConfig[], - description?: string, - metadataUri?: string, - imagePath?: string, - imageUri?: string, -) { - try { - const umi = createUmi(agent.connection.rpcEndpoint) - .use(mplToolbox()) - .use(irysUploader()); - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - - // Ensure either metadataUri, imageUri, or imagePath is provided - if (!metadataUri && !imageUri && !imagePath) { - throw new Error( - "At least one of 'metadataUri', 'imageUri', or 'imagePath' must be provided to create token metadata.", - ); - } - - // If metadataUri is not provided, process imageUri or imagePath to generate it - if (!metadataUri) { - // If imageUri is provided, use it to create the metadata - if (imageUri) { - metadataUri = await umi.uploader.uploadJson({ - name, - description: description || "No description provided", - image: imageUri, - }); - - if (!metadataUri) { - throw new Error( - "Failed to upload metadata JSON using the provided image URI.", - ); - } - } - // If imageUri is not provided but imagePath is, upload the image and use the resulting URI - else if (imagePath) { - const uploadedImageUri = await uploadImage(umi, imagePath); - - if (!uploadedImageUri) { - throw new Error( - "Failed to upload the image and generate its URI from imagePath.", - ); - } - - metadataUri = await umi.uploader.uploadJson({ - name, - description: description || "No description provided", - image: uploadedImageUri, - }); - - if (!metadataUri) { - throw new Error( - "Failed to upload metadata JSON using the uploaded image URI.", - ); - } - } - } - // Ensure metadataUri is a valid string before proceeding - if (!metadataUri) { - throw new Error( - "Failed to resolve metadataUri. It must be a valid string.", - ); - } - - const config = new CreateMintV2( - name, - symbol, - metadataUri, - totalSupply, - mintAuthority, - freezeAuthority, - decimals, - mintTotalSupply, - ); - config.setSellerFeeBasisPoints(0.5); - config.setCreators([]); - - extensions.forEach(({ type, cfg }) => { - config.addExtension(type, cfg); - }); - if (description || metadataUri) { - config.setMetadata({ - name, - mint: new PublicKey("11111111111111111111111111111111"), //default public key - symbol, - uri: metadataUri, - additionalMetadata: description ? [] : [], // { key: "description", value: description } will fix description - }); - } - const transaction = await getCreateToken2022MintTransaction( - agent, - owner, - tokenMint.publicKey, - config, - priorityFee, - ); - // Sign and send the transaction - - const txn = await signTransaction(agent, transaction, [tokenMint]); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw Error(`failed to create V2 token : ${error}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts b/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts deleted file mode 100644 index 910c3bbd..00000000 --- a/src/tools/fluxbeam/fluxbeam_withheld_amounts_tracking.ts +++ /dev/null @@ -1,211 +0,0 @@ -import { SolanaAgentKit } from "../../agent"; -import { - createAssociatedTokenAccountInstruction, - createHarvestWithheldTokensToMintInstruction, - createWithdrawWithheldTokensFromAccountsInstruction, - createWithdrawWithheldTokensFromMintInstruction, - TOKEN_2022_PROGRAM_ID, -} from "@solana/spl-token"; -import { ComputeBudgetProgram } from "@solana/web3.js"; -import { - accountExists, - getAssociatedTokenPDA, - sendTransaction, - signTransaction, -} from "../../utils/FluxbeamClient"; -import { PublicKey, Transaction } from "@solana/web3.js"; - -/** - * Returns array of transactions needed to claim all withheld tokens for a given mint - * @agent SolanaAgentKit instance - * @param mint - * @param payer - * @param authority - * @param srcAccounts - */ -export async function fluxbeamGetClaimWitheldTokens( - agent: SolanaAgentKit, - mint: PublicKey, - authority: PublicKey, - srcAccounts: PublicKey[], - payer?: PublicKey, -): Promise { - try { - const signatures: string[] = []; - - //Get destination account - const dstAcc = await getAssociatedTokenPDA( - mint, - payer || agent.wallet_address, - TOKEN_2022_PROGRAM_ID, - ); - - if (!(await accountExists(agent, dstAcc))) { - const transaction = new Transaction().add( - ComputeBudgetProgram.setComputeUnitLimit({ units: 42_000 }), - createAssociatedTokenAccountInstruction( - payer || agent.wallet_address, - dstAcc, - payer || agent.wallet_address, - mint, - TOKEN_2022_PROGRAM_ID, - ), - ); - - //Withdraw from mint account too - transaction.add( - createWithdrawWithheldTokensFromMintInstruction( - mint, - dstAcc, - payer || agent.wallet_address, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - - // Sign and send the transaction - const signature = await signTransaction(agent, transaction); - - await sendTransaction(agent, signature); - - signatures.push(signature); - } else { - const transaction = new Transaction(); - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), - createWithdrawWithheldTokensFromMintInstruction( - mint, - dstAcc, - agent.wallet_address, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - // Sign and send the transaction - const signature = await signTransaction(agent, transaction); - - await sendTransaction(agent, signature); - - signatures.push(signature); - } - - for (let i = 0; i < srcAccounts.length; i += 30) { - const transaction = new Transaction().add( - createWithdrawWithheldTokensFromAccountsInstruction( - mint, - dstAcc, - authority, - [], - srcAccounts.slice(i, i + 30), - TOKEN_2022_PROGRAM_ID, - ), - ); - - // Sign and send the transaction - const signature = await signTransaction(agent, transaction); - - await sendTransaction(agent, signature); - - signatures.push(signature); - } - return signatures; - } catch (error: any) { - throw new Error(`Failed to claim withheld tokens: ${error.message}`); - } -} - -/** - * Claims withheld tokens from the mint account - * @agent SolanaAgentKit instance - * @param mint Token mint address - * @param payer - * @returns Transaction signature - */ -export async function fluxbeamGetClaimWitheldTokensFromMint( - agent: SolanaAgentKit, - mint: PublicKey, - payer?: PublicKey, -) { - try { - //get destination acc - const dstAcc = await getAssociatedTokenPDA( - mint, - payer || agent.wallet_address, - TOKEN_2022_PROGRAM_ID, - ); - const transaction = new Transaction(); - - if (!(await accountExists(agent, dstAcc))) { - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: 42_000 }), - createAssociatedTokenAccountInstruction( - payer || agent.wallet_address, - dstAcc, - payer || agent.wallet_address, - mint, - TOKEN_2022_PROGRAM_ID, - ), - ); - } else { - transaction.add( - ComputeBudgetProgram.setComputeUnitLimit({ units: 10_000 }), - ); - } - - //Withdraw from mint account too - transaction.add( - createWithdrawWithheldTokensFromMintInstruction( - mint, - dstAcc, - payer || agent.wallet_address, - [], - TOKEN_2022_PROGRAM_ID, - ), - ); - - // Sign and send the transaction - const signature = await signTransaction(agent, transaction); - - await sendTransaction(agent, signature); - - return signature; - } catch (error: any) { - throw new Error(`Failed to claim tokens from mint: ${error.message}`); - } -} - -/** - * Harvests withheld tokens to mint (permissionless) - * @param agent SolanaAgentKit instance - * @param mint Token mint address - * @param srcAccounts Source accounts to harvest from - * @returns Array of transaction signatures - */ -export async function fluxbeamGetClaimWithheldTokensToMint( - agent: SolanaAgentKit, - mint: PublicKey, - srcAccounts: PublicKey[], -) { - try { - const signatures = []; - - for (let i = 0; i < srcAccounts.length; i += 30) { - const transaction = new Transaction().add( - createHarvestWithheldTokensToMintInstruction( - mint, - srcAccounts.slice(i, i + 30), - ), - ); - - // Sign and send the transaction - const signature = await signTransaction(agent, transaction); - - await sendTransaction(agent, signature); - - signatures.push(signature); - } - return signatures; - } catch (error: any) { - throw new Error(`Failed to harvest tokens to mint: ${error.message}`); - } -} diff --git a/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts b/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts deleted file mode 100644 index 288171aa..00000000 --- a/src/tools/fluxbeam/fluxbeam_wrap_and_unwrap_sol.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { - createAssociatedTokenAccountInstruction, - createCloseAccountInstruction, - createSyncNativeInstruction, - getAssociatedTokenAddressSync, -} from "@solana/spl-token"; -import { SolanaAgentKit } from "../../agent"; -import { - LAMPORTS_PER_SOL, - PublicKey, - SystemProgram, - Transaction, - TransactionInstruction, -} from "@solana/web3.js"; -import { TOKENS } from "../../constants"; -import { sendTransaction, signTransaction } from "../../utils/FluxbeamClient"; - -export async function getWrapSOLInstructions( - agent: SolanaAgentKit, - owner: PublicKey, - amount: number, -): Promise { - try { - const ixs: TransactionInstruction[] = []; - const amountInLamports = amount * LAMPORTS_PER_SOL; - - const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); - const ataInfo = await agent.connection - .getTokenAccountBalance(ata) - .catch(() => null); - const userBalanceInLamports = await agent.connection.getBalance(owner); - - const currentWSOLBalance = ataInfo ? Number(ataInfo.value.amount) : 0; - - if (currentWSOLBalance >= amountInLamports) { - return ixs; - } - // if the amount of WSOL already in the wallet is more than the amount we want to wrap then we return - // an empty array of instructions - if (!ataInfo) { - ixs.push( - createAssociatedTokenAccountInstruction(owner, ata, owner, TOKENS.wSOL), - ); - } - - const requiredLamports = amountInLamports - currentWSOLBalance; - if (requiredLamports > 0) { - if (requiredLamports > userBalanceInLamports) { - throw new Error( - "Insufficient SOL balance to wrap the requested amount.", - ); - } - - // Add transfer and sync instructions - ixs.push( - SystemProgram.transfer({ - fromPubkey: owner, - toPubkey: ata, - lamports: requiredLamports, - }), - createSyncNativeInstruction(ata), - ); - } - return ixs; - } catch (error: any) { - throw new Error( - `Failed to generate wrap SOL instructions: ${error.message}`, - ); - } -} - -export async function getUnwrapSOLInstructions( - agent: SolanaAgentKit, - owner: PublicKey, - amount: number, // Amount in SOL (not lamports) -): Promise { - try { - const ixs: TransactionInstruction[] = []; - const amountInLamports = amount * LAMPORTS_PER_SOL; - - const ata = getAssociatedTokenAddressSync(TOKENS.wSOL, owner, true); - //convert all the WSOL back to sol - const wsolBalance = await agent.connection - .getTokenAccountBalance(TOKENS.wSOL) // prob in lamports - .then((val) => { - if (!val?.value?.uiAmount) { - throw new Error("Failed to fetch wSOL balance"); - } - return val.value.uiAmount; - }); - if (wsolBalance === null || 0) { - throw Error("You have no WSOL to unwrap"); - } - if (amount === wsolBalance) { - ixs.push(createCloseAccountInstruction(ata, owner, owner)); - } else { - ixs.push(createCloseAccountInstruction(ata, owner, owner)); - - const amountToWrap = wsolBalance - amountInLamports; - const instructions = await getWrapSOLInstructions( - agent, - agent.wallet_address, - amountToWrap, - ); - ixs.push(...instructions); - } - return ixs; - } catch (error: any) { - throw new Error( - `Failed to generate unwrap SOL instructions: ${error.message}`, - ); - } -} - -/** - * Wraps SOL to wSOL for the specified amount - * @param agent SolanaAgentKit instance - * @param amount Amount of SOL to wrap (in SOL) - * @returns Transaction signature - */ -export async function fluxbeamWrapSOL( - agent: SolanaAgentKit, - amount: number, -): Promise { - try { - const instructions = await getWrapSOLInstructions( - agent, - agent.wallet_address, - amount, - ); - - if (instructions.length === 0) { - throw new Error("No wrap instructions needed"); - } - - const transaction = new Transaction().add(...instructions); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw new Error(`SOL wrapping failed: ${error.message}`); - } -} - -/** - * Unwraps wSOL back to SOL - * @param agent SolanaAgentKit instance - * @returns Transaction signature - */ -export async function fluxbeamUnwrapSOL( - agent: SolanaAgentKit, - amount: number, -): Promise { - try { - const instructions = await getUnwrapSOLInstructions( - agent, - agent.wallet_address, - amount, - ); - - const transaction = new Transaction().add(...instructions); - - const txn = await signTransaction(agent, transaction); - - const response = await sendTransaction(agent, txn); - - return response.signature; - } catch (error: any) { - throw new Error(`SOL unwrapping failed: ${error.message}`); - } -} diff --git a/src/tools/fluxbeam/index.ts b/src/tools/fluxbeam/index.ts index bf5aba88..cb3a1321 100644 --- a/src/tools/fluxbeam/index.ts +++ b/src/tools/fluxbeam/index.ts @@ -1,16 +1,2 @@ -export * from "./fluxbeam_bridge_tokens"; -export * from "./fluxbeam_burn_token"; export * from "./fluxbeam_create_pool"; -export * from "./fluxbeam_fee_management"; -// export * from "./fluxbeam_liquidity_management"; -// export * from "./fluxbeam_lock_token"; -export * from "./fluxbeam_metadata_management"; -export * from "./fluxbeam_token_airdrop"; -export * from "./fluxbeam_token_minting_controls"; -export * from "./fluxbeam_token_swap"; -export * from "./fluxbeam_transfer"; -export * from "./fluxbeam_v1_token_creation"; -export * from "./fluxbeam_v2_token_creation"; -export * from "./fluxbeam_withheld_amounts_tracking"; -export * from "./fluxbeam_wrap_and_unwrap_sol"; -export * from "./fluxbeam_token_airdrop"; +export * from "./fluxbeam_swap_token"; diff --git a/src/tools/index.ts b/src/tools/index.ts index 48d4fde2..2b59052f 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -31,15 +31,4 @@ export * from "./mayan"; export * from "./allora"; export * from "./solutiofi"; export * from "./switchboard"; -export * from "./fluxbeam/fluxbeam_burn_token"; -export * from "./fluxbeam/fluxbeam_create_pool"; -export * from "./fluxbeam/fluxbeam_fee_management"; -// export * from "./fluxbeam_liquidity_management"; -// export * from "./fluxbeam_lock_token"; -export * from "./fluxbeam/fluxbeam_metadata_management"; -export * from "./fluxbeam/fluxbeam_v2_token_creation"; -export * from "./fluxbeam/fluxbeam_token_swap"; -export * from "./fluxbeam/fluxbeam_transfer"; -export * from "./fluxbeam/fluxbeam_v1_token_creation"; -export * from "./fluxbeam/fluxbeam_withheld_amounts_tracking"; -export * from "./fluxbeam/fluxbeam_wrap_and_unwrap_sol"; +export * from "./fluxbeam"; diff --git a/src/utils/FluxbeamClient.ts b/src/utils/FluxbeamUtils.ts similarity index 51% rename from src/utils/FluxbeamClient.ts rename to src/utils/FluxbeamUtils.ts index 0da66295..288e1071 100644 --- a/src/utils/FluxbeamClient.ts +++ b/src/utils/FluxbeamUtils.ts @@ -1,68 +1,41 @@ -import { - getAssociatedTokenAddressSync, - getTokenMetadata, - TOKEN_2022_PROGRAM_ID, -} from "@solana/spl-token"; import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; import { FLUXBEAM_BASE_URI } from "../constants"; import { base64 } from "@coral-xyz/anchor/dist/cjs/utils/bytes"; import { FluxbeamServerResponse } from "../types"; -import fs from "fs/promises"; -import path from "path"; -import { createGenericFile, Umi } from "@metaplex-foundation/umi"; - -/** - * Returns the token mints account for a given user - * @param owner - * @param mint - * @param program - * @param allowOwnerOffCurve - */ -export async function getAssociatedTokenPDA( - mint: PublicKey, - owner: PublicKey, - program = TOKEN_2022_PROGRAM_ID, - allowOwnerOffCurve = false, -) { - return getAssociatedTokenAddressSync( - mint, - owner, - allowOwnerOffCurve, - program, - ); -} +import { + getMint, + TOKEN_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID, +} from "@solana/spl-token"; -export async function getToken22Metadata( +// handles the case where a token in the pool is a token 2022 token +export async function getTokenDecimals( agent: SolanaAgentKit, mint: PublicKey, -) { +): Promise { try { - const metadata = await getTokenMetadata( - agent.connection, // Connection instance - mint, // PubKey of the Mint Account - "confirmed", // Commitment, can use undefined to use default - TOKEN_2022_PROGRAM_ID, - ); - if (metadata !== null) { - return metadata; - } else { - throw Error("Token metadata is null"); + return ( + await getMint(agent.connection, mint, "finalized", TOKEN_PROGRAM_ID) + ).decimals; + } catch (error) { + try { + return ( + await getMint( + agent.connection, + mint, + "finalized", + TOKEN_2022_PROGRAM_ID, + ) + ).decimals; + } catch (finalError: any) { + throw new Error( + `Failed to fetch mint info for token ${mint.toBase58()}: ${finalError.message}`, + ); } - } catch (error: any) { - throw Error(`failed to get token metadata: ${error}`); } } -export async function accountExists(agent: SolanaAgentKit, account: PublicKey) { - const acc = await agent.connection - .getAccountInfo(account, "confirmed") - .catch((e) => { - throw Error(`an error occurred: ${e}`); - }); - return !!acc; -} - // Function to sign the transaction export async function signTransaction( agent: SolanaAgentKit, @@ -113,7 +86,7 @@ export async function sendTransaction( const resp = await response.json(); // eslint-disable-next-line no-console - console.log(`https://solscan.io/tx/${resp.signature}`); + console.log(`https://solana.fm/tx/${resp.signature}`); return resp; } catch (error) { @@ -121,22 +94,6 @@ export async function sendTransaction( } } -// export async function signAndSendTransaction() {} - -export async function uploadImage(umi: Umi, filePath: string): Promise { - // Resolve the absolute path to the file relative to the current working directory - const absoluteFilePath = path.resolve(process.cwd(), filePath); - // Read the file asynchronously - const buffer = await fs.readFile(absoluteFilePath); - - const file = createGenericFile(buffer, path.basename(absoluteFilePath), { - contentType: "image/jpeg", - }); - const [imageUri] = await umi.uploader.upload([file]); - - return imageUri; -} - export function uri(endpoint: string) { return `${FLUXBEAM_BASE_URI}/${endpoint}`; } diff --git a/test/addresses.csv b/test/addresses.csv deleted file mode 100644 index 4d776e46..00000000 --- a/test/addresses.csv +++ /dev/null @@ -1,3 +0,0 @@ -6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE -4BgGjf2tNzLJ6zG6BPFYcy3F9ArzoyYm8URf96dEsh1L - diff --git a/test/fluxbeam_bridge_tokens.test.ts b/test/fluxbeam_bridge_tokens.test.ts deleted file mode 100644 index b30a2366..00000000 --- a/test/fluxbeam_bridge_tokens.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { SolanaAgentKit } from "../src"; -import { TOKENS } from "../src/constants"; -import { Chain, fluxbeamBridgeTokens } from "../src/tools/fluxbeam/fluxbeam_bridge_tokens"; - -const testBridgeTokens = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - const destination_wallet_address = - "destination_wallet_address"; - - const fromToken = TOKENS.SOL.toString(); - const toToken = "0x4200000000000000000000000000000000000006"; //WETH - - const signature = await fluxbeamBridgeTokens( - agent, - Chain.Base, - destination_wallet_address, - fromToken, - toToken, - 0.020 - ) - console.log(`this is signature ${signature}`); -}; - -testBridgeTokens() diff --git a/test/fluxbeam_burn_token.test.ts b/test/fluxbeam_burn_token.test.ts deleted file mode 100644 index 5cf9b535..00000000 --- a/test/fluxbeam_burn_token.test.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { fluxbeamBurnToken } from "../src/tools"; - - -const testBurnTokenControls = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - const mint = new PublicKey("6DdtiLQc3519D6tyCQQphcszZtRf5ZEhichUFvJjvJc2"); - const signature3 = await fluxbeamBurnToken( - agent, - mint, - 50000000000 - ) - console.log(`this is signature for burn token method txn${signature3}`); -}; - -// createMintToken() -testBurnTokenControls() diff --git a/test/fluxbeam_create_pool.test.ts b/test/fluxbeam_create_pool.test.ts deleted file mode 100644 index eb714f8e..00000000 --- a/test/fluxbeam_create_pool.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { fluxBeamCreatePool } from "../src/tools"; -import { TOKENS } from "../src/constants"; - -(async () => { - // Initialize SolanaAgentKit instance - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - const tokenA = TOKENS.SOL; // SOL token - const tokenB = TOKENS.USDC; - const tokenAAmount = 0.001; // 1 token A - const tokenBAmount = 0.1; // 100 token B - - // Call the function - const signature = await fluxBeamCreatePool( - solanaAgent, - tokenA, - tokenAAmount, - tokenB, - tokenBAmount, - ); - - // Log the result - console.log("Pool created successfully! Transaction signature:", signature); -})(); diff --git a/test/fluxbeam_create_token_v1.test.ts b/test/fluxbeam_create_token_v1.test.ts deleted file mode 100644 index 2ef469a7..00000000 --- a/test/fluxbeam_create_token_v1.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { fluxbeamCreateTokenV1 } from "../src/tools"; -import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; -import { createUmi} from "@metaplex-foundation/umi-bundle-defaults"; -import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; -import { uploadImage } from "../src/utils/FluxbeamClient"; -import { keypairIdentity } from "@metaplex-foundation/umi"; -import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; - -const testCreateTokenV1 = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - - let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" - - // const uri = await uploadImage(umi, 'test/pic5.jpg'); - - const signature = await fluxbeamCreateTokenV1( - agent, - "test flower", - "TSTFLWR", - 9, - undefined, - "/test/pic5.jpg", - uri_string, - ); - console.log(`this is signature for create mint txn ${signature}`); -}; - - -testCreateTokenV1() - diff --git a/test/fluxbeam_create_token_v2.test.ts b/test/fluxbeam_create_token_v2.test.ts deleted file mode 100644 index e2dc0fff..00000000 --- a/test/fluxbeam_create_token_v2.test.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Keypair, PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { - CreateMintV2, - fluxbeamBurnToken, - fluxbeamCreateTokenV1, - fluxbeamCreateTokenV2, -} from "../src/tools"; -import { ExtensionType } from "@solana/spl-token"; - -const testCreateTokenV2 = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - // Generate a new keypair for the mint - const mintKeypair = Keypair.generate(); - - // Pass the public key to the function - // const tokenMint = mintKeypair.publicKey; - - const signature = await fluxbeamCreateTokenV2( - agent, - agent.wallet_address, - mintKeypair, // we have to pass in the mint keypair to sign the txn not just the mint public key otherwise it says "Missing signature for public key" - "myV2Flowertoken", - "MVFT", - BigInt(100000000000), - agent.wallet_address, - agent.wallet_address, - 9, - true, - 100_000, - [ - //Also take note that a mint with metadata MUST have the metadata-pointer extension initialized - { - type:ExtensionType.MetadataPointer, - cfg:{} - }, - { - type: ExtensionType.TransferFeeConfig, - cfg: { - feeBasisPoints: 500, // 5% fee - maxFee: BigInt(5_000), // Maximum fee in lamports - transfer_fee_config_authority: agent.wallet_address, - withdraw_withheld_authority: agent.wallet_address, - }, - }, - // No additional configuration needed - { - type: ExtensionType.InterestBearingConfig, - cfg: { - rate: 0.05, // 5% interest rate - }, - }, - ], - "this is the first (okay second) token2022 token i'm making", - undefined, - undefined, - "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw", - ); - console.log(`this is signature for create mint v2 txn ${signature}`); -}; - -testCreateTokenV2(); diff --git a/test/fluxbeam_fee_management.test.ts b/test/fluxbeam_fee_management.test.ts deleted file mode 100644 index 4a09ee2d..00000000 --- a/test/fluxbeam_fee_management.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { TOKENS } from "../src/constants"; -import {fluxbeamSubmitFeeClaim, fluxbeamTokenAirdrop} from "../src/tools" - - -const testSubmitFeeClaim = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - let mint = new PublicKey("Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i"); - const signature = await fluxbeamSubmitFeeClaim( - agent, - agent.wallet_address, - mint, - 100_000 - ); -console.log(`this is the signature for submit fee claim ${signature}`); -}; - -testSubmitFeeClaim() - - diff --git a/test/fluxbeam_metadata_management.test.ts b/test/fluxbeam_metadata_management.test.ts deleted file mode 100644 index 7c4d4cd3..00000000 --- a/test/fluxbeam_metadata_management.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { fluxbeamCreateTokenV1, fluxbeamUpdateV1Metadata, fluxbeamUpdateV2Metadata } from "../src/tools"; -import { mplToolbox } from "@metaplex-foundation/mpl-toolbox"; -import { createUmi} from "@metaplex-foundation/umi-bundle-defaults"; -import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters"; -import { uploadImage } from "../src/utils/FluxbeamClient"; -import { keypairIdentity } from "@metaplex-foundation/umi"; -import { irysUploader } from "@metaplex-foundation/umi-uploader-irys"; - -const testUpdateMetadataTokenV1 = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - const umi = createUmi(agent.connection.rpcEndpoint).use(mplToolbox()).use(irysUploader());; - umi.use(keypairIdentity(fromWeb3JsKeypair(agent.wallet))); - - - let uri_string = - "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw"; - - let mint = new PublicKey("9PYyTGrSg3JaJdwouRCMvp2zzHuF1E1ieAU8iBXmdQAX"); - const signature = await fluxbeamUpdateV1Metadata( - agent, - mint, - "FLWRV1", - "FLWR", - uri_string, - ); - console.log(`this is signature for update mint v1 mint txn ${signature}`); -}; - - -const testUpdateMetadataTokenV2 = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - let uri_string = "https://gateway.irys.xyz/FUj4bG5fZFfuFC5E6GnnYGAFqcz5wYVHRmhnduc3bAqw" - - let mint = new PublicKey("Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i"); - - const signature = await fluxbeamUpdateV2Metadata( - agent, - mint, - 100_0000, - "UPDATEDFLOWERV2", - "UFLWR", - uri_string - ); - console.log(`this is signature for updatw mint v2 mint txn ${signature}`); -}; - - -// testUpdateMetadataTokenV1() -testUpdateMetadataTokenV2() \ No newline at end of file diff --git a/test/fluxbeam_token_airdrop.test.ts b/test/fluxbeam_token_airdrop.test.ts deleted file mode 100644 index 22633a2f..00000000 --- a/test/fluxbeam_token_airdrop.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { SolanaAgentKit } from "../src"; -import { TOKENS } from "../src/constants"; -import {fluxbeamTokenAirdrop} from "../src/tools" -const testTokenAirdrop = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - // await fluxbeamTokenAirdrop( - // agent, - // agent.wallet, - // "", - - // "fixed", - // 100, - // "manual", - // [ - // "FHmBz4SnZ5r6Rws958S8WJ5ymnrvUdwjgrVQ3BVeBH95", - // "3HyECVGdysActCjqyATwJLngHmXUg8kw64svzh8BeVH9", - // "41KHBtdibhUE1KYbXFFQF9ZTFWTKuwc2WSFjLAJArKSV", - // ], - // true, - // ), - console.log(agent.wallet_address) - await fluxbeamTokenAirdrop( - agent, - agent.wallet, - "Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i", - "fixed", - 10, - "csv", - "/test/addresses.csv", - true, - 0, // minimum balance - ); -}; - -testTokenAirdrop() - - - - // // Example 2: Dynamic amount to token holders - \ No newline at end of file diff --git a/test/fluxbeam_token_minting_controls.test.ts b/test/fluxbeam_token_minting_controls.test.ts deleted file mode 100644 index d1e6a46e..00000000 --- a/test/fluxbeam_token_minting_controls.test.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { Keypair, PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { TOKENS } from "../src/constants"; -import { fluxbeamMintToAccount, fluxbeamRevokeAuthority, fluxbeamSetAuthority } from "../src/tools"; -import { AuthorityType, createMint, TOKEN_2022_PROGRAM_ID } from "@solana/spl-token"; - -const createMintToken = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - const mintKeypair = Keypair.generate(); - //create the mint to use for testing - const testV2Mint = await createMint( - agent.connection, - agent.wallet, - agent.wallet_address, - agent.wallet_address, - 0, - mintKeypair, - { - skipPreflight: false, - commitment: "finalized", - preflightCommitment: "finalized", - maxRetries: 3, - }, - TOKEN_2022_PROGRAM_ID, - ); - console.log(testV2Mint) -} - -const testTokenMintingControls = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - // Generate a new authority keypair - // const newAuthority = Keypair.generate(); - - // console.log( `this is the newAuthority's secret key ${newAuthority.secretKey}`); - - const testV2MintAddress = new PublicKey( - "GHUMbWGBSYrRuS7ifkhUk2fEaNwzzSQV9kxPtogVBnpT", - ); - - const signature1 = await fluxbeamMintToAccount( - agent, - agent.wallet_address, - testV2MintAddress, - BigInt(123456789), - ); - console.log(`this is signature for mintTo method ${signature1}`); - - const newAuthority = Keypair.fromSecretKey( - Uint8Array.from([ - 12, 176, 2, 136, 152, 18, 53, 59, 60, 110, 175, 154, 181, 4, 218, 104, - //...... secret key bytes - ]), - ); - - - const signature2 = await fluxbeamSetAuthority( - agent, - agent.wallet_address, - testV2MintAddress, - AuthorityType.MintTokens, - newAuthority.publicKey, - ); - console.log(`this is signature for set authority method ${signature2}`); - - //if it says owner does not match - then you are not signing with the current mint authority, add it in additional signers and make the owner the new authority - const signature3 = await fluxbeamRevokeAuthority( - agent, - newAuthority.publicKey, - testV2MintAddress, - AuthorityType.MintTokens, - true, - 100_000_000, - [newAuthority] - ); - console.log(`this is signature for revoke authority method txn${signature3}`); -}; - -// createMintToken() -testTokenMintingControls() diff --git a/test/fluxbeam_token_swap.test.ts b/test/fluxbeam_token_swap.test.ts index dd6f62d8..510efd3c 100644 --- a/test/fluxbeam_token_swap.test.ts +++ b/test/fluxbeam_token_swap.test.ts @@ -17,7 +17,7 @@ import { TOKENS } from "../src/constants"; const outputMint = new PublicKey( "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX", ); - const inputAmount = 0.003; // Amount in token decimals (e.g., 1 USDC = 1) + const inputAmount = 0.00001; // Amount in token decimals (e.g., 1 USDC = 1) const slippageBps = 200; // Slippage tolerance in basis points (2%) // Call fluxBeamSwap with test parameters @@ -31,3 +31,6 @@ import { TOKENS } from "../src/constants"; console.log("Swap successful, signature:", result); })(); + + +//6DdtiLQc3519D6tyCQQphcszZtRf5ZEhichUFvJjvJc2" \ No newline at end of file diff --git a/test/fluxbeam_transfer.test.ts b/test/fluxbeam_transfer.test.ts deleted file mode 100644 index fb124ef1..00000000 --- a/test/fluxbeam_transfer.test.ts +++ /dev/null @@ -1,42 +0,0 @@ - -import { PublicKey } from "@solana/web3.js"; - import { createSolanaTools, SolanaAgentKit } from "../src"; - - import { fluxbeamWrapSOL, fluxbeamUnwrapSOL, fluxbeamTransferSplToken, fluxbeamTransferSol} from "../src/tools"; -import { TOKENS } from "../src/constants"; - - const testWrapandUnwrapSol = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - let v2_mint = new PublicKey("HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC"); //ai16z, token 2022 token - - let mint = TOKENS.BONK - - let dstOwner = new PublicKey("6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE"); - - const signature1 = await fluxbeamTransferSplToken( - agent, - v2_mint, - dstOwner, - 0.02, - ) - - const signature2 = await fluxbeamTransferSol( - agent, - dstOwner, - 0.001 - ) - - console.log(`this is signature one ${signature1}`); - - // console.log(`this is signature two ${signature2}`); - }; - - testWrapandUnwrapSol(); - diff --git a/test/fluxbeam_withheld_amounts_tracking.test.ts b/test/fluxbeam_withheld_amounts_tracking.test.ts deleted file mode 100644 index a5ebec69..00000000 --- a/test/fluxbeam_withheld_amounts_tracking.test.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { TOKENS } from "../src/constants"; -import { fluxbeamGetClaimWitheldTokens, fluxbeamGetClaimWitheldTokensFromMint, fluxbeamGetClaimWithheldTokensToMint, fluxbeamTokenAirdrop } from "../src/tools"; - - -const testWithheldsAmountTracking = async () => { - const agent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - let mint = new PublicKey("Exneu2TBk8Jo45AAFJ43PKH1ZDCVD9mbzHM1CvnFT94i"); - console.log(agent.wallet_address); - -// await fluxbeamGetClaimWitheldTokensFromMint( -// agent, -// mint, -// agent.wallet_address -// ); - -// await fluxbeamGetClaimWithheldTokensToMint( -// agent, -// mint, -// [new PublicKey("6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE"), -// new PublicKey("4BgGjf2tNzLJ6zG6BPFYcy3F9ArzoyYm8URf96dEsh1L")], -// ) - await fluxbeamGetClaimWitheldTokens( - agent, - mint, - agent.wallet_address, - [ - new PublicKey("6hgnytxT3MuDL5TfjtLrd456LbXLHWnn1MmA65j7QLSE"), - new PublicKey("4BgGjf2tNzLJ6zG6BPFYcy3F9ArzoyYm8URf96dEsh1L"), - ], - agent.wallet_address, - ); -}; - -testWithheldsAmountTracking(); - -// // Example 2: Dynamic amount to token holders diff --git a/test/fluxbeam_wrap_and_unwrap_sol.test.ts b/test/fluxbeam_wrap_and_unwrap_sol.test.ts deleted file mode 100644 index db835d4e..00000000 --- a/test/fluxbeam_wrap_and_unwrap_sol.test.ts +++ /dev/null @@ -1,28 +0,0 @@ - - import { createSolanaTools, SolanaAgentKit } from "../src"; - - import { fluxbeamWrapSOL, fluxbeamUnwrapSOL} from "../src/tools"; - - const testWrapandUnwrapSol = async () => { - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - const signature1 = await fluxbeamWrapSOL( - solanaAgent, - 0.00012 - ); - - const signature2 = await fluxbeamUnwrapSOL(solanaAgent, 0.00012); - - console.log(`this is signature one ${signature1}`); - - console.log(`this is signature two ${signature2}`); - }; - - testWrapandUnwrapSol(); - diff --git a/test/index.ts b/test/index.ts deleted file mode 100644 index dd3045b4..00000000 --- a/test/index.ts +++ /dev/null @@ -1,223 +0,0 @@ -import { SolanaAgentKit, ACTIONS } from "../src"; -import { createSolanaTools } from "../src/langchain"; -import { HumanMessage } from "@langchain/core/messages"; -import { MemorySaver } from "@langchain/langgraph"; -import { createReactAgent } from "@langchain/langgraph/prebuilt"; -import { ChatOpenAI } from "@langchain/openai"; -import * as dotenv from "dotenv"; -import * as fs from "fs"; -import * as readline from "readline"; - -dotenv.config(); - -function validateEnvironment(): void { - const missingVars: string[] = []; - const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; - - requiredVars.forEach((varName) => { - if (!process.env[varName]) { - missingVars.push(varName); - } - }); - - if (missingVars.length > 0) { - console.error("Error: Required environment variables are not set"); - missingVars.forEach((varName) => { - console.error(`${varName}=your_${varName.toLowerCase()}_here`); - }); - process.exit(1); - } -} - -validateEnvironment(); - -const WALLET_DATA_FILE = "wallet_data.txt"; - -async function initializeAgent() { - try { - const llm = new ChatOpenAI({ - modelName: "gpt-4o-mini", - temperature: 0.3, - }); - - let walletDataStr: string | null = null; - - if (fs.existsSync(WALLET_DATA_FILE)) { - try { - walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8"); - } catch (error) { - console.error("Error reading wallet data:", error); - } - } - - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - HELIUS_API_KEY: process.env.HELIUS_API_KEY!, - PERPLEXITY_API_KEY: process.env.PERPLEXITY_API_KEY!, - }, - ); - - const tools = createSolanaTools(solanaAgent); - - const memory = new MemorySaver(); - const config = { configurable: { thread_id: "Solana Agent Kit!" } }; - - const agent = createReactAgent({ - llm, - tools, - checkpointSaver: memory, - messageModifier: ` - You are a helpful agent that can interact onchain using the Solana Agent Kit. You are - empowered to interact onchain using your tools. If you ever need funds, you can request them from the - faucet. If not, you can provide your wallet details and request funds from the user. If there is a 5XX - (internal) HTTP error code, ask the user to try again later. If someone asks you to do something you - can't do with your currently available tools, you must say so, and encourage them to implement it - themselves using the Solana Agent Kit, recommend they go to https://www.solanaagentkit.xyz for more information. Be - concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. - `, - }); - - if (walletDataStr) { - fs.writeFileSync(WALLET_DATA_FILE, walletDataStr); - } - - return { agent, config }; - } catch (error) { - console.error("Failed to initialize agent:", error); - throw error; - } -} - -async function runAutonomousMode(agent: any, config: any, interval = 10) { - console.log("Starting autonomous mode..."); - - while (true) { - try { - const thought = - "Be creative and do something interesting on the blockchain. " + - "Choose an action or set of actions and execute it that highlights your abilities."; - - const stream = await agent.stream( - { messages: [new HumanMessage(thought)] }, - config, - ); - - for await (const chunk of stream) { - if ("agent" in chunk) { - console.log(chunk.agent.messages[0].content); - } else if ("tools" in chunk) { - console.log(chunk.tools.messages[0].content); - } - console.log("-------------------"); - } - - await new Promise((resolve) => setTimeout(resolve, interval * 1000)); - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } - } -} - -async function runChatMode(agent: any, config: any) { - console.log("Starting chat mode... Type 'exit' to end."); - - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); - - try { - while (true) { - const userInput = await question("\nPrompt: "); - - if (userInput.toLowerCase() === "exit") { - break; - } - - const stream = await agent.stream( - { messages: [new HumanMessage(userInput)] }, - config, - ); - - for await (const chunk of stream) { - if ("agent" in chunk) { - console.log(chunk.agent.messages[0].content); - } else if ("tools" in chunk) { - console.log(chunk.tools.messages[0].content); - } - console.log("-------------------"); - } - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } finally { - rl.close(); - } -} - -async function chooseMode(): Promise<"chat" | "auto"> { - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - - const question = (prompt: string): Promise => - new Promise((resolve) => rl.question(prompt, resolve)); - - while (true) { - console.log("\nAvailable modes:"); - console.log("1. chat - Interactive chat mode"); - console.log("2. auto - Autonomous action mode"); - - const choice = (await question("\nChoose a mode (enter number or name): ")) - .toLowerCase() - .trim(); - - rl.close(); - - if (choice === "1" || choice === "chat") { - return "chat"; - } else if (choice === "2" || choice === "auto") { - return "auto"; - } - console.log("Invalid choice. Please try again."); - } -} - -async function main() { - try { - console.log("Starting Agent..."); - const { agent, config } = await initializeAgent(); - const mode = await chooseMode(); - - if (mode === "chat") { - await runChatMode(agent, config); - } else { - await runAutonomousMode(agent, config); - } - } catch (error) { - if (error instanceof Error) { - console.error("Error:", error.message); - } - process.exit(1); - } -} - -if (require.main === module) { - main().catch((error) => { - console.error("Fatal error:", error); - process.exit(1); - }); -} diff --git a/test/pic5.jpg b/test/pic5.jpg deleted file mode 100644 index f271eb16f344cb39d2b377196911fd351de1c6a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55568 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

3PP@_jW3+OhyGda<;u6{56lVd^7Qf!9El4 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 J;v=Qc|Jhw$;Ise$ From dbde54f919ada03098264be44333037347f11522 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Tue, 4 Feb 2025 17:40:18 +0100 Subject: [PATCH 06/11] deleted files, rebased --- src/constants/index.ts | 4 -- src/idls/fluxbeam.ts | 0 src/tools/fluxbeam/fluxbeam_swap_token.ts | 27 +-------- src/utils/FluxbeamUtils.ts | 67 +---------------------- test/fluxbeam_token_swap.test.ts | 36 ------------ 5 files changed, 3 insertions(+), 131 deletions(-) delete mode 100644 src/idls/fluxbeam.ts delete mode 100644 test/fluxbeam_token_swap.test.ts diff --git a/src/constants/index.ts b/src/constants/index.ts index c3051db9..0185ec0b 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -11,7 +11,6 @@ export const TOKENS = { jitoSOL: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), bSOL: new PublicKey("bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1"), mSOL: new PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"), - wSOL: new PublicKey("So11111111111111111111111111111111111111112"), BONK: new PublicKey("DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"), } as const; @@ -66,6 +65,3 @@ export const FLUXBEAM_BASE_URI = "https://api.fluxbeam.xyz/v1"; export const FLUXBEAM_SWAP_PROGRAM_ID = new PublicKey( "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X", ); -export const MEMO_PROGRAM_ID = new PublicKey( - "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", -); diff --git a/src/idls/fluxbeam.ts b/src/idls/fluxbeam.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/src/tools/fluxbeam/fluxbeam_swap_token.ts b/src/tools/fluxbeam/fluxbeam_swap_token.ts index 3c6d8b57..1eb9c300 100644 --- a/src/tools/fluxbeam/fluxbeam_swap_token.ts +++ b/src/tools/fluxbeam/fluxbeam_swap_token.ts @@ -1,19 +1,6 @@ -import { - VersionedTransaction, - PublicKey, - TransactionInstruction, -} from "@solana/web3.js"; +import { VersionedTransaction, PublicKey } from "@solana/web3.js"; import { Quote, SolanaAgentKit } from "../../index"; -import { TOKENS, DEFAULT_OPTIONS, FLUXBEAM_BASE_URI } from "../../constants"; -import { - createAssociatedTokenAccountInstruction, - createCloseAccountInstruction, - createSyncNativeInstruction, - getAssociatedTokenAddress, - TOKEN_2022_PROGRAM_ID, - TOKEN_PROGRAM_ID, -} from "@solana/spl-token"; -import { Transaction } from "@solana/web3.js"; +import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; import { getTokenDecimals } from "../../utils/FluxbeamUtils"; function transformResponse(response: { quote: Quote }): Quote { @@ -40,15 +27,6 @@ function transformResponse(response: { quote: Quote }): Quote { }; } -/** - * Swap tokens using FluxBeam DEX - * @param agent SolanaAgentKit instance - * @param inputMint Source token mint address - * @param outputMint Target token mint address - * @param inputAmount Amount to swap (in token decimals) - * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) - * @returns Transaction signature - */ /** * Swap tokens using FluxBeam DEX * @param agent SolanaAgentKit instance @@ -89,7 +67,6 @@ export async function fluxBeamSwap( ).json(); const quote = transformResponse(quoteResponse); - // console.log(quote); const response = await ( await fetch(`${FLUXBEAM_API}/swap/transaction`, { method: "POST", diff --git a/src/utils/FluxbeamUtils.ts b/src/utils/FluxbeamUtils.ts index 288e1071..241d7419 100644 --- a/src/utils/FluxbeamUtils.ts +++ b/src/utils/FluxbeamUtils.ts @@ -1,8 +1,5 @@ -import { Keypair, PublicKey, Transaction } from "@solana/web3.js"; +import { PublicKey } from "@solana/web3.js"; import { SolanaAgentKit } from "../agent"; -import { FLUXBEAM_BASE_URI } from "../constants"; -import { base64 } from "@coral-xyz/anchor/dist/cjs/utils/bytes"; -import { FluxbeamServerResponse } from "../types"; import { getMint, TOKEN_PROGRAM_ID, @@ -35,65 +32,3 @@ export async function getTokenDecimals( } } } - -// Function to sign the transaction -export async function signTransaction( - agent: SolanaAgentKit, - transaction: Transaction, - additional_signers: Keypair[] = [], -) { - transaction.feePayer = agent.wallet_address; - transaction.recentBlockhash = ( - await agent.connection.getLatestBlockhash() - ).blockhash; - - transaction.sign(agent.wallet, ...additional_signers); // Sign the transaction - - // Serialize the transaction - const serializedTransaction = transaction.serialize(); - - // Encode the serialized transaction to a base64 string - const base64Transaction = base64.encode(serializedTransaction); - - return base64Transaction; -} - -//send the transaction to the fluxbeam endpoint -// bwmkt is a query param meaning "bandwidth market" and is set to true -export async function sendTransaction( - agent: SolanaAgentKit, - transaction: string, -): Promise { - const endpoint = - "https://api.fluxbeam.xyz/v1/solana/sendTransaction?bwmkt=true"; - - try { - const response = await fetch(endpoint, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - wallet: agent.wallet_address, - transaction: transaction, - }), - }); - - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - const resp = await response.json(); - - // eslint-disable-next-line no-console - console.log(`https://solana.fm/tx/${resp.signature}`); - - return resp; - } catch (error) { - throw Error(`Error sending transaction: ${error}`); - } -} - -export function uri(endpoint: string) { - return `${FLUXBEAM_BASE_URI}/${endpoint}`; -} diff --git a/test/fluxbeam_token_swap.test.ts b/test/fluxbeam_token_swap.test.ts deleted file mode 100644 index 510efd3c..00000000 --- a/test/fluxbeam_token_swap.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { PublicKey, Connection, Keypair } from "@solana/web3.js"; -import { SolanaAgentKit } from "../src"; -import { fluxBeamSwap } from "../src/tools"; -import { TOKENS } from "../src/constants"; - -(async () => { - const solanaAgent = new SolanaAgentKit( - process.env.SOLANA_PRIVATE_KEY!, - process.env.RPC_URL!, - { - OPENAI_API_KEY: process.env.OPENAI_API_KEY!, - }, - ); - - // Test parameters - const inputMint = new PublicKey("So11111111111111111111111111111111111111112"); - const outputMint = new PublicKey( - "FLUXBmPhT3Fd1EDVFdg46YREqHBeNypn1h4EbnTzWERX", - ); - const inputAmount = 0.00001; // Amount in token decimals (e.g., 1 USDC = 1) - const slippageBps = 200; // Slippage tolerance in basis points (2%) - - // Call fluxBeamSwap with test parameters - const result = await fluxBeamSwap( - solanaAgent, - inputMint, - outputMint, - inputAmount, - slippageBps, - ); - - console.log("Swap successful, signature:", result); -})(); - - -//6DdtiLQc3519D6tyCQQphcszZtRf5ZEhichUFvJjvJc2" \ No newline at end of file From 27d48d432c799dab4053a3f1377acac765607851 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Tue, 4 Feb 2025 18:08:43 +0100 Subject: [PATCH 07/11] modified package.json, removed test/index.ts, added lock file --- package.json | 2 +- pnpm-lock.yaml | 1327 +++++++++++++++++++++++++++++------------------- test/index.ts | 223 ++++++++ 3 files changed, 1027 insertions(+), 525 deletions(-) create mode 100644 test/index.ts diff --git a/package.json b/package.json index 14830364..de983105 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "scripts": { "build": "tsc", "docs": "typedoc src --out docs", - "test": "tsx test/fluxbeam_token_swap.test.ts", + "test": "tsx test/index.ts", "test:vercel-ai": "tsx test/agent_sdks/vercel_ai.ts", "generate": "tsx src/utils/keypair.ts", "lint": "eslint . --ext .ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e784006c..07a988bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: version: 0.1.0 '@bonfida/spl-name-service': specifier: ^3.0.7 - version: 3.0.8(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@cks-systems/manifest-sdk': specifier: 0.1.59 - version: 0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@coral-xyz/anchor': specifier: '0.29' version: 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -34,19 +34,19 @@ importers: version: 0.3.2(@types/node@22.10.7)(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@langchain/core': specifier: ^0.3.26 - version: 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + version: 0.3.27(openai@4.77.3(zod@3.24.1)) '@langchain/groq': specifier: ^0.1.2 - version: 0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/langgraph': specifier: ^0.2.36 - version: 0.2.41(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))) + version: 0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@langchain/openai': specifier: ^0.3.16 - version: 0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) '@lightprotocol/compressed-token': specifier: ^0.17.1 - version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': specifier: ^0.17.1 version: 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -55,13 +55,13 @@ importers: version: 9.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@mercurial-finance/dynamic-amm-sdk': specifier: ^1.1.19 - version: 1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@metaplex-foundation/digital-asset-standard-api': specifier: ^1.0.4 version: 1.0.4(@metaplex-foundation/umi@0.9.2) '@metaplex-foundation/mpl-core': specifier: ^1.1.1 - version: 1.2.0(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.1) + version: 1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.0) '@metaplex-foundation/mpl-token-metadata': specifier: ^3.3.0 version: 3.3.0(@metaplex-foundation/umi@0.9.2) @@ -79,16 +79,16 @@ importers: version: 1.0.0 '@metaplex-foundation/umi-uploader-irys': specifier: ^1.0.0 - version: 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@meteora-ag/alpha-vault': specifier: ^1.1.7 - version: 1.1.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 1.1.7(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@meteora-ag/dlmm': specifier: ^1.3.0 - version: 1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@onsol/tldparser': specifier: ^0.6.7 version: 0.6.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1)(borsh@2.0.0)(buffer@6.0.3)(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -97,10 +97,10 @@ importers: version: 5.2.0 '@orca-so/common-sdk': specifier: 0.6.4 - version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + version: 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@orca-so/whirlpools-sdk': specifier: ^0.13.12 - version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) '@project-serum/anchor': specifier: ^0.26.0 version: 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -109,13 +109,13 @@ importers: version: 1.3.0(axios@1.7.9) '@raydium-io/raydium-sdk-v2': specifier: 0.1.95-alpha - version: 0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token': specifier: ^0.4.9 - version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token-metadata': specifier: ^0.1.6 - version: 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + version: 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': specifier: ^1.98.0 version: 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -124,23 +124,22 @@ importers: version: 1.0.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@sqds/multisig': specifier: ^2.1.3 - version: 2.1.3(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) version: 2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@switchboard-xyz/common': specifier: ^2.5.15 version: 2.5.15(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@tensor-oss/tensorswap-sdk': specifier: ^4.5.0 - version: 4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@tiplink/api': specifier: ^0.3.1 version: 0.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(sodium-native@3.4.1)(utf-8-validate@5.0.10) '@voltr/vault-sdk': specifier: ^0.1.1 - version: 0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) ai: specifier: ^4.0.22 - version: 4.1.0(react@19.0.0)(zod@3.24.1) + version: 4.0.22(react@19.0.0)(zod@3.24.1) bn.js: specifier: ^5.2.1 version: 5.2.1 @@ -161,23 +160,22 @@ importers: version: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) flash-sdk: specifier: ^2.24.3 - version: 2.26.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + version: 2.24.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) form-data: specifier: ^4.0.1 version: 4.0.1 langchain: specifier: ^0.3.8 - version: 0.3.12(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(axios@1.7.9)(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + version: 0.3.9(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))))(axios@1.7.9)(openai@4.77.3(zod@3.24.1)) openai: specifier: ^4.77.0 - version: 4.77.3(encoding@0.1.13)(zod@3.24.1) version: 4.77.3(zod@3.24.1) tiktoken: specifier: ^1.0.18 version: 1.0.18 typedoc: specifier: ^0.27.6 - version: 0.27.6(typescript@5.7.3) + version: 0.27.6(typescript@5.7.2) zod: specifier: ^3.24.1 version: 3.24.1 @@ -193,10 +191,10 @@ importers: version: 22.10.7 '@typescript-eslint/eslint-plugin': specifier: ^8.18.2 - version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) + version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/parser': specifier: ^8.18.2 - version: 8.21.0(eslint@8.57.1)(typescript@5.7.3) + version: 8.19.0(eslint@8.57.1)(typescript@5.7.2) eslint: specifier: ^8.56.0 version: 8.57.1 @@ -205,7 +203,7 @@ importers: version: 9.1.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.3(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) + version: 5.2.2(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2) husky: specifier: ^9.1.7 version: 9.1.7 @@ -220,7 +218,7 @@ importers: version: 4.19.2 typescript: specifier: ^5.7.2 - version: 5.7.3 + version: 5.7.2 packages: @@ -230,17 +228,14 @@ packages: '@adraffy/ens-normalize@1.10.1': resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - - '@ai-sdk/openai@1.1.0': - resolution: {integrity: sha512-D2DaGMK89yYgO32n4Gr7gBJeJGGGS27gdfzYFMRDXlZmKh7VW1WXBp3FXxDwpmt0CgLoVI4qV8lf+gslah+kWw==} + '@ai-sdk/openai@1.0.11': + resolution: {integrity: sha512-qI9s7Slma5i5bB4yYVlFdcG3PNDwdqivPT1Dr8adDX92nSSpILjgFIooS5yys9sXjvvcfOi/WXbDvVhLSRRlvg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/provider-utils@2.1.0': - resolution: {integrity: sha512-rBUabNoyB25PBUjaiMSk86fHNSCqTngNZVvXxv8+6mvw47JX5OexW+ZHRsEw8XKTE8+hqvNFVzctaOrRZ2i9Zw==} + '@ai-sdk/provider-utils@2.0.5': + resolution: {integrity: sha512-2M7vLhYN0ThGjNlzow7oO/lsL+DyMxvGMIYmVQvEYaCWhDzxH5dOp78VNjJIVwHzVLMbBDigX3rJuzAs853idw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -248,12 +243,12 @@ packages: zod: optional: true - '@ai-sdk/provider@1.0.4': - resolution: {integrity: sha512-lJi5zwDosvvZER3e/pB8lj1MN3o3S7zJliQq56BRr4e9V3fcRyFtwP0JRxaRS5vHYX3OJ154VezVoQNrk0eaKw==} + '@ai-sdk/provider@1.0.3': + resolution: {integrity: sha512-WiuJEpHTrltOIzv3x2wx4gwksAHW0h6nK3SoDzjqCOJLu/2OJ1yASESTIX+f07ChFykHElVoP80Ol/fe9dw6tQ==} engines: {node: '>=18'} - '@ai-sdk/react@1.1.0': - resolution: {integrity: sha512-U5lBbLyf1pw79xsk5dgHSkBv9Jta3xzWlOLpxsmHlxh1X94QOH3e1gm+nioQ/JvTuHLm23j2tz3i4MpMdchwXQ==} + '@ai-sdk/react@1.0.7': + resolution: {integrity: sha512-j2/of4iCNq+r2Bjx0O9vdRhn5C/02t2Esenis71YtnsoynPz74eQlJ3N0RYYPheThiJes50yHdfdVdH9ulxs1A==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -264,8 +259,8 @@ packages: zod: optional: true - '@ai-sdk/ui-utils@1.1.0': - resolution: {integrity: sha512-ETXwdHaHwzC7NIehbthDFGwsTFk+gNtRL/lm85nR4WDFvvYQptoM/7wTANs0p0H7zumB3Ep5hKzv0Encu8vSRw==} + '@ai-sdk/ui-utils@1.0.6': + resolution: {integrity: sha512-ZP6Vjj+VCnSPBIAvWAdKj2olQONJ/f4aZpkVCGkzprdhv8TjHwB6CTlXFS3zypuEGy4asg84dc1dvXKooQXFvg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -298,16 +293,16 @@ packages: peerDependencies: '@solana/web3.js': ^1.87.3 - '@bonfida/spl-name-service@3.0.8': - resolution: {integrity: sha512-JsjQWLVYTY7ofVDdu5wNgVmRvqveJsTv0tEHTMGtyztsxlG37hxGJSTywX0P/u54MIzr0uaN5sA26m2cK0N/LA==} + '@bonfida/spl-name-service@3.0.7': + resolution: {integrity: sha512-okOLXhy+fQoyQ/sZgMleO5RrIZfTkWEoHMxWgUqg6RP/MTBlrKxlhKC6ymKn4UUe0C5s3Nb8A+3Ams7vX0nMDg==} peerDependencies: '@solana/web3.js': ^1.87.3 '@brokerloop/ttlcache@3.2.3': resolution: {integrity: sha512-kZWoyJGBYTv1cL5oHBYEixlJysJBf2RVnub3gbclD+dwaW9aKubbHzbZ9q1q6bONosxaOqMsoBorOrZKzBDiqg==} - '@cfworker/json-schema@4.1.0': - resolution: {integrity: sha512-/vYKi/qMxwNsuIJ9WGWwM2rflY40ZenK3Kh4uR5vB9/Nz12Y7IUN/Xf4wDA7vzPfw0VNh3b/jz4+MjcVgARKJg==} + '@cfworker/json-schema@4.0.3': + resolution: {integrity: sha512-ZykIcDTVv5UNmKWSTLAs3VukO6NDJkkSKxrgUTDPBkAlORVT3H9n5DbRjRl8xIotklscHdbLIa0b9+y3mQq73g==} '@cks-systems/manifest-sdk@0.1.59': resolution: {integrity: sha512-ZYTwwDxrC2u74kF30iWZPZPYXB9MtOydLd4/SQdlMXrb6bj1OooMtZxukSCu/Tlkp+KR26bEr6gYuErFHdUFjg==} @@ -535,14 +530,38 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/config-array@0.19.1': + resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.9.1': + resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.17.0': + resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.5': + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.4': + resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ethereumjs/rlp@4.0.1': resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} @@ -654,6 +673,14 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} @@ -667,6 +694,14 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + '@irys/arweave@0.0.2': resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} @@ -736,8 +771,8 @@ packages: resolution: {integrity: sha512-jtJKbJWB1NPU1YvtrExOB2rumvUFgkJwlWGxyjSIV9A6zcLVmUbcZGV8fCSuXgl5bbzOIQLJ1xcLYQmbW9TkTg==} engines: {node: '>=18'} - '@langchain/groq@0.1.3': - resolution: {integrity: sha512-dMzvBVaLf/0IQoHdAOAN8W/PbOcwgbvgUMCn02CqvCC90mxZ45LI0Tipzqnoaam0hiKALR5hLc3dNj1oCYV92w==} + '@langchain/groq@0.1.2': + resolution: {integrity: sha512-bgQ9yGoNHOwG6LG2ngGvSNxF/1U1c1u3vKmFWmzecFIcBoQQOJY0jb0MrL3g1uTife0Sr3zxkWKXQg2aK/U4Sg==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' @@ -748,20 +783,20 @@ packages: peerDependencies: '@langchain/core': '>=0.2.31 <0.4.0' - '@langchain/langgraph-sdk@0.0.36': - resolution: {integrity: sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==} + '@langchain/langgraph-sdk@0.0.33': + resolution: {integrity: sha512-l/hRbI6roLzplBXy2VyDUwqY1TkK7RcjPmrMUuVdvCCH4LTwLfIXh/G1kHatNiN7VUTskw0FkfBbgq6gtj0ang==} - '@langchain/langgraph@0.2.41': - resolution: {integrity: sha512-NeNizWP4k9voEwJxuFtfopF02Lx1isuEsdZKYCN3ueJpOnkVg0iGx8woPBsQpYcrWcySkIt3zOkgtUsrNHqo3g==} + '@langchain/langgraph@0.2.38': + resolution: {integrity: sha512-mVy99pMftBGgUTBTCepSyzTovWCvpgdNcXsAjxTiMrMX6lzueNiBz0ljkY7UFoIoHYwurQbyl2WmMPFuxkSIAw==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.36 <0.3.0 || >=0.3.9 < 0.4.0' - '@langchain/openai@0.3.17': - resolution: {integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag==} + '@langchain/openai@0.3.16': + resolution: {integrity: sha512-Om9HRlTeI0Ou6D4pfxbWHop4WGfkCdV/7v1W/+Jr7NSf0BNoA9jk5GqGms8ZtOYSGgPvizDu3i0TrM3B4cN4NA==} engines: {node: '>=18'} peerDependencies: - '@langchain/core': '>=0.3.29 <0.4.0' + '@langchain/core': '>=0.2.26 <0.4.0' '@langchain/textsplitters@0.1.0': resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} @@ -878,10 +913,10 @@ packages: '@metaplex-foundation/mpl-candy-machine@5.1.0': resolution: {integrity: sha512-pjHpUpWVOCDxK3l6dXxfmJKNQmbjBqnm5ElOl1mJAygnzO8NIPQvrP89y6xSNyo8qZsJyt4ZMYUyD0TdbtKZXQ==} - '@metaplex-foundation/mpl-core@1.2.0': - resolution: {integrity: sha512-gFWIJprd69JW4dxC4t1G9Q+GTTWQMS0ydDeegB2j7MNt82RLSvZn9Qw1ffmSMYEDOpLSLFkfPVeEGMzTbJ5Dwg==} + '@metaplex-foundation/mpl-core@1.1.1': + resolution: {integrity: sha512-h1kLw+cGaV8SiykoHDb1/G01+VYqtJXAt0uGuO5+2Towsdtc6ET4M62iqUnh4EacTVMIW1yYHsKsG/LYWBCKaA==} peerDependencies: - '@metaplex-foundation/umi': '>=0.8.2 <= 1.0' + '@metaplex-foundation/umi': '>=0.8.2 < 1' '@noble/hashes': ^1.3.1 '@metaplex-foundation/mpl-token-metadata@2.13.0': @@ -995,8 +1030,8 @@ packages: '@metaplex-foundation/umi@0.9.2': resolution: {integrity: sha512-9i4Acm4pruQfJcpRrc2EauPBwkfDN0I9QTvJyZocIlKgoZwD6A6wH0PViH1AjOVG5CQCd1YI3tJd5XjYE1ElBw==} - '@meteora-ag/alpha-vault@1.1.8': - resolution: {integrity: sha512-qfkAKkFa6LghbgGKbNhJS8eIJi16YOMvN/RC3j2L7ukGWONcVVeTW6E4j9Jok7hxc0kzlFhUWemO7XEV6HuV8A==} + '@meteora-ag/alpha-vault@1.1.7': + resolution: {integrity: sha512-wIfACyzT8XjMUxx/BKNtmb+nrn/jOne03tkVh5oEdTCas0dCCTHSjUZhkC7/X92+KjNNWckMGmHutE6EZzYdIA==} '@meteora-ag/dlmm@1.3.0': resolution: {integrity: sha512-k3VdtisuNaSavTY+M8vLsB3wqqpC/dyFPujp6MScz85Nj0Beuua6PRg5XSjzhAt8rbuXcnTSKWCTYzc24UMHmA==} @@ -1067,8 +1102,8 @@ packages: '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} - '@noble/curves@1.8.1': - resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==} + '@noble/curves@1.8.0': + resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} engines: {node: ^14.21.3 || >=16} '@noble/ed25519@1.7.3': @@ -1081,13 +1116,6 @@ packages: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} - '@noble/hashes@1.1.3': - resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -1096,8 +1124,8 @@ packages: resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@1.7.1': - resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} + '@noble/hashes@1.7.0': + resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} engines: {node: ^14.21.3 || >=16} '@nodelib/fs.scandir@2.1.5': @@ -1255,14 +1283,14 @@ packages: '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} - '@scure/base@1.2.4': - resolution: {integrity: sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==} + '@scure/base@1.2.1': + resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} '@scure/bip32@1.4.0': resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} - '@scure/bip32@1.6.2': - resolution: {integrity: sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==} + '@scure/bip32@1.6.1': + resolution: {integrity: sha512-jSO+5Ud1E588Y+LFo8TaB8JVPNAZw/lGGao+1SepHDeTs2dFLurdNIAgUuDlwezqEjRjElkCJajVrtrZaBxvaQ==} '@scure/bip39@1.1.0': resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} @@ -1270,26 +1298,26 @@ packages: '@scure/bip39@1.3.0': resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - '@scure/bip39@1.5.4': - resolution: {integrity: sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==} + '@scure/bip39@1.5.1': + resolution: {integrity: sha512-GnlufVSP9UdAo/H2Patfv22VTtpNTyfi+I3qCKpvuB5l1KWzEYx+l2TNpBy9Ksh4xTs3Rn06tBlpWCi/1Vz8gw==} - '@shikijs/core@1.29.1': - resolution: {integrity: sha512-Mo1gGGkuOYjDu5H8YwzmOuly9vNr8KDVkqj9xiKhhhFS8jisAtDSEWB9hzqRHLVQgFdA310e8XRJcW4tYhRB2A==} + '@shikijs/core@1.27.2': + resolution: {integrity: sha512-ns1dokDr0KE1lQ9mWd4rqaBkhSApk0qGCK1+lOqwnkQSkVZ08UGqXj1Ef8dAcTMZNFkN6PSNjkL5TYNX7pyPbQ==} - '@shikijs/engine-javascript@1.29.1': - resolution: {integrity: sha512-Hpi8k9x77rCQ7F/7zxIOUruNkNidMyBnP5qAGbLFqg4kRrg1HZhkB8btib5EXbQWTtLb5gBHOdBwshk20njD7Q==} + '@shikijs/engine-javascript@1.27.2': + resolution: {integrity: sha512-0JB7U5vJc16NShBdxv9hSSJYSKX79+32O7F4oXIxJLdYfomyFvx4B982ackUI9ftO9T3WwagkiiD3nOxOOLiGA==} - '@shikijs/engine-oniguruma@1.29.1': - resolution: {integrity: sha512-gSt2WhLNgEeLstcweQOSp+C+MhOpTsgdNXRqr3zP6M+BUBZ8Md9OU2BYwUYsALBxHza7hwaIWtFHjQ/aOOychw==} + '@shikijs/engine-oniguruma@1.27.2': + resolution: {integrity: sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==} - '@shikijs/langs@1.29.1': - resolution: {integrity: sha512-iERn4HlyuT044/FgrvLOaZgKVKf3PozjKjyV/RZ5GnlyYEAZFcgwHGkYboeBv2IybQG1KVS/e7VGgiAU4JY2Gw==} + '@shikijs/langs@1.27.2': + resolution: {integrity: sha512-MSrknKL0DbeXvhtSigMLIzjPOOQfvK7fsbcRv2NUUB0EvuTTomY8/U+lAkczYrXY2+dygKOapJKk8ScFYbtoNw==} - '@shikijs/themes@1.29.1': - resolution: {integrity: sha512-lb11zf72Vc9uxkl+aec2oW1HVTHJ2LtgZgumb4Rr6By3y/96VmlU44bkxEb8WBWH3RUtbqAJEN0jljD9cF7H7g==} + '@shikijs/themes@1.27.2': + resolution: {integrity: sha512-Yw/uV7EijjWavIIZLoWneTAohcbBqEKj6XMX1bfMqO3llqTKsyXukPp1evf8qPqzUHY7ibauqEaQchhfi857mg==} - '@shikijs/types@1.29.1': - resolution: {integrity: sha512-aBqAuhYRp5vSir3Pc9+QPu9WESBOjUo03ao0IHLC4TyTioSsp/SkbAZSrIH4ghYYC1T1KTEpRSBa83bas4RnPA==} + '@shikijs/types@1.27.2': + resolution: {integrity: sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==} '@shikijs/vscode-textmate@10.0.1': resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} @@ -1504,8 +1532,8 @@ packages: peerDependencies: '@solana/web3.js': ^1.77.3 - '@solana/wallet-standard-features@1.3.0': - resolution: {integrity: sha512-ZhpZtD+4VArf6RPitsVExvgkF+nGghd1rzPjd97GmBximpnt1rsUxMOEyoIEuH3XBxPyNB6Us7ha7RHWQR+abg==} + '@solana/wallet-standard-features@1.2.0': + resolution: {integrity: sha512-tUd9srDLkRpe1BYg7we+c4UhRQkq+XQWswsr/L1xfGmoRDF47BPSXf4zE7ZU2GRBGvxtGt7lwJVAufQyQYhxTQ==} engines: {node: '>=16'} '@solana/web3.js@1.77.4': @@ -1555,8 +1583,8 @@ packages: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - '@tensor-hq/tensor-common@8.3.2': - resolution: {integrity: sha512-gU+5Qby4vqcHvGzBOPiYHa4okNoTd8NRsNCQCbBQo2VdF2ITwRdqW759tricdmvwhISDmuo7r+mWp0/MDmnrNA==} + '@tensor-hq/tensor-common@8.3.1': + resolution: {integrity: sha512-cgc+Z0nR23pi+1DfJgF1+afWd+xf1e6VYPM9yhECshmERr6BgojQfcuoltHHcgpwSlLrZXnm47kQ48I2M6rxFQ==} '@tensor-oss/tensorswap-sdk@4.5.0': resolution: {integrity: sha512-eNM6k1DT5V/GadxSHm8//z2wlLl8/EcA0KFQXKaxRba/2MirNySsoVGxDXO2UdOI4eZMse8f+8Et3P63WWjsIw==} @@ -1607,6 +1635,9 @@ packages: '@types/diff-match-patch@1.0.36': resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -1643,11 +1674,11 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.71': - resolution: {integrity: sha512-evXpcgtZm8FY4jqBSN8+DmOTcVkkvTmAayeo4Wf3m1xAruyVGzGuDh/Fb/WWX2yLItUiho42ozyJjB0dw//Tkw==} + '@types/node@18.19.69': + resolution: {integrity: sha512-ECPdY1nlaiO/Y6GUnwgtAAhLNaQ53AyIVz+eILxpEo5OvuqE6yWkqWBIb5dU0DqhKQtMeny+FBD3PK6lm7L5xQ==} - '@types/node@20.17.14': - resolution: {integrity: sha512-w6qdYetNL5KRBiSClK/KWai+2IMEJuAj+EujKCumalFOwXtvOXaEan9AuwcRID2IcOIAWSIfR495hBtgKlx2zg==} + '@types/node@20.17.11': + resolution: {integrity: sha512-Ept5glCK35R8yeyIeYlRIZtX6SLRyqMhOFTgj5SOkMpLTdw3SEHI9fHx60xaUZ+V1aJxQJODE+7/j5ocZydYTg==} '@types/node@22.10.7': resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} @@ -1697,51 +1728,51 @@ packages: '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} - '@typescript-eslint/eslint-plugin@8.21.0': - resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} + '@typescript-eslint/eslint-plugin@8.19.0': + resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.21.0': - resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} + '@typescript-eslint/parser@8.19.0': + resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.21.0': - resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} + '@typescript-eslint/scope-manager@8.19.0': + resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.21.0': - resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} + '@typescript-eslint/type-utils@8.19.0': + resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.21.0': - resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} + '@typescript-eslint/types@8.19.0': + resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.21.0': - resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} + '@typescript-eslint/typescript-estree@8.19.0': + resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.21.0': - resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} + '@typescript-eslint/utils@8.19.0': + resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.21.0': - resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} + '@typescript-eslint/visitor-keys@8.19.0': + resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.1': @@ -1803,8 +1834,8 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - ai@4.1.0: - resolution: {integrity: sha512-95nI9hBSSAKPrMnpJbaB3yqvh+G8BS4/EtFz3HR0HgEDJpxC0R6JAlB8+B/BXHd/roNGBrS08Z3Zain/6OFSYA==} + ai@4.0.22: + resolution: {integrity: sha512-yvcjWtofI2HZwgT3jMkoNnDUhAY+S9cOvZ6xbbOzrS0ZeFl1/gcbasFnwAqUJ7uL/t72/3a0Vy/pKg6N19A2Mw==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -2223,9 +2254,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - console-table-printer@2.12.1: - resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -2541,8 +2569,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.2.3: - resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} + eslint-plugin-prettier@5.2.2: + resolution: {integrity: sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -2559,6 +2587,10 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2573,6 +2605,20 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true + eslint@9.17.0: + resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2678,8 +2724,8 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -2709,6 +2755,10 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -2720,8 +2770,8 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-process@1.4.10: - resolution: {integrity: sha512-ncYFnWEIwL7PzmrK1yZtaccN8GhethD37RzBHG6iOZoFYB4vSmLLXfeWJjeN5nMvCJMjOtBvBBF8OgxEcikiZg==} + find-process@1.4.8: + resolution: {integrity: sha512-W2PIdgXfhYeIlTzGiDyGJhjslZcwQCRcSw6plgyLu3CFk1PhQrKkTbQ5jkJ2NhOabMwETTrhl7c+xBcQ7B2jRg==} hasBin: true find-up@5.0.0: @@ -2731,13 +2781,17 @@ packages: find@0.3.0: resolution: {integrity: sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw==} - flash-sdk@2.26.1: - resolution: {integrity: sha512-zBZZFxHeYQYb2c1XWsghTWLim3kQFuBXlAt6Y1QpXn3OQJp6KoxpaB6UzIOXO/5IWB99/r20AOZIIzHfAxiJ3A==} + flash-sdk@2.24.3: + resolution: {integrity: sha512-3JdmHZksBgcRlCXVVFZEV64NGKxVHURHoHAMc3+Ev1BdN0Re2S44wxTaQmO6EIvwPYscVG0BPbp6GibpEuMdsw==} flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} @@ -2839,8 +2893,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} git-package-json@1.4.10: resolution: {integrity: sha512-DRAcvbzd2SxGK7w8OgYfvKqhFliT5keX0lmSmVdgScgf1kkl5tbbo7Pam6uYoCa1liOiipKxQZG8quCtGWl/fA==} @@ -2869,6 +2923,11 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2877,6 +2936,10 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3144,6 +3207,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} + jayson@4.1.3: resolution: {integrity: sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==} engines: {node: '>=8'} @@ -3236,8 +3303,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - langchain@0.3.12: - resolution: {integrity: sha512-BjdQ/f/66W05L8nRgX74bf5QvJIphpg+K5ZTmQwGE8Gk3umtzHp8T4YIRFYjvTxU4XQrGXOgWk1Y9rk5uBbjKA==} + langchain@0.3.9: + resolution: {integrity: sha512-uteRutI03Bt9f53nZmx8mWfJXkf6VlFVRuOprRJ0mWdCpkTP359sxrH4v6w4TokLiziPC/aMay662kmOz0dHlA==} engines: {node: '>=18'} peerDependencies: '@langchain/anthropic': '*' @@ -3247,7 +3314,6 @@ packages: '@langchain/core': '>=0.2.21 <0.4.0' '@langchain/google-genai': '*' '@langchain/google-vertexai': '*' - '@langchain/google-vertexai-web': '*' '@langchain/groq': '*' '@langchain/mistralai': '*' '@langchain/ollama': '*' @@ -3269,8 +3335,6 @@ packages: optional: true '@langchain/google-vertexai': optional: true - '@langchain/google-vertexai-web': - optional: true '@langchain/groq': optional: true '@langchain/mistralai': @@ -3288,8 +3352,8 @@ packages: typeorm: optional: true - langsmith@0.3.1: - resolution: {integrity: sha512-4xkKuav39KppGEsIYJ22CtN8WWrei0rUuBiyjTfjR/q9AOs+ybzpKXB5VLXjphJrgAsg8GOfiDXJu6CazuOgVA==} + langsmith@0.2.14: + resolution: {integrity: sha512-ClAuAgSf3m9miMYotLEaZKQyKdaWlfjhebCuYco8bc6g72dU2VwTg31Bv4YINBq7EH2i1cMwbOiJxbOXPqjGig==} peerDependencies: openai: '*' peerDependenciesMeta: @@ -3390,6 +3454,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.0.2: + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} + engines: {node: 20 || >=22} + lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -3507,6 +3575,10 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3585,8 +3657,8 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abi@3.73.0: - resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} + node-abi@3.71.0: + resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} engines: {node: '>=10'} node-addon-api@2.0.2: @@ -3709,18 +3781,15 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-to-es@2.3.0: - resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + oniguruma-to-es@2.1.0: + resolution: {integrity: sha512-Iq/949c5IueVC5gQR7OYXs0uHsDIePcgZFlVRIVGfQcWwbKG+nsyWfthswdytShlRdkZADY+bWSi+BRyUL81gA==} - openai@4.79.2: - resolution: {integrity: sha512-hn2CpJGnw2fsZqzM5fuykrdzKzd5LopgvEBtABq6kERNqJe1F20866mcwjceL8lepBlr/t7NbQS/j6jpBb7hmQ==} + openai@4.77.3: + resolution: {integrity: sha512-wLDy4+KWHz31HRFMW2+9KQuVuT2QWhs0z94w1Gm1h2Ut9vIHr9/rHZggbykZEfyiaJRVgw8ZS9K6AylDWzvPYw==} hasBin: true peerDependencies: - ws: ^8.18.0 zod: ^3.23.8 peerDependenciesMeta: - ws: - optional: true zod: optional: true @@ -3828,6 +3897,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} @@ -4066,6 +4139,11 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + rimraf@6.0.1: + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + engines: {node: 20 || >=22} + hasBin: true + ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -4155,8 +4233,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.29.1: - resolution: {integrity: sha512-TghWKV9pJTd/N+IgAIVJtr0qZkB7FfFCUrrEJc0aRmZupo3D1OCVRknQWVRVA7AX/M0Ld7QfoAruPzr3CnUJuw==} + shiki@1.27.2: + resolution: {integrity: sha512-QtA1C41oEVixKog+V8I3ia7jjGls7oCZ8Yul8vdHrVBga5uPoyTtMvFF4lMMXIyAZo5A5QbXq91bot2vA6Q+eQ==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -4187,9 +4265,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-wcswidth@1.0.1: - resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -4257,8 +4332,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} @@ -4454,11 +4529,11 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} - engines: {node: '>=18.12'} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} peerDependencies: - typescript: '>=4.8.4' + typescript: '>=4.2.0' ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -4845,7 +4920,7 @@ snapshots: '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@irys/sdk': 0.2.11(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/beet': 0.7.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -4858,7 +4933,7 @@ snapshots: fs: 0.0.1-security irys: 0.0.1 node-fetch: 3.3.2 - ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@22.10.7)(typescript@5.7.2) tweetnacl: 1.0.3 transitivePeerDependencies: - '@swc/core' @@ -4875,39 +4950,39 @@ snapshots: '@adraffy/ens-normalize@1.10.1': {} - '@ai-sdk/openai@1.1.0(zod@3.24.1)': + '@ai-sdk/openai@1.0.11(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) + '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) zod: 3.24.1 - '@ai-sdk/provider-utils@2.1.0(zod@3.24.1)': + '@ai-sdk/provider-utils@2.0.5(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.4 + '@ai-sdk/provider': 1.0.3 eventsource-parser: 3.0.0 nanoid: 3.3.8 secure-json-parse: 2.7.0 optionalDependencies: zod: 3.24.1 - '@ai-sdk/provider@1.0.4': + '@ai-sdk/provider@1.0.3': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.1.0(react@19.0.0)(zod@3.24.1)': + '@ai-sdk/react@1.0.7(react@19.0.0)(zod@3.24.1)': dependencies: - '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) - '@ai-sdk/ui-utils': 1.1.0(zod@3.24.1) + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) + '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) swr: 2.3.0(react@19.0.0) throttleit: 2.1.0 optionalDependencies: react: 19.0.0 zod: 3.24.1 - '@ai-sdk/ui-utils@1.1.0(zod@3.24.1)': + '@ai-sdk/ui-utils@1.0.6(zod@3.24.1)': dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) + '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: zod: 3.24.1 @@ -4932,10 +5007,10 @@ snapshots: dependencies: '@aptos-labs/aptos-cli': 1.0.2 '@aptos-labs/aptos-client': 0.1.1 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/bip32': 1.6.2 - '@scure/bip39': 1.5.4 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/bip32': 1.6.1 + '@scure/bip39': 1.5.1 eventemitter3: 5.0.1 form-data: 4.0.1 js-base64: 3.7.7 @@ -4955,12 +5030,12 @@ snapshots: bs58: 5.0.0 buffer: 6.0.3 - '@bonfida/spl-name-service@3.0.8(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@bonfida/spl-name-service@3.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@bonfida/sns-records': 0.0.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.1 - '@scure/base': 1.2.4 - '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@noble/curves': 1.8.0 + '@scure/base': 1.2.1 + '@solana/spl-token': 0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) borsh: 2.0.0 buffer: 6.0.3 @@ -4978,14 +5053,14 @@ snapshots: dependencies: '@soncodi/signal': 2.0.7 - '@cfworker/json-schema@4.1.0': {} + '@cfworker/json-schema@4.0.3': {} - '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@cks-systems/manifest-sdk@0.1.59(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 borsh: 0.7.0 @@ -4997,13 +5072,14 @@ snapshots: percentile: 1.6.0 prom-client: 15.1.3 rimraf: 5.0.10 - typedoc: 0.26.11(typescript@5.7.3) + typedoc: 0.26.11(typescript@5.7.2) ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zstddec: 0.0.2 transitivePeerDependencies: - bufferutil - encoding - fastestsmallesttextencoderdecoder + - jiti - supports-color - typescript - utf-8-validate @@ -5079,7 +5155,7 @@ snapshots: '@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/borsh': 0.29.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.0 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 4.0.1 @@ -5101,7 +5177,7 @@ snapshots: dependencies: '@coral-xyz/anchor-errors': 0.30.1 '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.0 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 bs58: 4.0.1 @@ -5163,16 +5239,16 @@ snapshots: dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' - '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@grpc/grpc-js': 1.12.5 - '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/price-service-sdk': 1.7.1 '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@triton-one/yellowstone-grpc': 1.3.0 anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) nanoid: 3.3.4 @@ -5190,6 +5266,7 @@ snapshots: - debug - encoding - fastestsmallesttextencoderdecoder + - jiti - supports-color - typescript - utf-8-validate @@ -5198,16 +5275,16 @@ snapshots: dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' - '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ellipsis-labs/phoenix-sdk': 1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@grpc/grpc-js': 1.12.5 - '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@openbook-dex/openbook-v2': 0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@project-serum/serum': 0.13.65(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/client': 2.5.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/price-service-sdk': 1.7.1 '@pythnetwork/pyth-solana-receiver': 0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@switchboard-xyz/on-demand': 1.2.42(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10) '@triton-one/yellowstone-grpc': 1.3.0 anchor-bankrun: 0.3.0(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(solana-bankrun@0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)) nanoid: 3.3.4 @@ -5225,6 +5302,7 @@ snapshots: - debug - encoding - fastestsmallesttextencoderdecoder + - jiti - supports-color - typescript - utf-8-validate @@ -5254,16 +5332,17 @@ snapshots: - debug - encoding - fastestsmallesttextencoderdecoder + - jiti - supports-color - utf-8-validate - '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/rustbin': 0.3.5 '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@types/node': 18.19.71 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) + '@types/node': 18.19.69 bn.js: 5.2.1 borsh: 0.7.0 bs58: 5.0.0 @@ -5271,7 +5350,30 @@ snapshots: - '@solana/web3.js' - bufferutil - encoding + - fastestsmallesttextencoderdecoder + - jiti - supports-color + - typescript + - utf-8-validate + + '@ellipsis-labs/phoenix-sdk@1.4.5(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': + dependencies: + '@metaplex-foundation/beet': 0.7.2 + '@metaplex-foundation/rustbin': 0.3.5 + '@metaplex-foundation/solita': 0.12.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@types/node': 18.19.69 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 5.0.0 + transitivePeerDependencies: + - '@solana/web3.js' + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - jiti + - supports-color + - typescript - utf-8-validate '@esbuild/aix-ppc64@0.23.1': @@ -5351,8 +5453,25 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0)': + dependencies: + eslint: 9.17.0 + eslint-visitor-keys: 3.4.3 + '@eslint-community/regexpp@4.12.1': {} + '@eslint/config-array@0.19.1': + dependencies: + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.9.1': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -5367,8 +5486,30 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.17.0': {} + + '@eslint/object-schema@2.1.5': {} + + '@eslint/plugin-kit@0.2.4': + dependencies: + levn: 0.4.1 + '@ethereumjs/rlp@4.0.1': {} '@ethereumjs/util@8.1.0': @@ -5619,8 +5760,8 @@ snapshots: '@gerrit0/mini-shiki@1.27.2': dependencies: - '@shikijs/engine-oniguruma': 1.29.1 - '@shikijs/types': 1.29.1 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 '@grpc/grpc-js@1.12.5': @@ -5641,6 +5782,13 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -5653,6 +5801,10 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + '@irys/arweave@0.0.2': dependencies: asn1.js: 5.4.1 @@ -5806,12 +5958,12 @@ snapshots: - encoding - utf-8-validate - '@irys/upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@irys/upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 bignumber.js: 9.1.2 @@ -5845,12 +5997,12 @@ snapshots: - encoding - utf-8-validate - '@irys/web-upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@irys/web-upload-solana@0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@irys/bundles': 0.0.1(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@irys/upload-core': 0.0.9(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) async-retry: 1.3.3 bignumber.js: 9.1.2 @@ -5906,12 +6058,12 @@ snapshots: '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': dependencies: - '@cfworker/json-schema': 4.1.0 + '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.16 - langsmith: 0.3.1(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -5921,51 +6073,49 @@ snapshots: transitivePeerDependencies: - openai - '@langchain/groq@0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) groq-sdk: 0.5.0 zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding - - ws - '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))': + '@langchain/langgraph-checkpoint@0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) uuid: 10.0.0 - '@langchain/langgraph-sdk@0.0.36': + '@langchain/langgraph-sdk@0.0.33': dependencies: '@types/json-schema': 7.0.15 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 9.0.1 - '@langchain/langgraph@0.2.41(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))': + '@langchain/langgraph@0.2.38(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) - '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))) - '@langchain/langgraph-sdk': 0.0.36 + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) + '@langchain/langgraph-checkpoint': 0.0.13(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) + '@langchain/langgraph-sdk': 0.0.33 uuid: 10.0.0 zod: 3.24.1 - '@langchain/openai@0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))': + '@langchain/openai@0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) js-tiktoken: 1.0.16 - openai: 4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1) + openai: 4.77.3(zod@3.24.1) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding - - ws - '@langchain/textsplitters@0.1.0(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))': + '@langchain/textsplitters@0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))': dependencies: - '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) js-tiktoken: 1.0.16 '@ledgerhq/devices@6.27.1': @@ -6031,11 +6181,11 @@ snapshots: '@ledgerhq/logs@6.12.0': {} - '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@lightprotocol/compressed-token@0.17.1(@lightprotocol/stateless.js@0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@lightprotocol/stateless.js': 0.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 tweetnacl: 1.0.3 @@ -6078,12 +6228,12 @@ snapshots: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@mercurial-finance/token-math': 6.0.0 - '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@meteora-ag/stake-for-fee': 1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@meteora-ag/stake-for-fee': 1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.24.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token-registry': 0.2.4574 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn-sqrt: 1.0.0 @@ -6099,17 +6249,17 @@ snapshots: - typescript - utf-8-validate - '@mercurial-finance/dynamic-amm-sdk@1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@mercurial-finance/dynamic-amm-sdk@1.1.23(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@mercurial-finance/token-math': 6.0.0 - '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@meteora-ag/m3m3': 1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@mercurial-finance/vault-sdk': 2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@meteora-ag/m3m3': 1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@project-serum/anchor': 0.24.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token-registry': 0.2.4574 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn-sqrt: 1.0.0 @@ -6132,11 +6282,11 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 - '@mercurial-finance/vault-sdk@2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@mercurial-finance/vault-sdk@2.2.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-token-registry': 0.2.4574 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 @@ -6237,7 +6387,7 @@ snapshots: '@metaplex-foundation/mpl-candy-machine-core': 0.1.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@noble/ed25519': 1.7.3 - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.0 '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -6277,12 +6427,12 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-auction-house@2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.6.1 '@metaplex-foundation/beet-solana': 0.3.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 transitivePeerDependencies: @@ -6312,12 +6462,12 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-bubblegum@0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-token-metadata': 2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token': 0.1.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -6371,11 +6521,11 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-core@1.2.0(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.1)': + '@metaplex-foundation/mpl-core@1.1.1(@metaplex-foundation/umi@0.9.2)(@noble/hashes@1.7.0)': dependencies: '@metaplex-foundation/umi': 0.9.2 '@msgpack/msgpack': 3.0.0-beta2 - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.0 '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: @@ -6394,12 +6544,12 @@ snapshots: - typescript - utf-8-validate - '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/mpl-token-metadata@2.13.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.2 '@metaplex-foundation/beet-solana': 0.4.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 debug: 4.4.0 @@ -6444,6 +6594,7 @@ snapshots: transitivePeerDependencies: - bufferutil - encoding + - jiti - supports-color - utf-8-validate @@ -6470,7 +6621,7 @@ snapshots: 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.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@noble/curves': 1.8.1 + '@noble/curves': 1.8.0 '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/umi-http-fetch@0.9.2(@metaplex-foundation/umi@0.9.2)': @@ -6530,12 +6681,12 @@ snapshots: '@metaplex-foundation/umi-web3js-adapters': 0.9.2(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/umi-uploader-irys@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@metaplex-foundation/umi-uploader-irys@1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@irys/upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@irys/upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@irys/upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@irys/web-upload': 0.0.14(arweave@1.15.5)(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@irys/web-upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@irys/web-upload-solana': 0.1.7(arweave@1.15.5)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@metaplex-foundation/umi': 0.9.2 '@metaplex-foundation/umi-web3js-adapters': 1.0.0(@metaplex-foundation/umi@0.9.2)(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -6569,13 +6720,13 @@ snapshots: '@metaplex-foundation/umi-public-keys': 0.8.9 '@metaplex-foundation/umi-serializers': 0.9.0 - '@meteora-ag/alpha-vault@1.1.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@meteora-ag/alpha-vault@1.1.7(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@mercurial-finance/dynamic-amm-sdk': 1.1.19(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@meteora-ag/dlmm': 1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@mercurial-finance/dynamic-amm-sdk': 1.1.19(@solana/buffer-layout@4.0.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@meteora-ag/dlmm': 1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/node': 22.10.7 decimal.js: 10.4.3 @@ -6590,12 +6741,12 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/dlmm@1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@meteora-ag/dlmm@1.3.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6609,13 +6760,13 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/dlmm@1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@meteora-ag/dlmm@1.3.8(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6629,12 +6780,12 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/m3m3@1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@meteora-ag/m3m3@1.0.4(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana-developers/helpers': 2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6645,11 +6796,11 @@ snapshots: - typescript - utf-8-validate - '@meteora-ag/stake-for-fee@1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@meteora-ag/stake-for-fee@1.0.28(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.28.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@coral-xyz/borsh': 0.30.1(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bn.js: 5.2.1 decimal.js: 10.4.3 @@ -6768,9 +6919,9 @@ snapshots: dependencies: '@noble/hashes': 1.4.0 - '@noble/curves@1.8.1': + '@noble/curves@1.8.0': dependencies: - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.0 '@noble/ed25519@1.7.3': {} @@ -6782,7 +6933,7 @@ snapshots: '@noble/hashes@1.5.0': {} - '@noble/hashes@1.7.1': {} + '@noble/hashes@1.7.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -6823,10 +6974,10 @@ snapshots: - typescript - utf-8-validate - '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@openbook-dex/openbook-v2@0.2.10(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) big.js: 6.2.2 transitivePeerDependencies: @@ -6841,18 +6992,17 @@ snapshots: '@openzeppelin/contracts@5.2.0': {} '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': - '@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 - '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': + '@orca-so/whirlpools-sdk@0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@orca-so/common-sdk': 0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) decimal.js: 10.4.3 tiny-invariant: 1.3.3 @@ -7021,8 +7171,8 @@ snapshots: '@pythnetwork/pyth-solana-receiver@0.7.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@noble/hashes': 1.7.1 - '@pythnetwork/price-service-sdk': 1.7.1 + '@noble/hashes': 1.7.0 + '@pythnetwork/price-service-sdk': 1.8.0 '@pythnetwork/solana-utils': 0.4.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -7049,10 +7199,10 @@ snapshots: '@randlabs/communication-bridge': 1.0.1 optional: true - '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@raydium-io/raydium-sdk-v2@0.1.95-alpha(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) axios: 1.7.9 big.js: 6.2.2 @@ -7090,7 +7240,7 @@ snapshots: '@scure/base@1.1.9': {} - '@scure/base@1.2.4': {} + '@scure/base@1.2.1': {} '@scure/bip32@1.4.0': dependencies: @@ -7098,11 +7248,11 @@ snapshots: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - '@scure/bip32@1.6.2': + '@scure/bip32@1.6.1': dependencies: - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/base': 1.2.4 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/base': 1.2.1 '@scure/bip39@1.1.0': dependencies: @@ -7114,40 +7264,40 @@ snapshots: '@noble/hashes': 1.4.0 '@scure/base': 1.1.9 - '@scure/bip39@1.5.4': + '@scure/bip39@1.5.1': dependencies: - '@noble/hashes': 1.7.1 - '@scure/base': 1.2.4 + '@noble/hashes': 1.7.0 + '@scure/base': 1.2.1 - '@shikijs/core@1.29.1': + '@shikijs/core@1.27.2': dependencies: - '@shikijs/engine-javascript': 1.29.1 - '@shikijs/engine-oniguruma': 1.29.1 - '@shikijs/types': 1.29.1 + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 hast-util-to-html: 9.0.4 - '@shikijs/engine-javascript@1.29.1': + '@shikijs/engine-javascript@1.27.2': dependencies: - '@shikijs/types': 1.29.1 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 - oniguruma-to-es: 2.3.0 + oniguruma-to-es: 2.1.0 - '@shikijs/engine-oniguruma@1.29.1': + '@shikijs/engine-oniguruma@1.27.2': dependencies: - '@shikijs/types': 1.29.1 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 - '@shikijs/langs@1.29.1': + '@shikijs/langs@1.27.2': dependencies: - '@shikijs/types': 1.29.1 + '@shikijs/types': 1.27.2 - '@shikijs/themes@1.29.1': + '@shikijs/themes@1.27.2': dependencies: - '@shikijs/types': 1.29.1 + '@shikijs/types': 1.27.2 - '@shikijs/types@1.29.1': + '@shikijs/types@1.27.2': dependencies: '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -7164,10 +7314,10 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana-developers/helpers@2.5.6(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) bs58: 6.0.0 dotenv: 16.4.7 @@ -7197,10 +7347,10 @@ snapshots: dependencies: '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.3)': + '@solana/codecs-core@2.0.0-preview.4(typescript@5.7.2)': dependencies: - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-core@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7212,10 +7362,10 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 - '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.3)': + '@solana/codecs-core@2.0.0-rc.1(typescript@5.7.2)': dependencies: - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-data-structures@2.0.0-preview.2': dependencies: @@ -7223,12 +7373,12 @@ snapshots: '@solana/codecs-numbers': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.3)': + '@solana/codecs-data-structures@2.0.0-preview.4(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-data-structures@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7244,23 +7394,23 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 - '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.3)': + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-numbers@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/errors': 2.0.0-preview.2 - '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.3)': + '@solana/codecs-numbers@2.0.0-preview.4(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-numbers@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7274,11 +7424,11 @@ snapshots: '@solana/errors': 2.0.0-rc.1(typescript@5.6.3) typescript: 5.6.3 - '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.3)': + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 '@solana/codecs-strings@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -7287,13 +7437,13 @@ snapshots: '@solana/errors': 2.0.0-preview.2 fastestsmallesttextencoderdecoder: 1.0.22 - '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/codecs-strings@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.3 + typescript: 5.7.2 '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)': dependencies: @@ -7311,13 +7461,13 @@ snapshots: fastestsmallesttextencoderdecoder: 1.0.22 typescript: 5.6.3 - '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) fastestsmallesttextencoderdecoder: 1.0.22 - typescript: 5.7.3 + typescript: 5.7.2 '@solana/codecs@2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)': dependencies: @@ -7329,14 +7479,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/codecs@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/options': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7362,14 +7512,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7378,11 +7528,11 @@ snapshots: chalk: 5.4.1 commander: 12.1.0 - '@solana/errors@2.0.0-preview.4(typescript@5.7.3)': + '@solana/errors@2.0.0-preview.4(typescript@5.7.2)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.3 + typescript: 5.7.2 '@solana/errors@2.0.0-rc.1(typescript@4.9.5)': dependencies: @@ -7396,25 +7546,25 @@ snapshots: commander: 12.1.0 typescript: 5.6.3 - '@solana/errors@2.0.0-rc.1(typescript@5.7.3)': + '@solana/errors@2.0.0-rc.1(typescript@5.7.2)': dependencies: chalk: 5.4.1 commander: 12.1.0 - typescript: 5.7.3 + typescript: 5.7.2 '@solana/options@2.0.0-preview.2': dependencies: '@solana/codecs-core': 2.0.0-preview.2 '@solana/codecs-numbers': 2.0.0-preview.2 - '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/options@2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/errors': 2.0.0-preview.4(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-preview.4(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/errors': 2.0.0-preview.4(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7440,14 +7590,14 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.3) - '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/errors': 2.0.0-rc.1(typescript@5.7.3) - typescript: 5.7.3 + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.7.2) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/errors': 2.0.0-rc.1(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7474,9 +7624,9 @@ snapshots: transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-group@0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/codecs': 2.0.0-preview.4(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/spl-type-length-value': 0.1.0 '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -7491,25 +7641,41 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7531,9 +7697,9 @@ snapshots: - fastestsmallesttextencoderdecoder - typescript - '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)': + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)': dependencies: - '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - fastestsmallesttextencoderdecoder @@ -7568,12 +7734,12 @@ snapshots: - supports-color - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7582,12 +7748,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7596,12 +7762,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) - '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil @@ -7610,11 +7776,11 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -7624,34 +7790,51 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.6.3) + '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding + - fastestsmallesttextencoderdecoder + - typescript - utf-8-validate - '@solana/spl-token@0.3.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/spl-token@0.3.7(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -7661,12 +7844,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.8(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-group': 0.0.5(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -7691,12 +7874,12 @@ snapshots: - typescript - utf-8-validate - '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) - '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 transitivePeerDependencies: @@ -7712,7 +7895,7 @@ snapshots: '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))': dependencies: - '@solana/wallet-standard-features': 1.3.0 + '@solana/wallet-standard-features': 1.2.0 '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 @@ -7727,7 +7910,7 @@ snapshots: '@solana/web3.js': 1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) buffer: 6.0.3 - '@solana/wallet-standard-features@1.3.0': + '@solana/wallet-standard-features@1.2.0': dependencies: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 @@ -7735,8 +7918,8 @@ snapshots: '@solana/web3.js@1.77.4(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -7757,8 +7940,8 @@ snapshots: '@solana/web3.js@1.92.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -7779,8 +7962,8 @@ snapshots: '@solana/web3.js@1.95.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -7801,8 +7984,8 @@ snapshots: '@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -7823,8 +8006,8 @@ snapshots: '@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.26.0 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.6.0 bigint-buffer: 1.1.5 @@ -7857,10 +8040,10 @@ snapshots: '@solworks/soltoolkit-sdk@0.0.23(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/spl-token': 0.3.7(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@4.9.5)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 - '@types/node': 18.19.71 + '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 bn.js: 5.2.1 decimal.js: 10.4.3 @@ -7868,16 +8051,17 @@ snapshots: transitivePeerDependencies: - bufferutil - encoding + - fastestsmallesttextencoderdecoder - utf-8-validate '@soncodi/signal@2.0.7': {} - '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@sqds/multisig@2.1.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 assert: 2.1.0 @@ -7917,7 +8101,7 @@ snapshots: - encoding - utf-8-validate - '@switchboard-xyz/on-demand@1.2.42(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + '@switchboard-xyz/on-demand@1.2.42(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(utf-8-validate@5.0.10)': dependencies: '@brokerloop/ttlcache': 3.2.3 '@coral-xyz/anchor-30': '@coral-xyz/anchor@0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)' @@ -7933,19 +8117,20 @@ snapshots: - bufferutil - debug - encoding + - fastestsmallesttextencoderdecoder - utf-8-validate '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 - '@tensor-hq/tensor-common@8.3.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@tensor-hq/tensor-common@8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) - '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-auction-house': 2.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) + '@metaplex-foundation/mpl-bubblegum': 0.7.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) axios: 0.28.1 big.js: 6.2.2 @@ -7964,14 +8149,14 @@ snapshots: - typescript - utf-8-validate - '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@tensor-oss/tensorswap-sdk@4.5.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@msgpack/msgpack': 2.8.0 '@saberhq/solana-contrib': 1.15.0(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bn.js@5.2.1) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@tensor-hq/tensor-common': 8.3.2(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@tensor-hq/tensor-common': 8.3.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@types/bn.js': 5.1.6 big.js: 6.2.2 bn.js: 5.2.1 @@ -8015,7 +8200,7 @@ snapshots: '@ts-morph/common@0.19.0': dependencies: - fast-glob: 3.3.3 + fast-glob: 3.3.2 minimatch: 7.4.6 mkdirp: 2.1.6 path-browserify: 1.0.1 @@ -8058,6 +8243,8 @@ snapshots: '@types/diff-match-patch@1.0.36': {} + '@types/estree@1.0.6': {} + '@types/express-serve-static-core@4.19.6': dependencies: '@types/node': 22.10.7 @@ -8101,11 +8288,11 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@18.19.71': + '@types/node@18.19.69': dependencies: undici-types: 5.26.5 - '@types/node@20.17.14': + '@types/node@20.17.11': dependencies: undici-types: 6.19.8 @@ -8160,89 +8347,89 @@ snapshots: dependencies: '@types/node': 22.10.7 - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/parser': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/type-utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/parser@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0 eslint: 8.57.1 - typescript: 5.7.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.21.0': + '@typescript-eslint/scope-manager@8.19.0': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 - '@typescript-eslint/type-utils@8.21.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.19.0(eslint@8.57.1)(typescript@5.7.2) debug: 4.4.0 eslint: 8.57.1 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.21.0': {} + '@typescript-eslint/types@8.19.0': {} - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/visitor-keys': 8.19.0 debug: 4.4.0 - fast-glob: 3.3.3 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 1.4.3(typescript@5.7.2) + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.21.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.19.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.19.0 + '@typescript-eslint/types': 8.19.0 + '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) eslint: 8.57.1 - typescript: 5.7.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.21.0': + '@typescript-eslint/visitor-keys@8.19.0': dependencies: - '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/types': 8.19.0 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.2.1': {} - '@voltr/vault-sdk@0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10)': + '@voltr/vault-sdk@0.1.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10)': dependencies: '@coral-xyz/anchor': 0.30.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil @@ -8298,14 +8485,15 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ai@4.1.0(react@19.0.0)(zod@3.24.1): + ai@4.0.22(react@19.0.0)(zod@3.24.1): dependencies: - '@ai-sdk/provider': 1.0.4 - '@ai-sdk/provider-utils': 2.1.0(zod@3.24.1) - '@ai-sdk/react': 1.1.0(react@19.0.0)(zod@3.24.1) - '@ai-sdk/ui-utils': 1.1.0(zod@3.24.1) + '@ai-sdk/provider': 1.0.3 + '@ai-sdk/provider-utils': 2.0.5(zod@3.24.1) + '@ai-sdk/react': 1.0.7(react@19.0.0)(zod@3.24.1) + '@ai-sdk/ui-utils': 1.0.6(zod@3.24.1) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 + zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: react: 19.0.0 zod: 3.24.1 @@ -8821,10 +9009,6 @@ snapshots: concat-map@0.0.1: {} - console-table-printer@2.12.1: - dependencies: - simple-wcswidth: 1.0.1 - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -9113,7 +9297,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-prettier@5.2.3(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): + eslint-plugin-prettier@5.2.2(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): dependencies: eslint: 8.57.1 prettier: 3.4.2 @@ -9127,6 +9311,11 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.0: {} @@ -9174,6 +9363,51 @@ snapshots: transitivePeerDependencies: - supports-color + eslint@9.17.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.1 + '@eslint/core': 0.9.1 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.17.0 + '@eslint/plugin-kit': 0.2.4 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + espree@9.6.1: dependencies: acorn: 8.14.0 @@ -9196,7 +9430,7 @@ snapshots: ethereum-bloom-filters@1.2.0: dependencies: - '@noble/hashes': 1.7.1 + '@noble/hashes': 1.7.0 ethereum-cryptography@2.2.1: dependencies: @@ -9336,7 +9570,7 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.3: + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -9369,6 +9603,10 @@ snapshots: dependencies: flat-cache: 3.2.0 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + file-uri-to-path@1.0.0: {} fill-range@7.1.1: @@ -9387,11 +9625,18 @@ snapshots: transitivePeerDependencies: - supports-color - find-process@1.4.10: + find-process@1.4.8: dependencies: - chalk: 4.1.2 + chalk: 5.4.1 commander: 12.1.0 + debug: 4.4.0 + eslint: 9.17.0 + glob: 11.0.0 loglevel: 1.9.2 + rimraf: 6.0.1 + transitivePeerDependencies: + - jiti + - supports-color find-up@5.0.0: dependencies: @@ -9402,14 +9647,14 @@ snapshots: dependencies: traverse-chain: 0.1.0 - flash-sdk@2.26.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10): + flash-sdk@2.24.3(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10): dependencies: '@coral-xyz/anchor': 0.27.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/client': 2.22.0(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/price-service-client': 1.9.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.3)(utf-8-validate@5.0.10) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10) '@solana/web3.js': 1.95.8(bufferutil@4.0.9)(utf-8-validate@5.0.10) - '@types/node': 20.17.14 + '@types/node': 20.17.11 bignumber.js: 9.1.2 bs58: 5.0.0 dotenv: 16.4.7 @@ -9418,7 +9663,7 @@ snapshots: jsbi: 4.3.0 node-fetch: 3.3.2 rimraf: 5.0.10 - ts-node: 10.9.2(@types/node@20.17.14)(typescript@5.7.3) + ts-node: 10.9.2(@types/node@20.17.11)(typescript@5.7.2) tweetnacl: 1.0.3 transitivePeerDependencies: - '@swc/core' @@ -9436,6 +9681,11 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + flatted@3.3.2: {} follow-redirects@1.15.9: {} @@ -9533,7 +9783,7 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.10.0: + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -9581,6 +9831,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.2 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -9594,6 +9853,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@14.0.0: {} + gopd@1.2.0: {} got@11.8.6: @@ -9642,7 +9903,7 @@ snapshots: groq-sdk@0.5.0: dependencies: - '@types/node': 18.19.71 + '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -9746,7 +10007,7 @@ snapshots: humanize-ms@1.2.1: dependencies: - ms: 2.1.3 + ms: 2.1.2 husky@9.1.7: {} @@ -9900,6 +10161,10 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.0.2: + dependencies: + '@isaacs/cliui': 8.0.2 + jayson@4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 @@ -10013,40 +10278,38 @@ snapshots: dependencies: json-buffer: 3.0.1 - langchain@0.3.12(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(@langchain/groq@0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(axios@1.7.9)(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + langchain@0.3.9(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1)))(@langchain/groq@0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))))(axios@1.7.9)(openai@4.77.3(zod@3.24.1)): dependencies: - '@langchain/core': 0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) - '@langchain/openai': 0.3.17(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1))) + '@langchain/core': 0.3.27(openai@4.77.3(zod@3.24.1)) + '@langchain/openai': 0.3.16(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) js-tiktoken: 1.0.16 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.3.1(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)) + langsmith: 0.2.14(openai@4.77.3(zod@3.24.1)) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 - yaml: 2.7.0 + yaml: 2.6.1 zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) optionalDependencies: - '@langchain/groq': 0.1.3(@langchain/core@0.3.32(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@langchain/groq': 0.1.2(@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))) axios: 1.7.9 transitivePeerDependencies: - encoding - openai - - ws - langsmith@0.3.1(openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1)): + langsmith@0.2.14(openai@4.77.3(zod@3.24.1)): dependencies: '@types/uuid': 10.0.0 - chalk: 4.1.2 - console-table-printer: 2.12.1 + commander: 10.0.1 p-queue: 6.6.2 p-retry: 4.6.2 semver: 7.6.3 uuid: 10.0.0 optionalDependencies: - openai: 4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1) + openai: 4.77.3(zod@3.24.1) lazy-ass@1.6.0: {} @@ -10148,6 +10411,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.0.2: {} + lunr@2.3.9: {} make-error@1.3.6: {} @@ -10253,6 +10518,10 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -10319,7 +10588,7 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abi@3.73.0: + node-abi@3.71.0: dependencies: semver: 7.6.3 @@ -10437,15 +10706,15 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-to-es@2.3.0: + oniguruma-to-es@2.1.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.1.1 regex-recursion: 5.1.1 - openai@4.79.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.24.1): + openai@4.77.3(zod@3.24.1): dependencies: - '@types/node': 18.19.71 + '@types/node': 18.19.69 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -10453,7 +10722,6 @@ snapshots: formdata-node: 4.4.1 node-fetch: 2.7.0 optionalDependencies: - ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.24.1 transitivePeerDependencies: - encoding @@ -10564,6 +10832,11 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.2 + minipass: 7.1.2 + path-to-regexp@0.1.12: {} pathval@2.0.0: {} @@ -10608,7 +10881,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.73.0 + node-abi: 3.71.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -10806,6 +11079,11 @@ snapshots: dependencies: glob: 10.4.5 + rimraf@6.0.1: + dependencies: + glob: 11.0.0 + package-json-from-dist: 1.0.1 + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 @@ -10934,14 +11212,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.29.1: + shiki@1.27.2: dependencies: - '@shikijs/core': 1.29.1 - '@shikijs/engine-javascript': 1.29.1 - '@shikijs/engine-oniguruma': 1.29.1 - '@shikijs/langs': 1.29.1 - '@shikijs/themes': 1.29.1 - '@shikijs/types': 1.29.1 + '@shikijs/core': 1.27.2 + '@shikijs/engine-javascript': 1.27.2 + '@shikijs/engine-oniguruma': 1.27.2 + '@shikijs/langs': 1.27.2 + '@shikijs/themes': 1.27.2 + '@shikijs/types': 1.27.2 '@shikijs/vscode-textmate': 10.0.1 '@types/hast': 3.0.4 @@ -10985,8 +11263,6 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - simple-wcswidth@1.0.1: {} - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -11052,16 +11328,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 + 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.21 + spdx-license-ids: 3.0.20 - spdx-license-ids@3.0.21: {} + spdx-license-ids@3.0.20: {} split@0.3.3: dependencies: @@ -11070,7 +11346,10 @@ snapshots: spok@1.5.5: dependencies: ansicolors: 0.3.2 - find-process: 1.4.10 + find-process: 1.4.8 + transitivePeerDependencies: + - jiti + - supports-color start-server-and-test@1.15.4: dependencies: @@ -11248,9 +11527,9 @@ snapshots: trim-lines@3.0.1: {} - ts-api-utils@2.0.0(typescript@5.7.3): + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: - typescript: 5.7.3 + typescript: 5.7.2 ts-log@2.2.7: {} @@ -11259,21 +11538,21 @@ snapshots: '@ts-morph/common': 0.19.0 code-block-writer: 12.0.0 - ts-node@10.9.2(@types/node@20.17.14)(typescript@5.7.3): + ts-node@10.9.2(@types/node@20.17.11)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.14 + '@types/node': 20.17.11 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.3 + typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11295,7 +11574,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.3): + ts-node@10.9.2(@types/node@22.10.7)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -11309,7 +11588,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.7.3 + typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -11328,7 +11607,7 @@ snapshots: tsx@4.19.2: dependencies: esbuild: 0.23.1 - get-tsconfig: 4.10.0 + get-tsconfig: 4.8.1 optionalDependencies: fsevents: 2.3.3 @@ -11357,22 +11636,22 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typedoc@0.26.11(typescript@5.7.3): + typedoc@0.26.11(typescript@5.7.2): dependencies: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.29.1 - typescript: 5.7.3 + shiki: 1.27.2 + typescript: 5.7.2 yaml: 2.7.0 - typedoc@0.27.6(typescript@5.7.3): + typedoc@0.27.6(typescript@5.7.2): dependencies: '@gerrit0/mini-shiki': 1.27.2 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - typescript: 5.7.3 + typescript: 5.7.2 yaml: 2.7.0 typescript-collections@1.3.3: {} diff --git a/test/index.ts b/test/index.ts new file mode 100644 index 00000000..dd3045b4 --- /dev/null +++ b/test/index.ts @@ -0,0 +1,223 @@ +import { SolanaAgentKit, ACTIONS } from "../src"; +import { createSolanaTools } from "../src/langchain"; +import { HumanMessage } from "@langchain/core/messages"; +import { MemorySaver } from "@langchain/langgraph"; +import { createReactAgent } from "@langchain/langgraph/prebuilt"; +import { ChatOpenAI } from "@langchain/openai"; +import * as dotenv from "dotenv"; +import * as fs from "fs"; +import * as readline from "readline"; + +dotenv.config(); + +function validateEnvironment(): void { + const missingVars: string[] = []; + const requiredVars = ["OPENAI_API_KEY", "RPC_URL", "SOLANA_PRIVATE_KEY"]; + + requiredVars.forEach((varName) => { + if (!process.env[varName]) { + missingVars.push(varName); + } + }); + + if (missingVars.length > 0) { + console.error("Error: Required environment variables are not set"); + missingVars.forEach((varName) => { + console.error(`${varName}=your_${varName.toLowerCase()}_here`); + }); + process.exit(1); + } +} + +validateEnvironment(); + +const WALLET_DATA_FILE = "wallet_data.txt"; + +async function initializeAgent() { + try { + const llm = new ChatOpenAI({ + modelName: "gpt-4o-mini", + temperature: 0.3, + }); + + let walletDataStr: string | null = null; + + if (fs.existsSync(WALLET_DATA_FILE)) { + try { + walletDataStr = fs.readFileSync(WALLET_DATA_FILE, "utf8"); + } catch (error) { + console.error("Error reading wallet data:", error); + } + } + + const solanaAgent = new SolanaAgentKit( + process.env.SOLANA_PRIVATE_KEY!, + process.env.RPC_URL!, + { + OPENAI_API_KEY: process.env.OPENAI_API_KEY!, + HELIUS_API_KEY: process.env.HELIUS_API_KEY!, + PERPLEXITY_API_KEY: process.env.PERPLEXITY_API_KEY!, + }, + ); + + const tools = createSolanaTools(solanaAgent); + + const memory = new MemorySaver(); + const config = { configurable: { thread_id: "Solana Agent Kit!" } }; + + const agent = createReactAgent({ + llm, + tools, + checkpointSaver: memory, + messageModifier: ` + You are a helpful agent that can interact onchain using the Solana Agent Kit. You are + empowered to interact onchain using your tools. If you ever need funds, you can request them from the + faucet. If not, you can provide your wallet details and request funds from the user. If there is a 5XX + (internal) HTTP error code, ask the user to try again later. If someone asks you to do something you + can't do with your currently available tools, you must say so, and encourage them to implement it + themselves using the Solana Agent Kit, recommend they go to https://www.solanaagentkit.xyz for more information. Be + concise and helpful with your responses. Refrain from restating your tools' descriptions unless it is explicitly requested. + `, + }); + + if (walletDataStr) { + fs.writeFileSync(WALLET_DATA_FILE, walletDataStr); + } + + return { agent, config }; + } catch (error) { + console.error("Failed to initialize agent:", error); + throw error; + } +} + +async function runAutonomousMode(agent: any, config: any, interval = 10) { + console.log("Starting autonomous mode..."); + + while (true) { + try { + const thought = + "Be creative and do something interesting on the blockchain. " + + "Choose an action or set of actions and execute it that highlights your abilities."; + + const stream = await agent.stream( + { messages: [new HumanMessage(thought)] }, + config, + ); + + for await (const chunk of stream) { + if ("agent" in chunk) { + console.log(chunk.agent.messages[0].content); + } else if ("tools" in chunk) { + console.log(chunk.tools.messages[0].content); + } + console.log("-------------------"); + } + + await new Promise((resolve) => setTimeout(resolve, interval * 1000)); + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message); + } + process.exit(1); + } + } +} + +async function runChatMode(agent: any, config: any) { + console.log("Starting chat mode... Type 'exit' to end."); + + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); + + try { + while (true) { + const userInput = await question("\nPrompt: "); + + if (userInput.toLowerCase() === "exit") { + break; + } + + const stream = await agent.stream( + { messages: [new HumanMessage(userInput)] }, + config, + ); + + for await (const chunk of stream) { + if ("agent" in chunk) { + console.log(chunk.agent.messages[0].content); + } else if ("tools" in chunk) { + console.log(chunk.tools.messages[0].content); + } + console.log("-------------------"); + } + } + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message); + } + process.exit(1); + } finally { + rl.close(); + } +} + +async function chooseMode(): Promise<"chat" | "auto"> { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + const question = (prompt: string): Promise => + new Promise((resolve) => rl.question(prompt, resolve)); + + while (true) { + console.log("\nAvailable modes:"); + console.log("1. chat - Interactive chat mode"); + console.log("2. auto - Autonomous action mode"); + + const choice = (await question("\nChoose a mode (enter number or name): ")) + .toLowerCase() + .trim(); + + rl.close(); + + if (choice === "1" || choice === "chat") { + return "chat"; + } else if (choice === "2" || choice === "auto") { + return "auto"; + } + console.log("Invalid choice. Please try again."); + } +} + +async function main() { + try { + console.log("Starting Agent..."); + const { agent, config } = await initializeAgent(); + const mode = await chooseMode(); + + if (mode === "chat") { + await runChatMode(agent, config); + } else { + await runAutonomousMode(agent, config); + } + } catch (error) { + if (error instanceof Error) { + console.error("Error:", error.message); + } + process.exit(1); + } +} + +if (require.main === module) { + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); +} From 95e5d1373c5d9bca4130351f22eb49f5b0a921f4 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Thu, 6 Feb 2025 11:58:09 +0100 Subject: [PATCH 08/11] feat:removed fluxbeam swap tool --- src/actions/fluxbeam/swapToken.ts | 56 ---------------------------- src/actions/index.ts | 2 - src/agent/index.ts | 9 ----- src/langchain/fluxbeam/index.ts | 1 - src/langchain/fluxbeam/swap_token.ts | 48 ------------------------ src/langchain/index.ts | 2 - src/tools/fluxbeam/index.ts | 1 - 7 files changed, 119 deletions(-) delete mode 100644 src/actions/fluxbeam/swapToken.ts delete mode 100644 src/langchain/fluxbeam/swap_token.ts diff --git a/src/actions/fluxbeam/swapToken.ts b/src/actions/fluxbeam/swapToken.ts deleted file mode 100644 index 007b53be..00000000 --- a/src/actions/fluxbeam/swapToken.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Action } from "../../types/action"; -import { SolanaAgentKit } from "../../agent"; -import { z } from "zod"; -import { fluxBeamSwap } from "../../tools"; - -const fluxbeamSwapTokenAction: Action = { - name: "FLUXBEAM_SWAP_TOKEN_ACTION", - similes: [ - "swap tokens on fluxbeam", - "exchange tokens", - "trade on fluxbeam", - "convert token A to token B", - ], - description: `Swaps one token for another using the FluxBeam DEX. - Specify the input token, output token, amount, and optional slippage tolerance.`, - examples: [ - [ - { - input: { - inputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", - outputMint: "So11111111111111111111111111111111111111112", - inputAmount: 500, - slippageBps: 300, - }, - output: { - status: "success", - signature: "5TgK9...", - }, - explanation: "Swap 500 USDC for SOL with a 3% slippage tolerance", - }, - ], - ], - schema: z.object({ - inputMint: z.string(), - outputMint: z.string(), - inputAmount: z.number(), - slippageBps: z.number().optional(), - }), - handler: async (agent: SolanaAgentKit, input: Record) => { - const signature = await fluxBeamSwap( - agent, - new PublicKey(input.inputMint), - new PublicKey(input.outputMint), - input.inputAmount, - input.slippageBps ?? 300, // Default slippage to 3% - ); - - return { - status: "success", - signature, - }; - }, -}; - -export default fluxbeamSwapTokenAction; diff --git a/src/actions/index.ts b/src/actions/index.ts index 3a3ebba4..899f4f54 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -34,7 +34,6 @@ import getWalletAddressAction from "./agent/getWalletAddress"; import flashOpenTradeAction from "./flash/flashOpenTrade"; import flashCloseTradeAction from "./flash/flashCloseTrade"; import fluxbeamCreatePoolAction from "./fluxbeam/createPool"; -import fluxbeamSwapTokenAction from "./fluxbeam/swapToken"; import createMultisigAction from "./squads/createMultisig"; import approveMultisigProposalAction from "./squads/approveMultisigProposal"; import createMultisigProposalAction from "./squads/createMultisigProposal"; @@ -138,7 +137,6 @@ export const ACTIONS = { FLASH_OPEN_TRADE_ACTION: flashOpenTradeAction, FLASH_CLOSE_TRADE_ACTION: flashCloseTradeAction, FLUXBEAM_CREATE_POOL_ACTION: fluxbeamCreatePoolAction, - FLUXBEAM_SWAP_ACTION: fluxbeamSwapTokenAction, CREATE_MULTISIG_ACTION: createMultisigAction, DEPOSIT_TO_MULTISIG_ACTION: depositToMultisigAction, TRANSFER_FROM_MULTISIG_ACTION: transferFromMultisigAction, diff --git a/src/agent/index.ts b/src/agent/index.ts index f6bf119f..49bcd3c0 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -132,7 +132,6 @@ import { InputAssetStruct, fluxbeamBurnToken, fluxBeamCreatePool, - fluxBeamSwap, } from "../tools"; import { Config, @@ -1125,12 +1124,4 @@ export class SolanaAgentKit { token_b_amount, ); } - async fluxBeamSwap( - inputMint: PublicKey = TOKENS.USDC, - outputMint: PublicKey, - inputAmount: number, - slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, - ): Promise { - return fluxBeamSwap(this, inputMint, outputMint, inputAmount, slippageBps); - } } diff --git a/src/langchain/fluxbeam/index.ts b/src/langchain/fluxbeam/index.ts index 4102a41a..108b29fd 100644 --- a/src/langchain/fluxbeam/index.ts +++ b/src/langchain/fluxbeam/index.ts @@ -1,2 +1 @@ export * from "./create_pool"; -export * from "./swap_token"; diff --git a/src/langchain/fluxbeam/swap_token.ts b/src/langchain/fluxbeam/swap_token.ts deleted file mode 100644 index ad15ac11..00000000 --- a/src/langchain/fluxbeam/swap_token.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { PublicKey } from "@solana/web3.js"; -import { Tool } from "langchain/tools"; -import { SolanaAgentKit } from "../../agent"; -import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; - -export class SolanaFluxbeamSwapTokenTool extends Tool { - name = "solana_fluxbeam_swap_token"; - description = `This tool swaps tokens using the FluxBeam DEX. - - Inputs (input is a JSON string): - outputMint: string, eg "So11111111111111111111111111111111111111112" (required) - inputAmount: number, eg 100 (required, amount in token decimals) - inputMint?: string, eg "EPjFWdd5AufqSSQBj1RNkQu86VkzPzZPuTz2tnn8kq5" (optional, defaults to USDC) - slippageBps?: number, eg 300 (optional, default 300 = 3% slippage tolerance)`; - - constructor(private solanaKit: SolanaAgentKit) { - super(); - } - - protected async _call(input: string): Promise { - try { - const parsedInput = JSON.parse(input); - - const signature = await this.solanaKit.fluxBeamSwap( - parsedInput.inputMint - ? new PublicKey(parsedInput.inputMint) - : TOKENS.USDC, - new PublicKey(parsedInput.outputMint), - parsedInput.inputAmount, - parsedInput.slippageBps || DEFAULT_OPTIONS.SLIPPAGE_BPS, - ); - - return JSON.stringify({ - status: "success", - message: "Token swap executed successfully", - transaction: signature, - outputMint: parsedInput.outputMint, - inputAmount: parsedInput.inputAmount, - }); - } catch (error: any) { - return JSON.stringify({ - status: "error", - message: error.message, - code: error.code || "UNKNOWN_ERROR", - }); - } - } -} diff --git a/src/langchain/index.ts b/src/langchain/index.ts index e4e235aa..b2f85b6a 100644 --- a/src/langchain/index.ts +++ b/src/langchain/index.ts @@ -148,7 +148,6 @@ import { SolanaSpreadTokenTool, SolanaSwitchboardSimulateFeed, SolanaFluxbeamCreatePoolTool, - SolanaFluxbeamSwapTokenTool, } from "./index"; export function createSolanaTools(solanaKit: SolanaAgentKit) { @@ -266,6 +265,5 @@ export function createSolanaTools(solanaKit: SolanaAgentKit) { new SolanaSpreadTokenTool(solanaKit), new SolanaAlloraGetPriceInference(solanaKit), new SolanaFluxbeamCreatePoolTool(solanaKit), - new SolanaFluxbeamSwapTokenTool(solanaKit), ]; } diff --git a/src/tools/fluxbeam/index.ts b/src/tools/fluxbeam/index.ts index cb3a1321..76c8696a 100644 --- a/src/tools/fluxbeam/index.ts +++ b/src/tools/fluxbeam/index.ts @@ -1,2 +1 @@ export * from "./fluxbeam_create_pool"; -export * from "./fluxbeam_swap_token"; From b03985f344cf8fd460cdc7e1ceebf6b4d1757094 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Thu, 6 Feb 2025 13:03:11 +0100 Subject: [PATCH 09/11] feat:removed unnecesary file and console.log --- src/langchain/solana/balance_other.ts | 1 - src/tools/fluxbeam/fluxbeam_swap_token.ts | 103 ---------------------- 2 files changed, 104 deletions(-) delete mode 100644 src/tools/fluxbeam/fluxbeam_swap_token.ts diff --git a/src/langchain/solana/balance_other.ts b/src/langchain/solana/balance_other.ts index 9433b52c..7c0741bd 100644 --- a/src/langchain/solana/balance_other.ts +++ b/src/langchain/solana/balance_other.ts @@ -19,7 +19,6 @@ export class SolanaBalanceOtherTool extends Tool { protected async _call(input: string): Promise { try { const { walletAddress, tokenAddress } = JSON.parse(input); - console.log(`this is the balance input ${input}}`); const tokenPubKey = tokenAddress ? new PublicKey(tokenAddress) : undefined; diff --git a/src/tools/fluxbeam/fluxbeam_swap_token.ts b/src/tools/fluxbeam/fluxbeam_swap_token.ts deleted file mode 100644 index 1eb9c300..00000000 --- a/src/tools/fluxbeam/fluxbeam_swap_token.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { VersionedTransaction, PublicKey } from "@solana/web3.js"; -import { Quote, SolanaAgentKit } from "../../index"; -import { TOKENS, DEFAULT_OPTIONS } from "../../constants"; -import { getTokenDecimals } from "../../utils/FluxbeamUtils"; - -function transformResponse(response: { quote: Quote }): Quote { - // Destructure the input object to get the quote object - const { - program, - pool, - inputMint, - outputMint, - amountIn, - outAmount, - minimumOut, - } = response.quote; - - // Return a new quote object with the arguments in the desired order - return { - amountIn, - inputMint, - minimumOut, - outAmount, - outputMint, - pool, - program, - }; -} - -/** - * Swap tokens using FluxBeam DEX - * @param agent SolanaAgentKit instance - * @param inputMint Source token mint address (defaults to USDC) - * @param outputMint Target token mint address - * @param inputAmount Amount to swap (in token decimals) - * @param slippageBps Slippage tolerance in basis points (default: 300 = 3%) - * @returns Transaction signature - */ -export async function fluxBeamSwap( - agent: SolanaAgentKit, - inputMint: PublicKey, - outputMint: PublicKey, - inputAmount: number, - slippageBps: number = DEFAULT_OPTIONS.SLIPPAGE_BPS, -): Promise { - try { - // Check if input token is native SOL - const isNativeSol = inputMint.equals(TOKENS.SOL); - - // For native SOL, we use LAMPORTS_PER_SOL, otherwise fetch mint info - const inputDecimals = isNativeSol - ? 9 // SOL always has 9 decimals - : await getTokenDecimals(agent, inputMint); - - // Calculate the correct amount based on actual decimals - const scaledAmount = inputAmount * Math.pow(10, inputDecimals); - - const FLUXBEAM_API = `https://api.fluxbeam.xyz/v1`; - const quoteResponse = await ( - await fetch( - `${FLUXBEAM_API}/quote?` + - `inputMint=${inputMint.toString()}` + - `&outputMint=${outputMint.toString()}` + - `&amount=${scaledAmount}` + - `&slippageBps=${slippageBps}`, - ) - ).json(); - - const quote = transformResponse(quoteResponse); - const response = await ( - await fetch(`${FLUXBEAM_API}/swap/transaction`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - priorityFeeLamports: 100000, - quote, - userPublicKey: agent.wallet_address.toString(), - wrapAndUnwrapSol: true, - }), - }) - ).json(); - // Deserialize transaction - const swapTransactionBuf = Buffer.from(response.transaction, "base64"); - const transaction = VersionedTransaction.deserialize(swapTransactionBuf); - - // Sign and send transaction - transaction.sign([agent.wallet]); - - const signature = await agent.connection.sendRawTransaction( - transaction.serialize(), - { - maxRetries: 3, - skipPreflight: true, - }, - ); - - return signature; - } catch (error: any) { - throw new Error(`Swap failed: ${error.message}`); - } -} From 3166d229817fd9dc4a67e713ee4133bd6278c1a2 Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Thu, 6 Feb 2025 17:09:29 +0100 Subject: [PATCH 10/11] rebased, added lockfile --- pnpm-lock.yaml | 1 - src/agent/index.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07a988bf..7cb73492 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6056,7 +6056,6 @@ snapshots: '@jup-ag/api@6.0.38': {} '@langchain/core@0.3.27(openai@4.77.3(zod@3.24.1))': - '@langchain/core@0.3.29(openai@4.78.1(encoding@0.1.13)(zod@3.24.1))': dependencies: '@cfworker/json-schema': 4.0.3 ansi-styles: 5.2.0 diff --git a/src/agent/index.ts b/src/agent/index.ts index 49bcd3c0..5dbf2fa1 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -130,7 +130,6 @@ import { PriorityFee, TargetTokenStruct, InputAssetStruct, - fluxbeamBurnToken, fluxBeamCreatePool, } from "../tools"; import { From 5202a9eeb3e25462efc0394268d23399ef5b172f Mon Sep 17 00:00:00 2001 From: adpthegreat Date: Fri, 7 Feb 2025 10:59:25 +0100 Subject: [PATCH 11/11] feat:removed deprecated package, deleted unused imports --- package.json | 1 - pnpm-lock.yaml | 3 --- src/agent/index.ts | 5 +---- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/package.json b/package.json index de983105..6f21db8b 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "@openzeppelin/contracts": "^5.2.0", "@orca-so/common-sdk": "0.6.4", "@orca-so/whirlpools-sdk": "^0.13.12", - "@project-serum/anchor": "^0.26.0", "@pythnetwork/hermes-client": "^1.3.0", "@raydium-io/raydium-sdk-v2": "0.1.95-alpha", "@solana/spl-token": "^0.4.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7cb73492..a5fa3206 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,9 +101,6 @@ importers: '@orca-so/whirlpools-sdk': specifier: ^0.13.12 version: 0.13.13(@coral-xyz/anchor@0.29.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(@orca-so/common-sdk@0.6.4(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3))(@solana/spl-token@0.4.9(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.7.2)(utf-8-validate@5.0.10))(@solana/web3.js@1.98.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(decimal.js@10.4.3) - '@project-serum/anchor': - specifier: ^0.26.0 - version: 0.26.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@pythnetwork/hermes-client': specifier: ^1.3.0 version: 1.3.0(axios@1.7.9) diff --git a/src/agent/index.ts b/src/agent/index.ts index 5dbf2fa1..96813b8e 100644 --- a/src/agent/index.ts +++ b/src/agent/index.ts @@ -7,7 +7,7 @@ import { CreateSingleOptions, StoreInitOptions, } from "@3land/listings-sdk/dist/types/implementation/implementationTypes"; -import { DEFAULT_OPTIONS, TOKENS } from "../constants"; +import { DEFAULT_OPTIONS } from "../constants"; import { deploy_collection, deploy_token, @@ -126,7 +126,6 @@ import { burnTokens, mergeTokens, spreadToken, - AssetType, PriorityFee, TargetTokenStruct, InputAssetStruct, @@ -153,10 +152,8 @@ import { DasApiAssetList, GetAssetsByAuthorityRpcInput, GetAssetsByCreatorRpcInput, - SearchAssetsRpcInput, } from "@metaplex-foundation/digital-asset-standard-api"; import { AlloraInference, AlloraTopic } from "@alloralabs/allora-sdk"; -import { AuthorityType } from "@solana/spl-token"; /** * Main class for interacting with Solana blockchain